Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > No value given for one or more required parameters ช่วยผมทีครับ ทำไมผม ลบข้อมูล และ แก้ไขข้อมูลใน Acc2007 ไม่ได้



 

No value given for one or more required parameters ช่วยผมทีครับ ทำไมผม ลบข้อมูล และ แก้ไขข้อมูลใน Acc2007 ไม่ได้

 



Topic : 048709

Guest




Code (VB.NET)
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







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-09-13 17:33:22 By : นศ.ผู้ศึกษา VB View : 1970 Reply : 7
 

 

No. 1



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ดูโค้ดแล้วก็แปลก

ของปุ่ม delete จะเห็นว่ามีการรัน Execute 2 รอบ

รอบแรก รันโดยไม่ได้ส่งค่าให้ parameter @cust ที่มัน error ก็ถูกแล้ว
074. sql = " DELETE * FROM Orders "
075. sql &= "WHERE CustomerName = @cust"
076. _cmd = New OleDbCommand(sql, _conn)
077.
078. Dim r As Integer = _cmd.ExecuteNonQuery()

รอบสอง ไม่ได้ทำงานเพราะ error จาก รอบแรก ทำให้หลุดไปก่อน แต่เป็นการทำงานที่ถูกต้อง
093. sql = "DELETE * FROM Orders WHERE CustomerName = @cust"
094. _cmd = New OleDbCommand(sql, _conn)
095. _cmd.Parameters.AddWithValue("cust", TbxName.Text)
096. _cmd.ExecuteNonQuery()

** คำสั่ง DELETE มันใช้อย่างนี้ไม่ใช่เหรอ DELETE FROM ORDERS; ไม่ต้องใส่ DELETE * ควรใช้ให้เป็นมาตรฐานสากลเนาะ เวลาเปลี่ยนฐานข้อมูลจะได้ไม่เกิดปัญหา (ก็ไม่รู้ว่า Access2007 มันใช้ได้จริงเปล่าเหมือนกัน)

ของปุ่ม save

028. sql = "UPDATE Customers SET " ลองเคาะให้มีเว้นซัก 1 ช่องว่างดูครับ ผมว่ามัน syntax error เพราะมันติดกันน่ะ
029. sql &= "CustomerName = @nm, CustomerAddress = @adrs "
030. sql &= "WHERE CustomerID = " & TbxID.Text








ประวัติการแก้ไข
2010-09-13 18:15:12
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-13 18:14:19 By : salapao_codeman
 


 

No. 2

Guest


ขอบคุณ คุณ salapao_codeman ด้วยนะครับ สำหรับปุ่ม save

แต่ ปุ่ม Delete ผมได้ทำการพิมพ์ใหม่ทั้งหมด และแก้ไขตรงที่คุณบอกแต่ก็ยังเป็นเหมือนเดิมครับ

No value given for one or more required parameters.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-13 20:22:09 By : นศ.ผู้ศึกษาVB
 

 

No. 3



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ของปุ่ม delete ลองอย่างนี้ดูครับ เพิ่มบรรทัดเอาไว้ตรวจสอบดูด้วย แล้วยังไงให้ลองไปพิพม์ query command ดูจริงๆ ที่ตัวไฟล์ฐานข้อมูลด้วยนะครับ ว่ามันใช้ได้จริง หรือถ้าผิดถูกตรงไหนก็จะได้มาปรับเปลี่ยนที่โค้ดได้ครับ

Code (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

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-13 22:59:39 By : salapao_codeman
 


 

No. 4



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : salapao_codeman เมื่อวันที่ 2010-09-13 22:59:39
รายละเอียดของการตอบ ::
_cmd.Parameters.AddWithValue("cust", TbxName.Text) '<-เปลี่ยนข้างบนแล้วอย่าลืมเปลี่ยนตรงนี้ด้วย
แก้เป็น
_cmd.Parameters.AddWithValue("@cust", TbxName.Text)
ค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-14 01:11:41 By : blurEyes
 


 

No. 5

Guest


vb 2008 access 2007

มีปัญหาตรงที่ .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

End If

sqlAdd = "Insert Into tblCustomer(CustName,Address,Tel,Fax)"
sqlAdd &= "VALUES(" & txtName.Text & ","
sqlAdd &= "" & txtAddress.Text & ","
sqlAdd &= "" & txtTel.Text & ","
sqlAdd &= "" & txtFax.Text & ")"

With comAdd
.CommandType = CommandType.Text
.CommandText = sqlAdd
.Connection = Conn
.ExecuteNonQuery()

End With

MsgBox("บันทึกข้อมูลเรียบร้อยแล้วครับ")
ShowAllEmployees()

Case "Update"
sqlEdit = "UPDATE tblCustomer"
sqlEdit &= "SET CustName=" & txtName.Text & ","
sqlEdit &= "Address=" & txtAddress.Text & ","
sqlEdit &= "Tel=" & txtTel.Text & ","
sqlEdit &= "Fax=" & txtFax.Text & ","
sqlEdit &= "WHERE(CustID=" & CInt(txtID.Text) & ")"
With comAdd
.CommandType = CommandType.Text
.CommandText = sqlEdit
.Connection = Conn
.ExecuteNonQuery()

End With
MsgBox("แก้ไขข้อมูลเรียบร้อย")
ShowAllEmployees()

Case Else
MsgBox("ไม่มีการทำงาน")

End Select
btnInsert.Enabled = True
btnUpdate.Enabled = True
btnSave.Enabled = False
btnCancel.Enabled = True
btnDelete.Enabled = True

End Sub
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-15 14:17:38 By : Akera
 


 

No. 6

Guest


vb 2008 access 2007

มีปัญหาตรงที่ .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

End If

sqlAdd = "Insert Into tblCustomer(CustName,Address,Tel,Fax)"
sqlAdd &= "VALUES(" & txtName.Text & ","
sqlAdd &= "" & txtAddress.Text & ","
sqlAdd &= "" & txtTel.Text & ","
sqlAdd &= "" & txtFax.Text & ")"

With comAdd
.CommandType = CommandType.Text
.CommandText = sqlAdd
.Connection = Conn
.ExecuteNonQuery() ตรงนี้ครับที่มีปัญหา ช่วยที่ครับ มันฟ้องว่า no value given for one or more required parameters.

End With

MsgBox("บันทึกข้อมูลเรียบร้อยแล้วครับ")
ShowAllEmployees()

Case "Update"
sqlEdit = "UPDATE tblCustomer"
sqlEdit &= "SET CustName=" & txtName.Text & ","
sqlEdit &= "Address=" & txtAddress.Text & ","
sqlEdit &= "Tel=" & txtTel.Text & ","
sqlEdit &= "Fax=" & txtFax.Text & ","
sqlEdit &= "WHERE(CustID=" & CInt(txtID.Text) & ")"
With comAdd
.CommandType = CommandType.Text
.CommandText = sqlEdit
.Connection = Conn
.ExecuteNonQuery()

End With
MsgBox("แก้ไขข้อมูลเรียบร้อย")
ShowAllEmployees()

Case Else
MsgBox("ไม่มีการทำงาน")

End Select
btnInsert.Enabled = True
btnUpdate.Enabled = True
btnSave.Enabled = False
btnCancel.Enabled = True
btnDelete.Enabled = True

End Sub
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-15 14:22:30 By : Akera
 


 

No. 7

Guest


ขอบคุณ น่ะครับที่ช่วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-15 14:24:44 By : Akera
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : No value given for one or more required parameters ช่วยผมทีครับ ทำไมผม ลบข้อมูล และ แก้ไขข้อมูลใน Acc2007 ไม่ได้
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่