0

到目前为止,我一直在尝试更新此记录近 3 天,在整个 Internet 上四处游荡,找不到任何对我有帮助的东西,尝试了所有解决方案,但一无所获。

我想更新一条记录,表单名为search form,表由 8 列组成,其中student_id是一个自动编号,所以我没有搞砸它。

这是我想出的最后一个,它仍然无法正常工作,它突出显示executenonquery()并在按下按钮后给出错误消息,上面写着no values where given to one or more required parameters......

Dim con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Anton\Desktop\LoginDatabase\Users.mdb")
        con.Open()
       sql = "update salary set [empname]=?,[department]=?,[date1]=?, [accname]= ?,[accnumber]=?,[backname]=?,[rate]=?,[house]=?,[electricity]=?,[travel]=?, [hardship]= ?,[health]=?,[nhif]=?,[nssf]=?,[insurence]=?,[loan]=?,[welfare]=? where empno = ?"
    Dim cmd As New OleDb.OleDbCommand(sql, con)

    cmd.Parameters.AddWithValue("@empname", TextBox2.Text)
    cmd.Parameters.AddWithValue("@department", TextBox3.Text)
    cmd.Parameters.AddWithValue("@date1", DateTimePicker1.Value)
    cmd.Parameters.AddWithValue("@accname", TextBox4.Text)
    cmd.Parameters.AddWithValue("@accnumber", TextBox5.Text)
    cmd.Parameters.AddWithValue("@bankname", TextBox6.Text)
    cmd.Parameters.AddWithValue("@rate", TextBox7.Text)
    cmd.Parameters.AddWithValue("@house", TextBox8.Text)
    cmd.Parameters.AddWithValue("@electricity", TextBox9.Text)
    cmd.Parameters.AddWithValue("@travel", TextBox10.Text)
    cmd.Parameters.AddWithValue("@hardship", TextBox11.Text)
    cmd.Parameters.AddWithValue("@health", TextBox12.Text)
    cmd.Parameters.AddWithValue("@nhif", TextBox13.Text)
    cmd.Parameters.AddWithValue("@nssf", TextBox14.Text)
    cmd.Parameters.AddWithValue("@insurence", TextBox15.Text)
    cmd.Parameters.AddWithValue("@loan", TextBox16.Text)
    cmd.Parameters.AddWithValue("@welfare", TextBox17.Text)
    cmd.Parameters.AddWithValue("@empno", TextBox1.Text)
    Try
        cmd.ExecuteNonQuery()
        cmd.Dispose()
        MsgBox("updated")
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
4

1 回答 1

1

您的错误是您在 SQL 语句中拼错了 BankName。使用“[银行名称]=?”。

不要忘记 ExecuteNonQuery 方法返回一个整数,告诉您有多少记录受到影响。如果在表中未找到 ID,则不会更新,也不会出错,因此显示“已更新”的消息框并不总是正确的。

但是,替换表单并使用 Visual Studio 的本机功能要容易得多,如下所示:

  1. 打开Server Explorer,单击Connect to a Database并连接到您的 MDB 文件。
  2. 从菜单中,选择数据 > 显示数据源。单击添加新数据源按钮。
  3. 在 Data Sources 窗格中,使用Add New Datasource,选择 Database 然后 Dataset,完成向导并选择 Salary 表。将创建一个数据集并将其放入您的项目中,您将在“数据源”窗格中看到它。
  4. 在不关闭数据源窗格的情况下,创建一个新的空白表单,它将在设计视图中打开。
  5. 单击表名“salary”节点,然后下拉组合框以选择Details
  6. 展开表格并以相同方式下拉 date1 列,以确保使用了DateTimePicker控件。
  7. 将 Salary 表从Data Sources窗格拖到新的空白表单上。

带有导航栏的表单将出现在您的眼前。将创建一个以您的数据库名称命名的新数据集。

对于以前的 MS Access 用户来说,这将是一个更直观的表单,并且您不需要手动创建任何插入语句,就像您上面的问题一样。

于 2013-09-25T22:52:34.357 回答