Сложный запрос

HeigHog
Дата: 15.09.2005 11:44:27
SELECT DEFENCE_ACCESS_LOG.FIO, DEFENCE_ACCESS_LOG.ACTION, DEFENCE_ACCESS_LOG.M_DATE
FROM DEFENCE_ACCESS_LOG
WHERE (((DEFENCE_ACCESS_LOG.ACTION) Like "6" Or (DEFENCE_ACCESS_LOG.ACTION) Like "7") AND ((DEFENCE_ACCESS_LOG.M_DATE)Between ( [Введите начальную дату запроса]+"*")and ( [Введите w дату запроса]+"*")) )
ORDER BY DEFENCE_ACCESS_LOG.FIO, DEFENCE_ACCESS_LOG.M_DATE;

Вот на этот запрос мудрый Access разражается гневной триадой типа слишком сложное или слишком неправильное выражение :( ... Вопрос: Wazzup?!!!!
Meb
Дата: 15.09.2005 11:53:12
Видимо не понимает что такое [Введите начальную дату запроса] и [Введите w дату запроса].
АлексейК
Дата: 15.09.2005 11:55:05
потому что
1 дату надо форматировать в формат #MM/DD/YYYY# или число
2 звездочка после не нужна

3 like 6 не к месту

либо like "6*" если начало на 6 либо
DEFENCE_ACCESS_LOG.ACTION in (6,7) если актион 6 или 7
HeigHog
Дата: 15.09.2005 12:04:13
[Введите начальную дату запроса] - это параметр, если изменить на конструкцию типа:... AND ((DEFENCE_ACCESS_LOG.M_DATE) Like ( [Введите начальную дату запроса]+"*") ... тогда все будет ОК, но мне нужно вывести отчет за интервал времени, т.е. нужно задействовать 2 параметра.
А с форматом даты все нормально, там дата типа "12.05.2005 12:00:25". Когда я запрашиваю с одним параметром, он все понимает .... шкотинка! :)
AlTis
Дата: 15.09.2005 12:12:06
HeigHog
[Введите начальную дату запроса] - это параметр, если изменить на конструкцию типа:... AND ((DEFENCE_ACCESS_LOG.M_DATE) Like ( [Введите начальную дату запроса]+"*") ... тогда все будет ОК, но мне нужно вывести отчет за интервал времени, т.е. нужно задействовать 2 параметра.
А с форматом даты все нормально, там дата типа "12.05.2005 12:00:25". Когда я запрашиваю с одним параметром, он все понимает .... шкотинка! :)

PARAMETERS [Введите начальную дату запроса] DateTime, [Введите конечную дату запроса] DateTime;
SELECT DEFENCE_ACCESS_LOG.FIO, DEFENCE_ACCESS_LOG.ACTION, DEFENCE_ACCESS_LOG.M_DATE
FROM DEFENCE_ACCESS_LOG
WHERE DEFENCE_ACCESS_LOG.ACTION Like "6"
 Or DEFENCE_ACCESS_LOG.ACTION Like "7" AND DEFENCE_ACCESS_LOG.M_DATE 
Between  [Введите начальную дату запроса] and [Введите конечную дату запроса]
ORDER BY DEFENCE_ACCESS_LOG.FIO, DEFENCE_ACCESS_LOG.M_DATE;
Meb
Дата: 15.09.2005 12:14:03
Конструкция ((DEFENCE_ACCESS_LOG.M_DATE) Like ( [Введите начальную дату запроса]+"*") срабатывает, потому что у тебя поле [Введите начальную дату запроса] текстовое. Преобразуй в дату и просто его укажи без всяких звездочек.
HeigHog
Дата: 15.09.2005 12:21:50
Спасибо за идеи, кое в чем мне это помогло, но возникла след-ая проблема: у меня дата типа "12.09.2005 12:34:00" , мне нужно из этого вытянуть "12.09.2005", то есть дату, но без времени. Изменять тип полей я не могу. Поле текстовое.
Iskander68
Дата: 15.09.2005 13:06:02

Попробуй

SELECT D.FIO, D.ACTION, D.M_DATE
FROM DEFENCE_ACCESS_LOG AS D
WHERE (D.ACTION = "6" Or D.ACTION = "7") AND DateValue(D.M_DATE) Between
[Введите начальную дату запроса] and [Введите w дату запроса]
ORDER BY D.FIO, DateValue(D.M_DATE)

--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.3