データベースからグリッドにデータを取得しようとしています。条件は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