|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.06.2014, 21:24 | #1 |
Регистрация: 25.12.2013
Сообщений: 3
|
Как преобразовать в понятный Access'у запрос
В sql server запрос выполняется, но в Access возникает ошибка
Как можно поменять синтаксис, понятный для Access? PHP код:
|
20.06.2014, 23:06 | #2 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте googlogmob.
Функция CONVERT как и оператор CROSS APPLY в SQL MS Access не используются. CONVERT можно заменить VBA функцией Format: ... Format(p.[Дата],"dd.mm.yy") as ... CROSS APPLY формирует декартово произведение, от него можно отказаться используя несвязанные таблицы в качестве источника. Не вникая в конструкцию заметно сразу, что её строка - ...where month(p.[Дата]) = '6'... построена не корректно, функция MONTH возвращает числовое значение и оно сравнивается с текстом ..= '6'.. Будьте внимательнее, успехов Вам. Евгений. |
21.06.2014, 00:53 | #3 |
Регистрация: 25.12.2013
Сообщений: 3
|
Добрый вечер Евгений
Спасибо за развернутый ответ Про Format не знал, спасибо Подскажите пожалуйста, чем чревато использование такой конструкции: month(p.[Дата]) = '6'? Стоит указать по типу p.[Дата] between '20140601' and '20140630' ? Если можно, чуть детальней про использование несвязных таблиц в качестве источника Источник во вложении. Такая структура таблицы создана для определенных целей, поэтому хочу создать представление, чтобы преобразовать в применимую для анализа структуру Буду благодарен за помощь (советовали использовать множество union all, отдельно отбирая каждый вид) |
21.06.2014, 01:57 | #4 |
Регистрация: 25.12.2013
Сообщений: 3
|
Решено при помощи union all
насчет ошибочности использования такой конструкции: month(p.[Дата]) = '6' - отпишитесь пожалуйста |
22.06.2014, 00:30 | #5 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте googlogmob.
"..насчет ошибочности.." я описывал "..числовое значение .. сравнивается с текстом ..= '6'..." если при использовании в конструкции SQL-сервера выражение ..6 = '6'.. - просто "нехороший тон" то для SQL MS Access это выражение неприемлемо вовсе, только так : ..6 = 6.. Так-же как и выражение ..between '20140601' and '20140630'.. (которое собственный View редактор SQL-сервера все-же приводит к корректно виду: .. BETWEEN CONVERT(DATETIME, '2014-06-01 00:00:00', 102) AND CONVERT(DATETIME, '2014-06-30 00:00:00', 102).. ) Для SQL MS Access конструкция обращения к дате может быть такой: ..Between #6/1/2014# And #6/30/2014#.. Евгений. P.S. Ваш образец посмотреть не могу, у меня есть только Офис 2003 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ACCESS как правильно построить запрос и передать его в datagridview (C#) | Lustin_Aleks | Помощь студентам | 8 | 26.11.2013 13:18 |
как связать запрос access и форма delphi? | Gulnur10 | БД в Delphi | 1 | 08.05.2013 23:13 |
Не понятный глюк | Gudzik11 | Работа с сетью в Delphi | 2 | 26.06.2012 23:30 |
Запрос с датами и временем к Access [D7, Access] | alexandr2010 | БД в Delphi | 3 | 26.07.2010 22:19 |
Как правильно создать запрос по поиску в базе Access? | Dux | SQL, базы данных | 2 | 03.05.2009 13:37 |