Подключаюсь к дбф базе через АДО, ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\base\;Extended Properties=dBase IV;";
В дбф файле дата лежит в виде 01.01.05, подлючение работает, но необходимо на поле даты наложить фильтр, по типу
WHERE DATE = '01.01.05', и вот тут начинают вылазить ошибки. Форматы '01.01.05', {^2005-01-01}, не подходят. В каком виде можно записать дату, чтобы наложить фильтр?
Здравствуйте, B0rG, Вы писали:
BG>а так,
BG>'2005-12-13' BG>??
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 под "первым" — ругается на "пропущенное значение"...
Здравствуйте, OLEGus1, Вы писали:
OLE>Здравствуйте, jarad, Вы писали:
J>>WHERE DATE = '01.01.05', и вот тут начинают вылазить ошибки. OLE>а еще бывает так: "#2005-12-01#"
Здравствуйте, jarad, Вы писали:
J>В каком виде можно записать дату, чтобы наложить фильтр?
Насколько я понимаю, для того чтобы таких вопросов не возникало, в ADO есть Parameters: делаешь CreateParameter, присваиваешь ему значение через Value, затем Append его в коллекцию параметров команды и вызываешь команду. ADO должен сам преобразовать дату в нужный формат. Я прав?
"jarad" <41791@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1173573@news.rsdn.ru...
From: jarad
Подключаюсь к дбф базе через АДО, ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\base\;Extended Properties=dBase IV;";
В дбф файле дата лежит в виде 01.01.05, подлючение работает, но необходимо на поле даты наложить фильтр, по типу
WHERE DATE = '01.01.05', и вот тут начинают вылазить ошибки. Форматы '01.01.05', {^2005-01-01}, не подходят. В каком виде можно записать дату, чтобы наложить фильтр?
Формат дата в ADO Оценить
А может строкой выше WHERE DATE = '01.01.05' поставить:
SET DATEFORMAT dmy
___________________________________________________________
С датой разобрался, все нормально,
возник вопрос по соединению:
Запрос:
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)'.
Если комментирую строку со вторым джойном — все ок.
SELECT DATE AS DateDoc,
IDDOC, Doc.SP7998,Tab.SP8009
FROM 1SJOURN
INNER JOIN (INNER JOIN DT8012 Tab ON (Tab.IDDOC = 1SJOURN.IDDOC) AND (1SJOURN.LINENO = Tab.LINENO)) ON Doc.IDDOC = 1SJOURN.IDDOC
WHERE (1SJOURN.IDDOCDEF LIKE '%66K%')
AND (1SJOURN.DATE >= #2005-04-01#)
ORDER BY DATE
Здравствуйте, OLEGus1, Вы писали:
OLE>Здравствуйте, jarad, Вы писали:
OLE>Все таки что типа этого
OLE>SELECT DATE AS DateDoc, OLE>IDDOC, Doc.SP7998,Tab.SP8009 OLE>FROM 1SJOURN OLE>INNER JOIN (INNER JOIN DT8012 Tab ON (Tab.IDDOC = 1SJOURN.IDDOC) AND (1SJOURN.LINENO = Tab.LINENO)) ON Doc.IDDOC = 1SJOURN.IDDOC OLE>WHERE (1SJOURN.IDDOCDEF LIKE '%66K%') OLE>AND (1SJOURN.DATE >= #2005-04-01#) OLE>ORDER BY DATE
Идея то ясна но куда "слово" второго дойна с таблицей DН8012 втулить, алиас Doc присвоить...
Здравствуйте, OLEGus1, Вы писали:
OLE>Здравствуйте, jarad, Вы писали:
J>>Идея то ясна но куда "слово" второго дойна с таблицей DН8012 втулить, алиас Doc присвоить... OLE>from
SELECT DATE AS DateDoc,
IDDOC, Doc.SP7998,Tab.SP8009
FROM 1SJOURN, DH8012 Doc
INNER JOIN (INNER JOIN DT8012 Tab ON (Tab.IDDOC = 1SJOURN.IDDOC) AND (1SJOURN.LINENO = Tab.LINENO)) ON Doc.IDDOC = 1SJOURN.IDDOC
WHERE (1SJOURN.IDDOCDEF LIKE '%66K%')
AND (1SJOURN.DATE >= #2005-04-01#)
ORDER BY DATE
Ошибка синтаксиса в предложении FROM