Imports System.Data
Imports System.Data.OleDb
Public Class FormCustomers
Private _dataset As DataSet
Private _conn As OleDbConnection
Private _cmd As OleDbCommand
Private _rowCount As Integer = 0
Private _position As Integer = 0
ในฐานข้อมูลกำหนดดังนี้ครับ
Table name > Customers
Field > CustomerID : ATnumber, CustomerName : Text , CustomerAddress : Text
Code ตรงปุ่มนะครับ
Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
If (TbxName.Text = "" Or TbxAdrs.Text = "") Then
MsgBox(" กรุณาใส่ข้อมูลให้ครบ ")
Return
End If
Dim sql As String = ""
If (TbxID.Text = "") Then
sql = "INSERT INTO Customers("
sql &= "CustomerName, CustomerAddress)"
sql &= "VALUES(@nm, @adrs)"
Else
sql = "UPDATE Customers SET"
sql &= "CustomerName = @nm, CustomerAddress = @adrs "
sql &= "WHERE CustomerID = " & TbxID.Text
End If
_cmd = New OleDbCommand(sql, _conn)
_cmd.Parameters.AddWithValue("nm", TbxName.Text)
_cmd.Parameters.AddWithValue("adrs", TbxAdrs.Text)
Dim affectedRow As Integer = _cmd.ExecuteNonQuery()
If (affectedRow < 1) Then
ToolStripStatusLabel1.Text = "เกิดข้อผิดพลาดในการบันทึกข้อมูล !"
Else
ToolStripStatusLabel1.Text = "ข้อมูลถูกจัดเก็บแล้ว"
Dim name As String = TbxName.Text
' อ่านข้อมูลเข้ามาใหม่
ReadData()
FillListBox()
ClearBindings()
' ถ้าอยู่ที่ตำแหน่ง แท็บแสดงข้อมูลให้ Binding ใหม่
If (TabControl1.SelectedIndex = 0) Then
Bindings()
End If
' ให้ทำ ไฮไลท์ ที่ ListBox รายการที่เพิ่มหรือแก้ไขใหม่
Dim idx As Integer = ListBox1.FindStringExact(name)
If (idx > -1) Then
ListBox1.SetSelected(idx, True)
End If
UpdateStatus()
End If
End Sub
'-----------------------------------------------------------------------------------------------
Private Sub BtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDelete.Click
If (TbxID.Text = "") Then
Return
End If
If (MsgBox("คุณต้องการลบข้อมูลใช่หรือไม่ ?", MsgBoxStyle.OkCancel) = _
MsgBoxResult.Cancel) Then
Return
End If
Dim sql As String
sql = " DELETE * FROM Orders "
sql &= "WHERE CustomerName = @cust"
_cmd = New OleDbCommand(sql, _conn)
Dim r As Integer = _cmd.ExecuteNonQuery()
If (r > 0) Then
ToolStripStatusLabel1.Text = "ลบข้อมูลสำเร็จ"
End If
Dim idx0 As Integer = ListBox1.SelectedIndex
ClearBindings()
ReadData()
FillListBox()
Bindings()
If (idx0 > 0) Then
ListBox1.SetSelected(idx0 - 1, True)
End If
' ลบข้อมูลการสั่งซื้อในตาราง Orders
sql = "DELETE * FROM Orders WHERE CustomerName = @cust"
_cmd = New OleDbCommand(sql, _conn)
_cmd.Parameters.AddWithValue("cust", TbxName.Text)
_cmd.ExecuteNonQuery()
End Sub
End Class
เวลากด ปุ่ม ลบข้อมูลมันฟ้องว่า No value given for one or more required parameters.
เวลากด ปุ่ม บันทึก มันฟ้องว่า Syntax error in UPDATE statement.
ขอบคุณทุกท่านครับที่ช่วยเหลือ
Tag : .NET, Ms Access, VBScript, Crystal Report, Win (Windows App), VB.NET
Private Sub BtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDelete.Click
If (TbxID.Text = "") Then
Return
End If
If (MsgBox("คุณต้องการลบข้อมูลใช่หรือไม่ ?", MsgBoxStyle.OkCancel) = _
MsgBoxResult.Cancel) Then
Return
End If
messagebox.show(TbxName.text&" " & TbxID.text) <- อันนี้ให้ลองดุค่าว่าถูกต้องไม๊
Dim sql As String
sql = "DELETE FROM Orders WHERE CustomerName = @cust" ลองเปลี่ยนตรงนี้เป็น รหัสลูกค้า ดูครับน่าจะง่ายกว่า
messagebox.show(sql.ToString()) <- เหมือนกันเอาไว้ตรวจสอบดูว่าถูกต้องไม๊
_cmd = New OleDbCommand(sql, _conn)
_cmd.Parameters.AddWithValue("cust", TbxName.Text) <-เปลี่ยนข้างบนแล้วอย่าลืมเปลี่ยนตรงนี้ด้วย
_cmd.ExecuteNonQuery()
Dim r As Integer = _cmd.ExecuteNonQuery()
If (r > 0) Then
ToolStripStatusLabel1.Text = "ลบข้อมูลสำเร็จ"
End If
Dim idx0 As Integer = ListBox1.SelectedIndex
ClearBindings()
ReadData()
FillListBox()
Bindings()
If (idx0 > 0) Then
ListBox1.SetSelected(idx0 - 1, True)
End If
End Sub
มีปัญหาตรงที่ .ExecuteNonQuery() ฟ้องว่า no value given for one or more required parameters. ตรงปุ๋ม Save
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim sqlAdd As String
Dim sqlEdit As String
Select Case btnChk
Case "Add"
If (txtName.Text = "") Or (txtAddress.Text = "") Or (txtTel.Text = "") Or (txtFax.Text = "") Then
MsgBox("โปรดป้อนข้อมูลให้ครอบด้วยครับ")
txtName.Focus()
Exit Sub
มีปัญหาตรงที่ .ExecuteNonQuery() ฟ้องว่า no value given for one or more required parameters. ตรงปุ๋ม Save
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim sqlAdd As String
Dim sqlEdit As String
Select Case btnChk
Case "Add"
If (txtName.Text = "") Or (txtAddress.Text = "") Or (txtTel.Text = "") Or (txtFax.Text = "") Then
MsgBox("โปรดป้อนข้อมูลให้ครอบด้วยครับ")
txtName.Focus()
Exit Sub
With comAdd
.CommandType = CommandType.Text
.CommandText = sqlAdd
.Connection = Conn
.ExecuteNonQuery() ตรงนี้ครับที่มีปัญหา ช่วยที่ครับ มันฟ้องว่า no value given for one or more required parameters.