我正在尝试用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
谁能告诉我我做错了什么?
由于
答案 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部分是不必要的