Запрос> Проверка с сегодняшней датой в VB - PullRequest
0 голосов
/ 12 октября 2010

Я создал базу данных в Microsoft Access

с этим запросом

 SELECT * from booking WHERE BOOK_DATE = DATE() order by book_time*

возвращает 3 записи с BOOK_DATE = сегодняшней датой

но ...

когда я пытался поместить его в Visual Basic с Data Control и DBGrid, я вводил запрос в свойство RecordSource, но данные не появлялись при выполнении программы

что я пропустил из-за ДАТЫ () разве это не поддерживает в vb, я должен заменить это чем-то еще?

WHERE BOOK_DATE = DATE ()

Ответы [ 2 ]

0 голосов
/ 12 октября 2010

После того, как я попробовал несколько способов, я понял, что на самом деле это была моя вина.Но возникает новая проблема

запрос SELECT * from booking WHERE BOOK_DATE = date() на самом деле работает в VB

причина, по которой он не работает, потому что нет записей, которые содержат BOOK_DATE = сегодняшний день Но как это моглоэто происходит из-за того, что есть записи с BOOK_DATE = сегодняшней датой, но VB просто не может их найти.

Существует вероятность, что база данных, которую я создал в MS Access, или VB имеют ошибку.Та же самая таблица показывает в Access, а VB даже отличается

позвольте мне объяснить.Я создал базу данных в MS Access некоторое время с некоторыми записями в ней (я говорю только о конкретной таблице 'booking'), поэтому эти записи содержат различный диапазон дат.

, но как только я работаю с VBЯ подумал, что хочу попробовать показать данные с «сегодняшней датой» в DBGrid, поэтому я возвращаюсь к своему MS Access и редактирую некоторые записи, меняя их дату на 12 октября или 15 октября 2010 года.

затем я переключаюсь обратно на VB, я пытался показать данные простым запросом SELECT * from booking.Но записи, показанные в таблице, были предыдущими данными до того, как я изменил дату (12,15).

Это то, что мне интересно, почему данные в Access, которые я редактировал и сохранял, ноон не обновлялся в VB DBGrid.Оказывается, насколько больше я изменю информацию в Access, VB не будет обновлять таблицу, но будет продолжать отображать старую.

alt text

0 голосов
/ 12 октября 2010

VB6 знает о DATE (), так как я использовал его недавно. Я подозреваю, что элемент управления данными не может обрабатывать встроенную функцию, такую ​​как DATE () в RecordSource. Можете ли вы изменить RecordSource в коде, например, в событии Open форм или как угодно, чтобы указать дату? Что-то вроде:

Control.RecordSource="SELECT * from booking WHERE BOOK_DATE = " & _
     "#" &  DATE() & "# order by book_time* 

Обратите внимание, что # - это разделители даты, аналогичные тому, как 'или "(кавычки или двойные кавычки) являются разделителями. Предполагается, что элемент управления данными работает так же, как я привык в Access. Также обратите внимание, что иногда они нужны, но вы должны знать о них.

Кроме того, если в каких-либо системах используется что-либо, кроме формата мм / дд / гг, или если есть даже малейшая вероятность, что это может произойти, вам следует остерегаться следующего.

Для операторов SQL требуется, чтобы даты были либо полностью однозначными, либо в формате мм / дд / гг, либо в формате мм / дд / гггг. В противном случае Access / Jet сделает все возможное, чтобы интерпретировать дату с неизвестными результатами в зависимости от конкретной даты, с которой он работает. Вы не можете предполагать, что система, в которой вы работаете, использует эти форматы даты. Таким образом, вы должны использовать логику на следующей веб-странице. Даты возврата в формате США # мм / дд / гггг # http://www.mvps.org/access/datetime/date0005.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...