Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Формат представления даты в АДО / 15 сообщений из 15, страница 1 из 1
16.05.2005, 18:05
    #33068035
Jarad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
Подключаюсь к дбф базе через АДО, ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\base\;Extended Properties=dBase IV;";
В дбф файле дата лежит в виде 01.01.2005, подлючение работает, но необходимо на поле даты наложить фильтр, по типу
WHERE DATE = '01.01.2005', и вот тут начинают вылазить ошибки. Форматы '01.01.2005', {^2005-01-01}, не подходят. В каком виде можно записать дату, чтобы наложить фильтр?
...
Рейтинг: 0 / 0
16.05.2005, 18:43
    #33068124
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
odbc формат даты: yyyy-mm-dd hh:mi:ss.mmm
временную составляющую можно отбросить
...
Рейтинг: 0 / 0
16.05.2005, 18:52
    #33068143
Jarad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
SELECT Jour.DATE AS DateDoc,
Jour.IDDOC, Doc.SP7998
FROM 1SJOURN Jour
INNER JOIN DH8012 Doc ON (Doc.IDDOC = Jour.IDDOC)
WHERE (Jour.IDDOCDEF LIKE '%66K%')
AND (Jour.DATE >= '2005-04-01')
ORDER BY Jour.DATE
Такой запрос. При записи даты в таком виде, ругается на несоответствие типов, чем их можно привести, или я пропускаю какие-то маркерные символы, типа {}...
Еще заметил трабл, при добавлении еще одного INNER JOIN "под" первым, тоже ругается на "что-то пропущенное".
АДО использует отличный синтаксис SQL? Или просто ограничивает к-во соединений...
...
Рейтинг: 0 / 0
16.05.2005, 19:00
    #33068162
Jarad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
Нашел, дата пишеться в формате #2005-12-01#...
Проблема с джойнами не исчезла...
...
Рейтинг: 0 / 0
16.05.2005, 22:45
    #33068409
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
Еще заметил трабл, при добавлении еще одного INNER JOIN "под" первым, тоже ругается на "что-то пропущенное". приведи полный текст SELECT'а и полный stack-trace ошибки (не надо пересказывать сообщение своими словами, нужно оригинальное сообщение)
...
Рейтинг: 0 / 0
17.05.2005, 11:10
    #33068914
