将数据插入表中时出现错误。错误在下面:
没有为一个或多个必需参数提供值。
我试图解决此问题,但未成功。感谢您的帮助。
Imports System.Data.OleDb
Public Class Generate
Private Sub Generate_Load(sender As Object, e As EventArgs) Handles MyBase.Load
txtEmId.Enabled = False
txtEmName.Enabled = False
txtIdCtm.Enabled = False
txtNameCtm.Enabled = False
btnAddEp.Enabled = False
btnAddMT.Enabled = False
btnprintG.Enabled = False
btnccc.Enabled = False
sql = "SELECT รหัสวัสดุ FROM วัสดุ "
If (Connection.State = ConnectionState.Open) Then
Connection.Close()
End If
Connection.Open()
Adapter = New OleDbDataAdapter(sql, Connection)
Dataset = New DataSet
Adapter.Fill(Dataset, "IDMT")
CbIDMt.DataSource = Dataset.Tables("IDMT")
CbIDMt.DisplayMember = "รหัสวัสดุ"
CbIDMt.ValueMember = "รหัสวัสดุ"
Connection.Close()
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles btnCancelg.Click
Dim exg As MsgBoxResult
exg = MessageBox.Show("ต้องการยกเลิกการผลิตใช่หรือไม่", "ตรวจสอบ", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
If exg = MsgBoxResult.Yes Then
Me.Close()
End If
End Sub
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
sql = "SELECT * FROM ลูกค้า INNER JOIN (พนักงาน INNER JOIN คำสั่งซื้อ ON พนักงาน.รหัสพนักงาน = คำสั่งซื้อ.รหัสพนักงาน) ON ลูกค้า.รหัสลูกค้า = คำสั่งซื้อ.รหัสลูกค้า WHERE เลขที่คำสั่งซื้อ = '" & TextBox1.Text & "'"
'sql = "SELECT * FROM พนักงาน INNER JOIN (ลูกค้า INNER JOIN คำสั่งซื้อ ON ลูกค้า.รหัสลูกค้า = คำสั่งซื้อ.รหัสลูกค้า) ON พนักงาน.รหัสพนักงาน = คำสั่งซื้อ.รหัสพนักงาน WHERE เลขที่คำสั่งซื้อ = '" & TextBox1.Text & "'"
If (Connection.State = ConnectionState.Open) Then
Connection.Close()
End If
Connection.Open()
Command = New OleDbCommand(sql, Connection)
Reader = Command.ExecuteReader
Do While Reader.Read
txtEmId.Text = (Reader(6)).ToString
txtEmName.Text = (Reader("ชื่อพนักงาน")).ToString
txtIdCtm.Text = (Reader(0)).ToString
txtNameCtm.Text = (Reader("ชื่อลูกค้า")).ToString
TextBox1.Enabled = False
Loop
'txtEmId.Text = String.Empty
'txtEmId.Focus()
'MessageBox.Show("กรุณากรอกรหัสพนักงานให้ถูกต้อง", "แจ้งเตือน", MessageBoxButtons.OK)
Reader.Close()
Connection.Close()
btnAddMT.Enabled = True
End Sub
Private Sub txtunitMt_TextChanged(sender As Object, e As EventArgs) Handles txtunitMt.TextChanged
txtttMt.Text = txtprMt.Text * txtunitMt.Text
End Sub
Private Sub txtunitMt_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtunitMt.KeyPress
If (e.KeyChar < Chr(48) Or e.KeyChar > Chr(57)) And e.KeyChar <> Chr(8) Then
e.Handled = True
MessageBox.Show("กรุณาใส่เฉพาะตัวเลข", "เตือน!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs)
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CbIDMt.SelectedIndexChanged
CbIDMt.Text = String.Empty
Try
sql = "SELECT รหัสวัสดุ, ชื่อวัสดุ, ราคาต่อหน่วย, ยอดคงเหลือ FROM วัสดุ WHERE รหัสวัสดุ = '" & CbIDMt.SelectedValue & "'"
If (Connection.State = ConnectionState.Open) Then
Connection.Close()
End If
Connection.Open()
Command = New OleDbCommand(sql, Connection)
Reader = Command.ExecuteReader
Do While Reader.Read
CbIDMt.SelectedValue = Reader(0).ToString
txtNameMt.Text = Reader(1).ToString
txtprMt.Text = Reader(2).ToString
txtBalance.Text = Reader(3).ToString
Loop
Reader.Close()
Catch ex As Exception
Finally
Connection.Close()
End Try
End Sub
Private Sub btnAddMT_Click(sender As Object, e As EventArgs) Handles btnAddMT.Click
If (String.IsNullOrEmpty(IdGenerate.Text)) Or
(String.IsNullOrWhiteSpace(IdGenerate.Text)) Then
MessageBox.Show("กรุณาใส่รหัสใบผลิต")
Exit Sub
End If
Connection.Open()
Dim unitss As Int64 = CInt(IIf(Not (String.IsNullOrEmpty(txtunitMt.Text)),
txtunitMt.Text, 0))
Dim prtotal As Int32 = CInt(IIf(Not (String.IsNullOrEmpty(txtprMt.Text)),
txtprMt.Text, 0))
Dim totalf As Double = CDbl(IIf(Not (String.IsNullOrEmpty(txtttf.Text)),
txtttf.Text, 0))
Dim totalcr As Double = CDbl(IIf(Not (String.IsNullOrEmpty(txtttcr.Text)),
txtttcr.Text, 0))
Dim totalsss As Double = CDbl(IIf(Not (String.IsNullOrEmpty(totalss.Text)),
totalss.Text, 0))
Dim totalmttt As Int32 = CInt(IIf(Not (String.IsNullOrEmpty(txtttMts.Text)),
txtttMts.Text, 0))
Dim avgtt As Double = CDbl(IIf(Not (String.IsNullOrEmpty(txtavgtotal.Text)),
txtavgtotal.Text, 0))
Dim MySql As String = String.Empty
'------------- INSERT -------------'
MySql &= "INSERT INTO ใบสั่งผลิต(เลขที่ใบสั่งผลิต, วันที่สั่งผลิต, รหัสวัสดุ, จำนวน, ราคารวม, ราคารวมทั้งหมดวัสดุ, รหัสพนักงาน, รหัสลูกค้า, เลขที่ใบแจ้งเงินเดือน, จำนวนเงินเดือน, เลขที่ค่าใช้จ่าย, จำนวนเงินค่าใช้จ่าย, รวมทั้งหมด, ราคาต้นทุนเฉลี่ย )"
MySql &= "VALUES ('" & TextBox1.Text & "'"
MySql &= ",'" & DateTimePicker1.Text & "'"
MySql &= "," & CbIDMt.SelectedValue.ToString & ""
MySql &= "," & Convert.ToInt64(unitss)
MySql &= "," & Convert.ToInt32(prtotal)
MySql &= "," & Convert.ToInt32(totalmttt)
MySql &= ",'" & txtEmId.Text & "'"
MySql &= ",'" & txtIdCtm.Text & "'"
MySql &= ",'" & txtIdf.Text & "'"
MySql &= "," & Convert.ToDouble(totalf)
MySql &= ",'" & txtidcr.Text & "'"
MySql &= "," & Convert.ToDouble(totalcr)
MySql &= "," & Convert.ToDouble(totalsss)
MySql &= "," & Convert.ToDouble(avgtt) & ")"
Command.CommandText = MySql
Command.ExecuteNonQuery()
MessageBox.Show("เพิ่มข้อมูลสำเร็จ", "แจ้งเตือน", MessageBoxButtons.OK, MessageBoxIcon.Information)
Connection.Close()
End Sub
Private Sub Label19_Click(sender As Object, e As EventArgs) Handles Label19.Click
End Sub
End Class
答案 0 :(得分:0)
请专注于下面的代码部分。检查表:ใบสั่งผลิต查看哪些列不是“可为空”,并确保为这些字段设置了一些值。另外,请确保插入时行的顺序匹配。应该是这样的:
Insert into table (col1,col2,...col50) values (col1,col2,...,col50);
您需要在下面调试的代码部分。我指定了哪一行适合哪一列,请匹配。如果匹配正确,请确保执行后“ not null”列具有值。
MySql &= "INSERT INTO ใบสั่งผลิต (เลขที่ใบสั่งผลิต, วันที่สั่งผลิต, รหัสวัสดุ, จำนวน, ราคารวม, ราคารวมทั้งหมดวัสดุ, รหัสพนักงาน, รหัสลูกค้า, เลขที่ใบแจ้งเงินเดือน, จำนวนเงินเดือน, เลขที่ค่าใช้จ่าย, จำนวนเงินค่าใช้จ่าย, รวมทั้งหมด, ราคาต้นทุนเฉลี่ย )"
MySql &= "VALUES ('" & TextBox1.Text & "'" //เลขที่ใบสั่งผลิต
MySql &= ",'" & DateTimePicker1.Text & "'" //วันที่สั่งผลิต
MySql &= "," & CbIDMt.SelectedValue.ToString & "" //รหัสวัสดุ
MySql &= "," & Convert.ToInt64(unitss) //จำนวน
MySql &= "," & Convert.ToInt32(prtotal) //ราคารวม
MySql &= "," & Convert.ToInt32(totalmttt) //ราคารวมทั้งหมดวัสดุ
MySql &= ",'" & txtEmId.Text & "'" //รหัสพนักงาน
MySql &= ",'" & txtIdCtm.Text & "'" //รหัสลูกค้า
MySql &= ",'" & txtIdf.Text & "'" //เลขที่ใบแจ้งเงินเดือน
MySql &= "," & Convert.ToDouble(totalf) //จำนวนเงินเดือน
MySql &= ",'" & txtidcr.Text & "'" //เลขที่ค่าใช้จ่าย
MySql &= "," & Convert.ToDouble(totalcr) //จำนวนเงินค่าใช้จ่าย
MySql &= "," & Convert.ToDouble(totalsss) //รวมทั้งหมด
MySql &= "," & Convert.ToDouble(avgtt) & ")" //ราคาต้นทุนเฉลี่ย