This is topic Ошибки обмена по ODBC in forum Работа в MS Windows (ODBC/DDE/OPC/NET) / Working under MS Windows at Форум TRACE MODE: техническая поддержка.
Добрый день! Возможно ли узнать:1. Каким образом формируется код ошибки выполнения запроса по ODBC (Канал подтипа Пустой с дополнением к подтипу SQL- ВЫПОЛНИТЬ(INPUT).Например,что означает код 6 и 1? 2.Требуется записать по 4 параметра в 7 таблиц одной базы данных (28 значений). С помощью какой настройки канала SQL-выполнить это можно осуществить - SQL(i),HEADER(J),FOOTER(l) или др.способом ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1) В данном канале записываются коды ошибок, которые возвращает тот ODBC-драйвер, через который Вы работаете. Соответственно описание этих кодов ошибок необходимо смотреть в документации на этот ODBC-драйвер.
2) Именем таблицы управляет фрагмент HEADER, его номер задает параметр I1 канала ПУСТОЙ\SQL_выполнить - соответственно в конфигурационном файле odbc.cfg необходимо создать семь фрагментов HEADER, определяющих разные таблицы БД. А в проекте Вам понадобиться семь каналов ПУСТОЙ\SQL_Выполнить в разными настройками параметра I1 для формирования соответствующего SQL-запроса.
Posted by HELLA (Участник № / Member № 104) on :
Пока удалось распределить данные по таблицам варьируя индекс SQL(I),но индекс по SQL(I) может меняться от 1 до 4-х,согласно справочной системе.Файл конфигурации odbc.cfg см.ниже:
DSN=test USER=user SQL1=SELECT * FROM test1 HEADER1= FOOTER1= SQL2=INSERT INTO test1 HEADER2=test1 FOOTER2= SQL3=INSERT INTO test2 HEADER3=test2 FOOTER3=
test1, test2-таблицы в базе данныз test ACCESS-97 В каждую таблицу кладется по 4 значения. Как правильно сформировать файл конфигурации чтобы распределять каналы по таблицам за счет параметра HEADER ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Пример файла конфигурации:
DSN=test USER=user SQL1=SELECT * FROM HEADER1=test1 FOOTER1= SQL2=INSERT INTO HEADER2=test2 FOOTER2= ... HEADER3=test3 FOOTER3= HEADER4=test4 HEADER5=test5 HEADER6=test6 HEADER7=test7
Теперь Вам надо создать 7 каналов "SQL_выполнить" с настройкой I0=0 и настройками I1=0, I1=1, ... ,I1=6 соответственно. Они будут формировать запросы с использованием SQL(1) и HEADER1, HEADER2, ... , HEADER7 соответветственно.
Posted by HELLA (Участник № / Member № 104) on :
Добрый день! Спасибо за ответ,но он несколько не по теме: Нам нужно работать только с SQL2=INSERT INTO (вставлять данные в несколько таблиц-test1...test7). При работе в ТМ5.09 с ACCESS-97 (база test)в профайлере видим ,что правильно формируется лишь запрос вида SQL2=INSERT INTO test1 HEADER2= FOOTER2=
а запрос типа SQL2=INSERT INTO HEADER2=test1 FOOTER= "теряет" имя таблицы "test1". В этих условиях мы можем работать с 4 - таблицами по числу возможных операторов SQL(I). Может быть в файле конфигурации используются "невидимые" разделители типа "пробела"? или есть другие тонкости ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
К сожалению применять HEADER для запроса INSERT INTO - невозможно. Мы постараемся исправить это в следующих релизах - сообщение об этом я внес в нашу базу улучшений. На данный момент решить такую задачу можно только, если СУБД дбудет сама запрашивать данные из ТМ.