2011-06-16 1 views
2

Je reçois un OledbException Data type mismatch in the criteria expression, au ad.Fill(xDataset, "TblMaster"). J'utilise une base de données Access et Telerik Reporting.OledbException Incompatibilité de type de données dans l'expression de critères

C'est mon code

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 

S'il vous plaît aidez-moi ceci est mon dernier problème pour ce projet.

Répondre

1

Je pense que TblMaster.Tangall est de type Date et vous spécifiez comme un string dans la clause WHERE de votre SQL commande select.

les opérations suivantes:

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

merci pour votre réponse ... – Akbar

0

Je pense que InBetween est juste. Vous pouvez également convertir la chaîne à ce jour dans l'instruction SQL au lieu d'utiliser les paramètres par le remplacement de votre instruction SQL avec ceci:

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

Vous devez utiliser # au lieu de "pour Date/Heure.

Dim str9 As String = "SELECT * FROM TblMaster WHERE Tanggal=#" & Me.DateTimePicker1.Value.Date.ToString("yyyy/MM/dd")) & "#" 
Questions connexes