2011-06-16 16 views
2

OledbException Data type mismatch in the criteria expressionad.Fill(xDataset, "TblMaster")になっています。OledbException条件式のデータ型の不一致

私はAccessデータベースとTelerikレポートを使用しています。

これは、これがこのプロジェクトのための私の最後の問題で私を助けてください私のコード

Public Sub TanggalX() 

    conn.Open() 

    Dim str9 As String = "Select * From TblMaster Where Tanggal='" & Me.DateTimePicker1.Value.Date.ToString("yyyy/MM/dd")) & "'" 
    ad = New OleDb.OleDbDataAdapter(str9, conn) 
    xDataset.Clear() 
    ad.Fill(xDataset, "TblMaster") 
    obj_RepDoc = New Report1 
    obj_RepDoc.DataSource = (xDataset) 
    Me.ReportViewer1.Report = obj_RepDoc 
    Me.ReportViewer1.RefreshReport() 
    Me.Show() 
    conn.Close() 
End Sub 

です。

答えて

1

私の推測では、TblMaster.TangallがタイプDateであり、あなたがあなたのSQL selectコマンドのWHERE句でstringとして指定されていることです。

は、以下のことを試してみてください。

using (OleDbCommand comm = new OleDbCommand()) 
{ 
    var parameter =comm.Parameters.AddWithValue("@tangall", Me.DateTimePicker1.Value); 
    parameter.OleDbType = OleDbType.DBDate; 

     using (var ad = new OleDbDataAdapter(comm)) 
     { 
      ... //do your stuff here 
     } 
} 
+0

回答ありがとうございました... – Akbar

0

私はその間のが正しいと思います。あなたはまた、代わりにこれであなたのSQL文を置き換えることにより、パラメータを使用してのSQLステートメント内の文字列を日付に変換できます。

Dim str9 As String = "Select * From TblMaster Where Tanggal=CDate('" & Me.DateTimePicker1.Value.ToString() & "')" 
3

あなたは日付/時刻フィールドに 'の代わりに#を使用する必要があります。

Dim str9 As String = "SELECT * FROM TblMaster WHERE Tanggal=#" & Me.DateTimePicker1.Value.Date.ToString("yyyy/MM/dd")) & "#" 
関連する問題