2016-04-07 15 views
0

VB uygulamasına ve MS Access Veritabanına BackEnd olarak sahibim. Geçerli sistem tarihine sahip olan db'mdeki tüm Kayıtları Datagrid'e görüntülemek istiyorum. sql ifademde bir sorun yaşıyorum nasıl yapmam gerektiğini bilmiyorum.Sql İfade, Geçerli Sistem Tarihine Sahip Kayıtları Filtrele

O Bu yapmalıyım bir hata "Kriterler Expression Dataype uyuşmazlığı"

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

tek tırnak işaretlerini kaldırın –

+0

[MS Access 2013'te SQL kullanarak Geçerli Tarih ile Karşılaştırma Tarihi] 'nin olası kopyası (http://stackoverflow.com/questions/22895095/compare-date-with-current-date-using-sql -in-ms-access-2013) –

+0

Tüm tarih ifadesini kaldırın ve yerleşik 'Tarih()' işlevini kullanın, örneğin WHERE WorkingDate()> = Tarih() '. Her iki dizgede de dizgi birleştirmeyi kullanmaktan kaçınmalısınız, çünkü bu da size hem SQL enjeksiyon saldırıları, kötü performans * hem de * format uyumsuzluklarını gösterir - “ToShortDateString” mevcut sistemin konumunu kullanır. –

cevap

-2

görüntülüyor:

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

Harika, o zaman lütfen cevap verin ve yanıt olarak işaretleyin. – Gustav

2

Muhtemelen sorgunuzla dize olarak DateTime geçen bir sorun vardır.

Benim tavsiyem OleDB entegrasyon düzgün MS Access kafamdan Yazma

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) 

argümanlar geçirilmesi için ilgilenir gibi parametre kullanmak olacaktır, ama bunu yapmak gerekir.

+1

Geçerli tarih, özellikle 'Tarih()' işlevi tarafından döndürülebilir olmasına rağmen, iyi bir öneri. –

+0

VB.NET'im paslı ve bazı bitleri zaten unuttum :( – gzaxx

İlgili konular