Запрос к базе access

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MadChild
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 04.03.2002 (Пн) 14:52
Откуда: Russia

Запрос к базе access

Сообщение MadChild » 13.07.2011 (Ср) 7:24

Здравствуйте.
Столкнулся с такой задачей: нужно из базы выбрать записи, дата и время которых соответствует указанному интервалу.
Делаю так:
Код: Выделить всё
' Собираем строку запроса
txtSQL = "SELECT * FROM sklad_title WHERE "
txtSQL = txtSQL & "data_doc>=DateValue('" & dStart & " 00:00:00" & "') AND " & _
                  "data_doc<=DateValue('" & dStop & " 23:59:59" & "') ORDER BY data_doc"

Запрос получается такой:
Код: Выделить всё
SELECT * FROM sklad_title WHERE data_doc>=DateValue('01.01.2011 00:00:00') AND data_doc<=DateValue(13.07.2011 23:59:59') ORDER BY data_doc

Структура таблицы sklad_title, mdb файлик создан на Access 2003:
index - счетчик, ключевой
data_doc - Дата/время, полный формат даты
number_doc - Текстовый
author - Текстовый
performer - Текстовый
type_doc - Текстовый

В результате получаю записи в интервале с 01.01.2011 00:00:00 по 12.07.2011 23:59:59, то есть, документы за 13 число не попадают в выборку.
Подскажите, что я делаю не так? Есть подозрения, что в запросе не учитывается время.

MadChild
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 04.03.2002 (Пн) 14:52
Откуда: Russia

Re: Запрос к базе access

Сообщение MadChild » 13.07.2011 (Ср) 7:50

Всем спасибо. Разобрался сам, считаю тему закрытой.
Кому интересно, решил задачу так:

Код: Выделить всё
SELECT * FROM sklad_title WHERE Datevalue (data_doc) between DateValue('01.01.2011 00:00:00') AND DateValue('13.07.2011 23:59:59') ORDER BY data_doc

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Запрос к базе access

Сообщение alibek » 13.07.2011 (Ср) 8:09

Я бы советовал указывать дату в формате #m/d/yyyy#.
Lasciate ogni speranza, voi ch'entrate.

MadChild
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 04.03.2002 (Пн) 14:52
Откуда: Russia

Re: Запрос к базе access

Сообщение MadChild » 13.07.2011 (Ср) 8:24

alibek писал(а):Я бы советовал указывать дату в формате #m/d/yyyy#.

Мне так тоже удобнее, но клиент хочет знать еще и время создания записи. А плодить поля не хочется.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Запрос к базе access

Сообщение alibek » 13.07.2011 (Ср) 8:30

WHERE data_doc between #1/1/2011 00:00:00# and #7/13/2011 23:59:59#

или

WHERE data_doc >= #1/1/2011# and data_doc < #7/14/2011#
Lasciate ogni speranza, voi ch'entrate.

vice4
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 31.05.2011 (Вт) 7:01

Re: Запрос к базе access

Сообщение vice4 » 13.07.2011 (Ср) 9:30

alibek писал(а):WHERE data_doc between #1/1/2011 00:00:00# and #7/13/2011 23:59:59#

или

WHERE data_doc >= #1/1/2011# and data_doc < #7/14/2011#


а если не на конкретную дату надо выбрать, а на дату, вводимую пользователем?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Запрос к базе access

Сообщение alibek » 13.07.2011 (Ср) 9:49

Ну собирай строку запроса динамически, используя Format$(fldDate, "\#m/d/yyyy\#").
Но лучше используй параметрические запросы.
Lasciate ogni speranza, voi ch'entrate.

vice4
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 31.05.2011 (Вт) 7:01

Re: Запрос к базе access

Сообщение vice4 » 13.07.2011 (Ср) 10:34

Код: Выделить всё
...where akzii.data_end>" & Format(Date, "\#mm\/dd\/yyyy\#")...


вот так решил проблему, alibek, спасибо за совет

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Запрос к базе access

Сообщение ger_kar » 13.07.2011 (Ср) 11:00

alibek писал(а):Но лучше используй параметрические запросы.
А что за запросы такие диковенные - параметрические? Заранее извиняюсь за тупость, но очень хочется узнать. Может я их даже и использовал не раз, вообще-то SQL знаю хорошо. Что такое вложенные, рекурсивные, кореллирующие (обычно подзапросы) знаю, но параметрические, что-то не в курсе.
Бороться и искать, найти и перепрятать

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Запрос к базе access

Сообщение alibek » 13.07.2011 (Ср) 11:08

Пример тут: http://alibek09.narod.ru/vb/articles/vbsbook/index.html
Параграф "Запрос с параметрами".
Lasciate ogni speranza, voi ch'entrate.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Запрос к базе access

Сообщение ger_kar » 13.07.2011 (Ср) 14:16

Спасибо, ссылка оказалась очень информативной, причем вся, а не только указанный параграф. Прочитал с удовольствием.
Бороться и искать, найти и перепрятать


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 15

    TopList