2013-12-21 104 views
0

我一直在使用MS Access 2007中創建一個數據庫,它包含一個表tbl_Order的列顯示記錄據的DateTimePicker

Customer_Name, Dress_Type, Quantity, Date_Of_Pickup 

我可以使用此代碼顯示記錄到的datagridview: -

Private Sub dgvCurrentOrder() 
     Dim con As New OleDb.OleDbConnection 
     con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Documents\Visual Studio 2012\Projects\TMS Final\TMS Final\db\db_TMS.accdb" 

     If Not con.State = ConnectionState.Open Then 
      con.Open() 
     End If 

     Dim ds As New DataSet 
     Dim dt As New DataTable 
     ds.Tables.Add(dt) 
     Dim da As New OleDb.OleDbDataAdapter 

     da = New OleDb.OleDbDataAdapter("SELECT Customer_Name, Dress_Type, Quantity, Date_Of_Pickup " & _ 
             "FROM tbl_order " & _ 
             "ORDER BY Date_Of_Pickup ", con) 

     dt.Clear() 
     da.Fill(dt) 

     dgvReminder.DataSource = dt.DefaultView 

     dgvReminder.SelectionMode = DataGridViewSelectionMode.FullRowSelect 
    End Sub 

它顯示來自數據庫的所有訂單..但我想要的是隻顯示當前月的訂單..

Date_Of_Pickup是在這種格式= "28-Dec-2013"

我已經添加了`的DateTimePicker,和改性的查詢,以這樣的: -

da = New OleDb.OleDbDataAdapter("SELECT Customer_Name, Dress_Type, Quantity, Date_Of_Pickup " & _ 
             "FROM tbl_order " & _ 
             "WHERE Date_Of_Pickup = " & dtpCurrent.Value.Month & " " & _ 
             "ORDER BY Date_Of_Pickup ", con) 

我得到一個錯誤條件表達式中

數據類型不匹配

我該怎麼辦?

+0

'昏暗的日期時間= dataTabe.Select( 「DATE_TIME = 28日 - 12月2013」​​)(0)(「ALL 「)' 」ALL「字符串應該是一列。 這是這樣的:dim foo as string = get * ALL *其中日期和時間是2013年12月28日..嘗試一些解決方法。這是鏈接http://stackoverflow.com/questions/20514917/how-to-pull-data-from-db-datagridview-datatable – AdorableVB

回答

0

以下代碼選擇列Date_Of_Pickup大於上個月的最後一天的行。

Dim cmd As OleDbCommand = con.CreateCommand() 

cmd.CommandText = "SELECT Customer_Name, Dress_Type, Quantity, Date_Of_Pickup " & _ 
           "FROM tbl_order " & _ 
           "WHERE Date_Of_Pickup > @DATE " & _ 
           "ORDER BY Date_Of_Pickup " 

Dim d As Date = dtpCurrent.Value 

cmd.Parameters.AddWithValue("@DATE", New Date(d.Year, d.Month, 1, 23, 59, 59, 997).AddDays(-1.0#)) 


da = New OleDb.OleDbDataAdapter(cmd) 

如果你想從過去30天內提取行你這樣做:

cmd.Parameters.AddWithValue("@DATE", Date.Now.AddDays(-30.0#)) 
+0

的代碼工程..但我沒有得到它的這部分.. 「1, 23,59,59,997「 你能解釋給我嗎? – WaN

+0

比較日期時,時間也包含在比較中。所以這會創建一個這樣的日期時間:'d.Year,d.Month,FirstDayInMonth,LastHourOfDay,LastMinuteOfHour,LastSecondOfMinute,LastMillisecondOfSecond'。 –

+0

我看.. tq非常羅傑.. – WaN