为什么会出现“一个或多个必需参数没有给定值”的错误。Vb.net

为什么会出现“一个或多个必需参数没有给定值”的错误。Vb.net,vb.net,visual-studio,Vb.net,Visual Studio,当运行代码时,我得到了上面提到的错误,指向DataAdapterActivities被填充的第4行。我已检查组合框中的内容是否与数据库中的记录匹配。此sql语句在insert语句之前运行,以检索适当的详细信息。我试图理解我是否需要在某个地方单独定义activitiesdata,或者它是正在填充的。我刚刚打开了连接。您应该将查询记录在一个文件中,然后直接在数据库中尝试 这是你的问题 Dim SqlQueryActivity As String = "SELECT * FROM tblActivit

当运行代码时,我得到了上面提到的错误,指向DataAdapterActivities被填充的第4行。我已检查组合框中的内容是否与数据库中的记录匹配。此sql语句在insert语句之前运行,以检索适当的详细信息。我试图理解我是否需要在某个地方单独定义activitiesdata,或者它是正在填充的。我刚刚打开了连接。

您应该将查询记录在一个文件中,然后直接在数据库中尝试

这是你的问题

Dim SqlQueryActivity As String = "SELECT * FROM tblActivities WHERE Activity ='" & ActivityCombo.Text & "'AND Sub-Activity = '" & SubActivityCombo.Text & "'"
    Dim DataAdapterActivities As OleDbDataAdapter = New OleDbDataAdapter(SqlQueryActivity, conn)
    Dim DataSetActivities As DataSet = New DataSet
    DataAdapterActivities.Fill(DataSetActivities, "ActivitiesData")
    Dim DataTableActivities As DataTable = DataSetActivities.Tables("ActivitiesData")
SELECT * FROM tblActivities WHERE Activity ='?'AND SubActivity = '?'
Sub和Activity之间有一个减号。你的数据库会认为你想要删除列Sub和Activity,我认为你没有,因为你得到了一个错误

我建议您重命名该列,删除减号或将其替换为表中的其他内容

SELECT * FROM tblActivities WHERE Activity ='?'AND Sub-Activity = '?'
或者在查询中使用括号

Dim SqlQueryActivity As String = "SELECT * FROM tblActivities WHERE Activity ='" & ActivityCombo.Text & "'AND Sub-Activity = '" & SubActivityCombo.Text & "'"
    Dim DataAdapterActivities As OleDbDataAdapter = New OleDbDataAdapter(SqlQueryActivity, conn)
    Dim DataSetActivities As DataSet = New DataSet
    DataAdapterActivities.Fill(DataSetActivities, "ActivitiesData")
    Dim DataTableActivities As DataTable = DataSetActivities.Tables("ActivitiesData")
SELECT * FROM tblActivities WHERE Activity ='?'AND SubActivity = '?'

组合中的一个可能是空的。设置一个断点并在将SQL字符串粘在一起后检查它Google little bobby tables。修复这个讨厌的问题还可以让你诊断你的bug。但是我在每个comboboxesBreakpoint中运行程序时选择活动和子活动。找出ActCombo.Text和SubActCombo.Text相等的内容。不要连接,使用参数。将查询记录在文件中,并在数据库中进行测试。我很确定你的破折号会导致错误,我认为这是个负数。删除该破折号或将列名放在括号中。