31.03.2010 10:30
Vlad_German
 
Добрый день. Может немного не по теме вопрос. Есть база в Oracle9i Release 9.2.0.8.0. Есть 1С 8.1. Пытаемся по ADO получить данные через MS OLE DB provider for Oracle. Строка соединения
СтрСоединения = "Provider=MSDAORA.1;Data Source=" + Спис.Получить(0) + ";User ID="+ Спис.Получить(3) + ";Password=" + Спис.Получить(4)+";Persist Security Info=true";
Соединение проходит. Дальше открываем подключение и даем команду на получение данных в рекордсет
СоединениеSQL = Новый COMObject("ADODB.Command");
СоединениеSQL.ActiveConnection = Подключение;
СоединениеSQL.CommandType = 1;
СоединениеSQL.CommandText = "SELECT * FROM SUPERMAG.DATA_POST where DATA_DOC>= "+ Формат(ДатаНачала,"ДФ=yyyy-MM-dd")+"T00:00:00+03:00";
И при выполнении команды
ЗаписиSQL = Новый ComObject("ADODB.RecordSet");
ЗаписиSQL = СоединениеSQL.Execute();
На последней строке вылетаем с ошибкой ORA-00933 команда к ораклу в собранном виде получается такая
SELECT * FROM SUPERMAG.DATA_POST where DATA_DOC>= 2010-03-31T00:00:00+03:00
SQL плюс ее отрабатывает без ошибок. Никто ни писал импорт через ADO? Второй день синтаксис подобрать не можем.
31.03.2010 10:48
OlegON
 
пишите принудительное приведение типа данных, в этом случае, судя по всему, to_date.
Цитата:
desc SUPERMAG.DATA_POST
в плюсе сделай
31.03.2010 11:00
Vlad_German
 
Это во вью которая DATA_POST мне нужно DATA_DOC сделать примерно таким: decode(SMDOCUMENTS.CREATEDAT,TO_DATE('99990101 00:00','YYYYMMDD HH24:MI'),NULL,SMDOCUMENTS.CREATEDAT) Data_Doc?
31.03.2010 11:06
OlegON
 
какой-то ты бред написал... desc сделай, будет видно какой запрос надо
31.03.2010 11:07
Mtirt
 
А просто "To_date(DATA_DOC, 'DD.MM.YYYY H24:Mi:SS')>=To_date("+Формат(ДатаНачала,"ДФ=yyyy-MM-dd")+" 00:00:00+03:00"+" 'DD.MM.YYYY H24:Mi:SS')"
31.03.2010 11:15
Vlad_German
 
1 SELECT * FROM SUPERMAG.DATA_POST where DATA_DOC>= 2010-03-31T00:00:00+03:00 desc data_post
2* run
sP2-0552: Переменная привязки "00" не описана.
sQL>

Это я уже видел, насколько я понимаю неправильный формат времени? Особо не пинайте я всю жизнь на MS SQL сижу.
31.03.2010 11:29
Vlad_German
 
Цитата:
Mtirt А просто "To_date(DATA_DOC, 'DD.MM.YYYY H24:Mi:SS')>=To_date("+Формат(ДатаНачала,"ДФ=yyyy-MM-dd")+" 00:00:00+03:00"+" 'DD.MM.YYYY H24:Mi:SS')"
если так то ORA-00907: отсутствует правая скобка
полная строка запроса: SELECT * FROM SUPERMAG.DATA_POST where To_date(DATA_DOC, 'DD.MM.YYYY H24:Mi:SS')>= To_date(31-03-2010 00:00:00+03:00 'DD.MM.YYYY H24:Mi:SS')
31.03.2010 11:34
Mtirt
 
вторая часть так: To_date('31.03.2010 00:00:00', 'DD.MM.YYYY H24:Mi:SS')
31.03.2010 11:43
Vlad_German
 
SELECT * FROM SUPERMAG.DATA_POST where To_date(DATA_DOC, 'DD.MM.YYYY H24:Mi:SS')>= To_date(31-03-2010 00:00:00 'DD.MM.YYYY H24:Mi:SS')
И все равно ORA-00907
31.03.2010 11:47
Mtirt
 
Кавычки специально пропустил?
И запятую...
Часовой пояс GMT +3, время: 07:33.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.