Переменные в SQL запросе

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
bvv70
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 22.04.2006 (Сб) 19:12

Переменные в SQL запросе

Сообщение bvv70 » 12.12.2006 (Вт) 15:40

В прекрасно работающий запрос
"SELECT * FROM Opr WHERE [Дата] BETWEEN datevalue('01.12/2006') AND datevalue('15.12/2006')"
пытаюсь ввести вместо конкретных дат переменные, но ничего не выходит. Как можно это сделать?
И еще вопрос: после того, как диапазон дат будет выведен нужно отсортировать строки по возрастанию дат. Т.е. нужно объединить вышеприведенный запрос с:
"SELECT * FROM Opr ORDER BY [Дата] ASC"
Заранее спасибо!

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

Сообщение alibek » 12.12.2006 (Вт) 15:41

База какая?
Lasciate ogni speranza, voi ch'entrate.

bvv70
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 22.04.2006 (Сб) 19:12

Сообщение bvv70 » 12.12.2006 (Вт) 16:39

База mdb, использую ADO

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 12.12.2006 (Вт) 16:42

'01.12/2006' - это что за формат такой :?:
datevalue не нужен :!:

используй стандартный синтаксис даты для акцесса: #MM/DD/YYYY#

ps
Код: Выделить всё
SELECT * FROM Opr
WHERE [Дата] BETWEEN #12/01/2006# AND #12/15/2006#
ORDER BY [Дата]

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

Сообщение alibek » 12.12.2006 (Вт) 16:53

bvv70 писал(а):База mdb, использую ADO

Тогда пиши так:
Код: Выделить всё

PARAMETERS Arg1 Long, Arg2 DateTime;
SELECT *
FROM Table1
WHERE [Date] > [Arg2];
Lasciate ogni speranza, voi ch'entrate.

bvv70
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 22.04.2006 (Сб) 19:12

Сообщение bvv70 » 13.12.2006 (Ср) 10:23

Подсказка Konst_One - работает, но вопрос с переменными все равно остается, alibek привел пример с переменными, но извините за необразованность - запросы я умею использовать только одним способом:
Код: Выделить всё
Adodc1.RecordSource = "SELECT * FROM Opr WHERE [Дата] BETWEEN #12/12/2006# AND #30/12/2006# ORDER BY [Дата]"

и синтаксис запроса "в столбик" - для меня загадка (VB6). Даты (и первая и вторая) у меня берутся из textbox’ов - может и переменных даже не нужно объявлять?

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 13.12.2006 (Ср) 10:51

Код: Выделить всё
Adodc1.RecordSource = "SELECT * FROM Opr WHERE [Дата] BETWEEN #" & Format(CDate(Text1.Text), "mm\/dd\/yyyy") & "# AND #" & Format(CDate(Text2.Text), "mm\/dd\/yyyy") & "#  ORDER BY [Дата]"
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

bvv70
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 22.04.2006 (Сб) 19:12

Сообщение bvv70 » 13.12.2006 (Ср) 11:52

Спасибо!


Вернуться в Базы данных

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList