![]() |
#3 |
Участник
|
Цитата:
Сообщение от DimCorso
Добрый день!
Пытаюсь через ADO из-под 1С подключиться к Навижновской базе. Создал udl-файл. Подключился, структуру таблиц базы увидел. А все запросы выдают ошибку... Например: SELECT * FROM Currency; Результат: Microsoft OLE DB Provider for ODBC Drivers: [Navision Software a/s][Navision Financials ODBC Driver]Table does not exists Не подскажете, в чем может быть проблема? зачем udl файл? <div class='v7top'>1Cv7</div><div class='v7'> Соединение=СоздатьОбъект("ADODB.Connection"); СтрокаКоннекта="driver={SQL Server};server=sql;uid=sa;pwd=пароль;Database=navision"; Соединение.ConnectionTimeOut=200; Соединение.CursorLocation=3; Попытка Соединение.Open(СтрокаКоннекта); Исключение Предупреждение("Невозможно установить соединение с базой данных!"); Возврат 0; КонецПопытки;</div> Да и Navision дает имена таблицам по шаблону ИмяФирмы$ИмяТаблицыИзДизайнера. Кусок из 1С ки: <div class='v7top'>1Cv7</div><div class='v7'> Функция ТипПараметра(SQLStrType ) Экспорт Тип = НРег(SQLStrType); Если Тип = "empty" тогда Возврат 0; иначеесли Тип = "boolean" тогда Возврат 11; иначеесли Тип = "integer" тогда Возврат 3; иначеесли Тип = "int" тогда Возврат 3; иначеесли Тип = "tinyint" тогда Возврат 16; иначеесли Тип = "smallint" тогда Возврат 2; иначеесли Тип = "bigint" тогда Возврат 20; иначеесли Тип = "numeric" тогда Возврат 131; иначеесли Тип = "double" тогда Возврат 5; иначеесли Тип = "date" тогда Возврат 7; иначеесли Тип = "char" тогда Возврат 129; иначеесли Тип = "varchar" тогда Возврат 200; иначеесли Тип = "unsignedtinyint" тогда Возврат 17; иначеесли Тип = "unsignedsmallint" тогда Возврат 18; иначеесли Тип = "unsignedint" тогда Возврат 19; иначеесли Тип = "unsignedbigint" тогда Возврат 21; иначеесли Тип = "single" тогда Возврат 4; иначеесли Тип = "currency" тогда Возврат 6; иначеесли Тип = "decimal" тогда Возврат 14; иначеесли Тип = "error" тогда Возврат 10; иначеесли Тип = "userdefined" тогда Возврат 132; иначеесли Тип = "variant" тогда Возврат 12; иначеесли Тип = "idispatch" тогда Возврат 9; иначеесли Тип = "iunknown" тогда Возврат 13; иначеесли Тип = "guid" тогда Возврат 72; иначеесли Тип = "dbdate" тогда Возврат 133; иначеесли Тип = "dbtime" тогда Возврат 134; иначеесли Тип = "dbtimestamp" тогда Возврат 135; иначеесли Тип = "bstr" тогда Возврат 8; иначеесли Тип = "longvarchar" тогда Возврат 201; иначеесли Тип = "wchar" тогда Возврат 130; иначеесли Тип = "varwchar" тогда Возврат 202; иначеесли Тип = "longvarwchar" тогда Возврат 203; иначеесли Тип = "binary" тогда Возврат 128; иначеесли Тип = "varbinary" тогда Возврат 204; иначеесли Тип = "longvarbinary" тогда Возврат 205; иначе возврат 0; конецесли; КонецФункции Процедура ДалаемСклоненияВЕбижене() ИмяТаблицы="KadrTabSklon"; ТекстЗапроса="SELECT Tip,Name,Flzap FROM ["+ИмяБазы+ИмяТаблицы+"] "; Запрос=СкомпилироватьЗапрос(Соединение,ТекстЗапроса); ТекстОбновления="UPDATE ["+ИмяБазы+ИмяТаблицы+"] SET NameD=?, NameV=?, NameT=?, Flzap=0 WHERE Tip=? AND Name=?"; ЗапросОбновления=СкомпилироватьЗапрос(Соединение,ТекстОбновления); NameD=ЗапросОбновления.CreateParameter("P1", ТипПараметра("Char"), input,240); NameV=ЗапросОбновления.CreateParameter("P2", ТипПараметра("Char"), input,240); NameT=ЗапросОбновления.CreateParameter("P3", ТипПараметра("Char"), input,240); Tip=ЗапросОбновления.CreateParameter("P4", ТипПараметра("Integer"), input,); Name=ЗапросОбновления.CreateParameter("P5", ТипПараметра("Char"), input,240); ЗапросОбновления.Parameters.Append(NameD); ЗапросОбновления.Parameters.Append(NameV); ЗапросОбновления.Parameters.Append(NameT); ЗапросОбновления.Parameters.Append(Tip); ЗапросОбновления.Parameters.Append(Name); НаборЗаписей=Запрос.Execute(); Если НаборЗаписей.EOF() = 0 Тогда НаборЗаписей.MoveFirst(); Пока НаборЗаписей.EOF() = 0 Цикл Тип=Число(НаборЗаписей.Fields(0).Value); Стр=СокрЛП(НаборЗаписей.Fields(1).Value); ФлагЗаполнения=НаборЗаписей.Fields(2).Value; ... и т.д. Если .. ЗапросОбновления.Execute(); КонецЕсли; НаборЗаписей.MoveNext(); КонецЦикла; </div> и т.п. |
|