没有为一个或多个必需的参数提供值插入错误

时间:2019-01-03 14:45:32

标签: sql vb.net

将数据插入表中时出现错误。错误在下面:

  

没有为一个或多个必需参数提供值。

我试图解决此问题,但未成功。感谢您的帮助。

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

1 个答案:

答案 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) & ")" //ราคาต้นทุนเฉลี่ย