VB.Net:没有给出一个或多个必需参数的值

时间:2014-12-18 10:33:55

标签: vb.net datagridview parameters basic

我正在尝试用VB创建一个库管理系统(Visual Basic 2010)。

我有一个名为DataGridViewLoans的DataGridView,用于显示读者的当前贷款。它与主窗口分开,当表单加载时,读者ID将传递给表单。

我希望它(DataGridViewLoans)显示当前为读者提供的贷款,书籍标题。

我在Access中创建了一个SQL查询,并将其包含在代码中。但是,当我运行程序时,它说:没有给出一个或多个必需参数的值。

我尝试了各种不同的方法,但总是会出现同样的错误。

程序在" dAdapter.Fill(dataTable)"上给出了错误。线。

这是我的代码:

Dim connectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Documents and Settings\Timothy\My Documents\Visual Studio 2010\Projects\LibraryManagementSystemPrototype\Database\library.mdb;"
    Dim query As String = "SELECT Catalogue.Number, Catalogue.Title, Catalogue.Author, Catalogue.ID, Loans.[Issue Date], Loans.[Date Due], Loans.Overdue, Loans.[Days Overdue], Loans.ID_ENROLMENT, Loans.ID_CATALOGUE FROM Catalogue INNER JOIN Loans ON Catalogue.ID = Loans.ID_CATALOGUE WHERE (((Catalogue.ID)=[Loans].[ID_CATALOGUE]) AND ((Loans.ID_ENROLMENT)=[Enrolment].[ID]));"

    Dim dAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(query, connectionString)
    Dim cBuilder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(dAdapter)

    Dim dataTable As New DataTable()

    dAdapter.Fill(dataTable)

    Dim bindingSource As New BindingSource()
    bindingSource.DataSource = dataTable

    DataGridViewLoans.DataSource = bindingSource

谁能告诉我我做错了什么?

由于

1 个答案:

答案 0 :(得分:0)

通常,当您的字段或表名中有一个或多个拼写错误时会发生这种情况,但在这种情况下,您完全错过了Enrollment表上的联接。你可以在FROM / JOIN部分的任何地方使用它

Dim query As String = "SELECT Catalogue.Number, Catalogue.Title, " & _ 
   "Catalogue.Author, Catalogue.ID, Loans.[Issue Date], Loans.[Date Due], " & _ 
   "Loans.Overdue, Loans.[Days Overdue], Loans.ID_ENROLMENT, Loans.ID_CATALOGUE " & _
   "FROM Catalogue INNER JOIN Loans ON Catalogue.ID = Loans.ID_CATALOGUE " & _
   "INNER JOIN Enrolment ON Enrolment.ID = Loans.ID_Enrolment"

如您所见,WHERE部分是不必要的