2013-12-21 2 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

'тусклый DATETIME = dataTabe.Select ("дата_время = 28-Dec-2013") (0) (" ALL ")' Строка «ALL» должна быть столбцом. это что-то вроде этого: dim foo as string = get * ALL * где дата и время 28-дек-2013 .. попробуйте некоторое обходное решение. это ссылка 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

При сравнении дат время также включено в сравнение. Таким образом, создается такое datetime, как это: 'd.Year, d.Month, FirstDayInMonth, LastHourOfDay, LastMinuteOfHour, LastSecondOfMinute, LastMillisecondOfSecond'. –

+0

я вижу .. tq очень много Roger .. – WaN

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