2017-03-23 4 views
0

Ich versuche, eine Abfrage aus einer SQL Query Zeichenfolge, die ich mit OleDBDataAdapter gefunden, so dass ich die Datagridview mit dem Ergebnis aus der Abfragezeichenfolge füllen kann. Die Zeichenkette ist:Datentyp Mismatch Ausnahme beim Ausführen von datagridview Adapter in vb.net

Dim sqlsearch as string = "select DateField1, DateField2 from TableOne where DateField1 >= '" & CType(StDate, Date) & "' and DateField1 <= '" & CType(EnDate, Date) & "'" 

Ich möchte die Ergebnisse der Daten zwischen dem Startdatum und dem Ende dat anzeigen. Das "StDate" ist das Startdatum und das "EnDate" ist das Enddatum und sie erhalten ihre Werte aus zwei Textfeldern (Die beiden Textfelder sind schreibgeschützt und erhalten die Datumszeichenfolge von DateTimePicker-Steuerelementen, die das kurze Datumsformat verwenden).

Die Datenbankfelder "DateField1" und "DateField2" verwenden ebenfalls dasselbe Datumsformat (Short). Der Code habe ich verwendet, um zu versuchen und die Datagridview zu füllen ist wie folgt:

Try 
     Dim StDate As String = TextBox1.Text 
     Dim EnDate As String = TextBox2.Text 

     Dim sqlsearch As String 
     Dim adapter As New OleDbDataAdapter 
     Dim dt As New DataTable("TableOne") 

     Try 
      DBConnas.ConnectionString = ConnStr 
      DBConnas.Open() 

      sqlsearch = "select DateField1, DateField2 from TableOne where DateField1 >= '" & CType(StDate, Date) & "' and DateField1 <= '" & CType(EnDate, Date) & "'" 
      ' Once again we execute the SQL statements against our DataBase 
      adapter = New OleDbDataAdapter(sqlsearch, DBConnas) 
      ' Shows the records and updates the DataGridView 
      dt = New DataTable("TableOne") 
      adapter.Fill(dt) 
      DataGridView1.DataSource = dt 

      DBConnas.Close() 
     Catch ex As Exception 
      MsgBox(ex.Message) 
      DBConnas.Close() 
     End Try 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

ich eine „Data Type Mismatch In Criteria Expression“ Ausnahmemeldung erhalten, wenn dt den Adapter zu füllen hat.

Bitte helfen Sie mir mit diesem [Problem oder helfen Sie mir mit einer besseren Möglichkeit der Abfrage mit einem Datumsbereich in vb.net und MS Access.

Antwort

0

Versuchen octothorphes und ein erzwungenes Format:

sqlsearch = "select DateField1, DateField2 from TableOne where DateField1 >= #" & CType(StDate, Date).ToString("yyyy'/'MM'/'dd") & "# and DateField1 <= #" & CType(EnDate, Date).ToString("yyyy'/'MM'/'dd") & "#" 
+0

funktioniert perfekt. Danke für die Lösung. @ Gustav –

0
sqlsearch = "select DateField1, DateField2 from TableOne where DateField1 >= '" & StDate.value & "' and DateField1 <= '" & EnDate.value & "'" 
Verwandte Themen