OledbException Несоответствие типа данных в выражении критерия

Я получаю OledbException Data type mismatch in the criteria expression в ad.Fill(xDataset, "TblMaster").

Я использую базу данных Access и Telerik Reporting.

это мой код

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

Пожалуйста, помогите мне, это моя последняя проблема для этого проекта.


person Akbar    schedule 16.06.2011    source источник


Ответы (3)


Вы должны использовать # вместо ' для полей даты/времени.

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

Я предполагаю, что TblMaster.Tangall относится к типу Date, и вы указываете его как string в предложении WHERE вашей команды SQL select.

Попробуйте следующее:

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
        }
}
person InBetween    schedule 16.06.2011

Я думаю, InBetween прав. Вы также можете преобразовать строку в дату внутри оператора SQL вместо использования параметров, заменив оператор SQL следующим:

Dim str9 As String = "Select * From TblMaster Where Tanggal=CDate('" & Me.DateTimePicker1.Value.ToString() & "')"
person Sharbell Mouess    schedule 29.06.2011