我试图将数据从数据库中提取到网格中。条件是SELECT * FROM entries WHERE edate='" & Me.dtpDate.Value.Date & "'"
但是,我收到条件表达式中的错误消息数据类型不匹配。请参阅下面的代码。此外,我附上了错误消息的屏幕截图。标准表达式(vb.net,access)中的数据类型不匹配
Private Sub dtpDate_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles dtpDate.Leave
'GetDayBookOpeningBalance()
If Me.lblHeading1.Text <> "Daybook entry" Then
Using MyConnection As OleDb.OleDbConnection = FrmCommonCodes.GetConnection(),
MyAdapter As New OleDb.OleDbDataAdapter("SELECT * FROM entries WHERE edate='" & Me.dtpDate.Value.Date & "'", MyConnection)
'Format(Me.dtpDate.Value.Date, "dd/MM/yyyy"))
If MyConnection.State = ConnectionState.Closed Then MyConnection.Open()
Using MyDataSet As New DataSet
MyAdapter.Fill(MyDataSet, "entries")
Me.grdDayBook.DataSource = MyDataSet.Tables("entries")
Dim DataSetRowCount As Integer = MyDataSet.Tables("entries").Rows.Count
If DataSetRowCount > 0 Then
SetGridProperty()
Else
ShowBlankGrid()
FrmCommonCodes.MessageDataNotFound()
End If
End Using
End Using
Else
ShowBlankGrid()
End If
End Sub
这正是不使用参数化查询会发生的情况。表格中edate列的数据类型是什么?如果它不是一个字符串,为什么你传递一个字符串作为值? – Steve
其日期字段 –
当您在SQL中将日期放在周围时,它会变成文本。使用SQL参数来保存实际的数据类型。如果你只是抛弃它们,也不需要创建DataAdapter和DataSet。 – Plutonix