2016-04-03 6 views
1

データベースからグリッドにデータを取得しようとしています。条件はSELECT * FROM entries WHERE edate='" & Me.dtpDate.Value.Date & "'"ですが、条件式enter image description hereのエラーメッセージ「データ型の不一致」が表示されます。以下のコードをご覧ください。また、エラーメッセージのスクリーンショットを添付しました。条件式のデータ型の不一致(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 
+1

これは、パラメータ化クエリを使用しない場合に起こりうることです。あなたのテーブルの列edateのデータ型は何ですか?そして、文字列ではない場合、なぜ文字列を値として渡すのですか? – Steve

+0

その日付フィールド –

+1

SQLの日付の周りにダニを置くと、それはテキストになります。 SQLパラメータを使用して、実際のデータ型を保持します。また、DataAdapterとDataSetを作成する必要がない場合は、それらを放棄するだけです。 – Plutonix

答えて

3

これは、パラメータ化されたクエリを使用しない場合に起こり得ることです。
私は、あなたの列edateがDate/Time型のカラムであると確信していますが、Me.dtpDate.Value.Dateをsql stringコマンドの残りの部分に連結してください。
これはDateTimeからStringへの自動変換を強制しますが、変換はデータベースが見たいとは限りません。

パラメータを使用する場合、変換は行われず、データベースエンジンは渡すものを正確に理解します。

Dim sqlText = "SELECT * FROM entries WHERE [email protected]" 
MyAdapter As New OleDb.OleDbDataAdapter(sqlText, MyConnection) 
MyAdapter.SelectCommand.Parameters.Add("@dt", OleDbType.Date).Value = Me.dtpDate.Value.Date 
.... 
+1

あなたはマクロが必要です – Plutonix

+0

スティーブ、Plutonixは今働いています...私は将来もurヘルプを求めています...ありがとうございます...(Y) –

関連する問題