This is topic Ошибки обмена по ODBC in forum Работа в MS Windows (ODBC/DDE/OPC/NET) / Working under MS Windows at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/13/t/000044.html

Posted by HELLA (Участник № / Member № 104) on :
 
Добрый день!
Возможно ли узнать: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 - невозможно. Мы постараемся исправить это в следующих релизах - сообщение об этом я внес в нашу базу улучшений.
На данный момент решить такую задачу можно только, если СУБД дбудет сама запрашивать данные из ТМ.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2