2016-04-07 4 views
0

私はVBアプリケーションとMS AccessデータベースをBackEndとして持っています。私は現在のシステム日付のDatagridに私のdbのすべてのレコードを表示したい。 私のSQL文に問題があります。どうすればいいのか分かりません。現在のシステム日付を持つレコードをフィルタリングするSql式

それは、これが何をすべきエラー「抽出条件式でDataype不一致」

sqlqry = "Select * FROM tblAttendance WHERE WorkingDate >= '#" & 
          DateTime.Now.ToShortDateString() & "#'"  
    da = New OleDbDataAdapter(sqlqry, cnn) 
    Dim dt As New DataTable("tblAttendance") 
    da.Fill(dt) 
    Me.dgvAttendance.DataSource = dt 
    DataGridProperty(dgvAttendance) 
    DataGridAttendance(dgvAttendance) 
+0

シングル引用符を削除 –

+0

[MS Access 2013でSQLを使用して現在の日付と日付を比較](http://stackoverflow.com/questions/22895095/compare-date-with-current-date-using-sql) -in-ms-access-2013) –

+0

日付式全体を削除し、組み込みの 'Date()'関数、例えば 'WHERE WorkingDate()> = Date()'を使用します。 SQLインジェクション攻撃、パフォーマンスの悪い*、*形式の不一致の両方を表示するため、文字列連結を使用することは避けてください。 'ToShortDateString'は現在のシステムのロケールを使用します。 –

答えて

-2

表示されます。

sqlqry = "Select * FROM tblAttendance WHERE WorkingDate = #" & DateTime.ToDay.ToString("yyyy'/'MM'/'dd") & "#"  
+0

偉大なので、upvoteし、答えとしてマークしてください。 – Gustav

2

は、おそらくあなたのクエリに文字列としてDateTimeを渡すことに問題があります。

私のアドバイスは、のOLE DB統合が正常にMS Accessの私の頭からの書き込み

Dim sqlqry As String = "Select * FROM tblAttendance WHERE WorkingDate >= ?" 
Dim da As New OleDbDataAdapter(sqlqry, cnn) 

da.SelectCommand.Parameters.Add(New OleDb.OleDbParameter("@WorkingDate", DateTime.Now)) 

Dim dt As New DataTable("tblAttendance") 
da.Fill(dt) 
Me.dgvAttendance.DataSource = dt 
DataGridProperty(dgvAttendance) 
DataGridAttendance(dgvAttendance) 

に引数を渡すために世話をしますと、パラメータを使用することですが、これは行う必要があります。

+1

現在の日付は特に 'Date()'関数によって返すことができますが、良いアドバイスです。 –

+0

私のVB.NETは錆びていて、私はすでにいくつかのビットを忘れてしまった:( – gzaxx

関連する問題