Jarad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
Запрос:
SELECT DATE AS DateDoc,
IDDOC, Doc.SP7998,Tab.SP8009
FROM 1SJOURN
INNER JOIN DH8012 Doc ON Doc.IDDOC = 1SJOURN.IDDOC
INNER JOIN DT8012 Tab ON (Tab.IDDOC = 1SJOURN.IDDOC) AND (1SJOURN.LINENO = Tab.LINENO)
WHERE (1SJOURN.IDDOCDEF LIKE '%66K%')
AND (1SJOURN.DATE >= #2005-04-01#)
ORDER BY DATE
Ошибка:
Microsoft JET Database Engine: Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Doc.IDDOC = 1SJOURN.IDDOC
INNER JOIN DT8012 Tab ON (Tab.IDDOC = 1SJOURN.IDDOC)'.
Если комментирую строку со вторым джойном - все ок.
...
Рейтинг: 0 / 0
17.05.2005, 11:29
    #33068981
Cobalt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
2 Jarad
может просто условие 2-го Join'а в скобки взять?
...
Рейтинг: 0 / 0
17.05.2005, 11:30
    #33068986
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
Jarad...
Ошибка:
Microsoft JET Database Engine: Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Doc.IDDOC = 1SJOURN.IDDOC
INNER JOIN DT8012 Tab ON (Tab.IDDOC = 1SJOURN.IDDOC)'.
Если комментирую строку со вторым джойном - все ок.

Могу ошибаться с оценкой, но недавно мне самому показали, что новый "джет" воспринимает двойные INNER JOIN только тогда, когда первый обернут скобками... , типа так:
SELECT DATE AS DateDoc,
IDDOC, Doc.SP7998,Tab.SP8009
FROM ( 1SJOURN
INNER JOIN DH8012 Doc ON Doc.IDDOC = 1SJOURN.IDDOC )
INNER JOIN DT8012 Tab ON (Tab.IDDOC = 1SJOURN.IDDOC) AND (1SJOURN.LINENO = Tab.LINENO)
WHERE (1SJOURN.IDDOCDEF LIKE '%66K%')
AND (1SJOURN.DATE >= #2005-04-01#)
ORDER BY DATE

З.Ы. моему удивлению и огорчению не было предела, ну зачем же так уродовать SQL-диалект, что до этого никто самостоятельно не в состоянии додуматься?
...
Рейтинг: 0 / 0
17.05.2005, 11:43
    #33069025
Jarad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
Ошибка осталась почти такая-же...
SELECT DATE AS DateDoc,
IDDOC, Doc.SP7998,Tab.SP8009
FROM (1SJOURN
INNER JOIN DH8012 Doc ON Doc.IDDOC = 1SJOURN.IDDOC )
INNER JOIN DT8012 Tab ON (Tab.IDDOC = 1SJOURN.IDDOC) AND (1SJOURN.LINENO = Tab.LINENO)
WHERE (1SJOURN.IDDOCDEF LIKE '%66K%')
AND (1SJOURN.DATE >= #2005-04-01#)
ORDER BY DATE
Ошибка: Microsoft JET Database Engine: Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Doc.IDDOC = 1SJOURN.IDDOC'.
З.Ы. скобки вокруг 2-го джойна тоже не помогают:
Ошибка: Microsoft JET Database Engine: Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Doc.IDDOC = 1SJOURN.IDDOC
(INNER JOIN DT8012 Tab ON (Tab.IDDOC = 1SJOURN.IDDOC) AND (1SJOURN.LINENO = Tab.LINENO))'.
...
Рейтинг: 0 / 0
17.05.2005, 12:56
    #33069286
ooops
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
Попробуй так:
Код: plaintext
1.
2.
3.
4.
SELECT Jor.Date, Jor.IDDOC, Doc.SP7998, Tab.SP8009
FROM (1SJOURN AS Jor INNER JOIN DH8012 AS Doc ON Jor.IDDOC = Doc.IDDOC)
INNER JOIN DT8012 AS Tab ON (Jor.IDDOC = Tab.IDDOC) AND (Jor.LINENO = Tab.LINENO)
WHERE (((Jor.Date)>=# 2005 - 04 - 01 #) AND ((Jor.IDDOCDEF) Like '%66K%'))
ORDER BY Jor.Date
...
Рейтинг: 0 / 0
17.05.2005, 13:06
    #33069313
Jarad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
Пробовал, Microsoft JET Database Engine: Отсутвует значение одного или нескольких параметров
...
Рейтинг: 0 / 0
17.05.2005, 13:11
    #33069329
ooops
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
Хинт
Втащи свои таблицы в Access и попробуй построить запрос там. Я именно так и сделал.
Access сам тебе покажет этот недостающий параметр
...
Рейтинг: 0 / 0
17.05.2005, 13:42
    #33069454
Jarad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
В аксессе поднялся запрос...сенкс...
но, попытался вставить строку CASE WHEN Doc.SP7998 = 1 THEN Tab.SP8009 ELSE 0 END AS Summ, и в аксесе выдало ошибку, уловия кейс не поддерживаються?
...
Рейтинг: 0 / 0
17.05.2005, 13:51
    #33069483
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
JaradВ аксессе поднялся запрос...сенкс...
но, попытался вставить строку CASE WHEN Doc.SP7998 = 1 THEN Tab.SP8009 ELSE 0 END AS Summ, и в аксесе выдало ошибку, уловия кейс не поддерживаються?

угу, CASE WHEN ... THEN ... ELSE ... END это уже кусок "диалекта" Transact-SQL от MS SQL-Server.

В "джете" должна поддерживаться аналогичная VB-функция CHOOSE() или IIF()
...
Рейтинг: 0 / 0
17.05.2005, 14:03
    #33069514
ooops
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат представления даты в АДО
2 Jarad

Посмотри документ
Jet Expression Can Execute Unsafe Visual Basic for Applications Functions
раздел - "Sandbox Mode Operations Allowed"

Там есть список ф-й, поддерживаемых Jet (присутствуют и choose и IIF)
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Формат представления даты в АДО / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]