2015-06-11 2 views
0
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As  
    System.EventArgs) Handles Button1.Click 
    MyConn = New OleDbConnection 
    MyConn.ConnectionString = connString 
    ds = New DataSet 
    tables = ds.Tables 
    If R2.Checked Then 
     da = New OleDbDataAdapter("Select * from [maint] where 
[centrale]='" & centralev.Text & "' ", MyConn) 'Change items to your 
    database name 
    End If 
    If R1.Checked Then 
     da = New OleDbDataAdapter("Select * from [maint] where 
datevisite='" & dateintervention.Value.ToShortDateString() & "' ", 
MyConn) 'Change items to your database name 
    End If 
    da.Fill(ds, "maint") 'Change items to your database name 
    Dim view As New DataView(tables(0)) 
    source1.DataSource = view 
    DGV.DataSource = view 

End Sub 
End Class 

Я использовал 2 кнопки, чтобы выбрать критерии поиска, у меня есть проблема с поиском даты, несоответствие типа данных в выражении критериев.Несоответствие типа данных в выражении критериев.

+0

Что возвращает 'dateintervention.Value'? –

+1

, по-видимому, тип столбца - дата, но вы передаете текст/строку в запросе. Используйте параметры, и это вряд ли произойдет. – Plutonix

ответ

0

попытаться изменить

неправильно

da = New OleDbDataAdapter("Select * from [maint] where 
datevisite='" & dateintervention.Value.ToShortDateString() & "' ", 
MyConn) 'Change items to your database name 

правильно

da = New OleDbDataAdapter("Select * from [maint] where 
datevisite='" & dateintervention.Value.ToString("yyyy-MM-dd") & "' ", 
MyConn) 'Change items to your database name 

Example for format

0

Расширение на Plutonix комментарий к вашему вопросу, вы можете попробовать:

Dim cmd = New OleDbCommand("Select * from [maint] where datevisite = ?") 

Dim param = New OleDbParameter("@datevisite", OleDbType.Date) 
param.Value = dateintervention.Value 

cmd.Parameters.Add(param) 

da = New OleDbDataAdapter (cmd, MyConn) 

Таким образом, ADO.NET позаботится о том, чтобы вы заменили знак вопроса в тексте запроса на правильное значение даты, отформатированное в соответствии с синтаксисом OleDb. Вы полностью избегаете ошибок конкатенации строк, и вам не нужно изучать правила форматирования для всех доступных типов данных OleDb.

Кроме того, это должно быть безопаснее.

Смежные вопросы