对我来说这是一个新概念,我无法看清导致错误的原因 我正在尝试从Access数据库中的单个字段(从组合和文本框源)填充datagridview控件。 使用文字可以使用,但不能使用参数。
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Backend & ";Persist Security Info=False;")
Dim command As New OleDbCommand("Select Year from tblTest ", conn)
Dim criteria As New List(Of String)
If Not cboYear.Text = String.Empty Then
criteria.Add("Year = @Year")
command.Parameters.AddWithValue("@Year", cboYear.Text)
End If
If criteria.Count > 0 Then
command.CommandText &= " WHERE " & String.Join(" AND ", criteria)
End If
Dim UserQuery As New OleDbDataAdapter(command.CommandText, conn)
Dim UserRet As New DataTable
UserQuery.Fill(UserRet)
With frmDGV.DataGridView2
.DataSource = UserRet
End With
frmDGV.DataGridView2.Visible = True
frmDGV.Show()
尝试填充数据表显示异常'没有给出一个或多个必需参数的值。'
此时command.CommandText的值是“从tblTest选择年份WHERE年份= @Year”
答案 0 :(得分:2)
您的OleDbDataAdapter
实例是使用两个参数查询文本和连接创建的。
Dim UserQuery As New OleDbDataAdapter(command.CommandText, conn)
在这种情况下,DataAdapter根本不知道参数。
而是使用类型为OleDbCommand
的paremeter的构造函数。
Dim UserQuery As New OleDbDataAdapter(command)
在已与关联
关联的OleDbCommand
代码实例中