Форум TRACE MODE: техническая поддержка   
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 5 » Работа в MS Windows (ODBC/DDE/OPC/NET) / Working under MS Windows » Получение и передача данных ч/з SQL-запрос.

   
Автор / Author Тема / Topic: Получение и передача данных ч/з SQL-запрос.
Vasilii
Forum Member / Участник форума
Участник № / Member № 1009


Icon 5 отправлено / posted      Профиль для / Profile for Vasilii           Редактировать/удалить сообщение / Edit/Delete Post 
Создал SQL-запрос для получения и передачи данных в ACCESS. Получение числовых значений проходит нормально, а с текстом проблема. Чтение "текста" происходит один раз и то после того как свернешь/развернешь ТМ.
А посылка не получается совсем. В отчете сообщается ошибка:
SQL:error in ExecDirect:37000
Проект создавал по примеру в HELP.

Сообщения / Posts 49 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Трейс Моуд 5 не работает с данными в текстовом формате.
Не можете ли Вы уточнить, что Вы имеете в виду?

В каком примере в HELP идет речь о чтении или посылке "текста"?

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vasilii
Forum Member / Участник форума
Участник № / Member № 1009


Icon 1 отправлено / posted      Профиль для / Profile for Vasilii           Редактировать/удалить сообщение / Edit/Delete Post 
Из HELP-a
СВЯЗЬ С УСО, контроллерами > Обмен по ODBC > Каналы для обмена по DBC > Получение данных из базы > "Считанные числовые значения присваиваются входным значениям соответствующих каналов. Если считанное значение представляет собой текст, он присваивается атрибуту кодировка соответствующего канала, если ранее данному каналу не были заданы кодировка и комментарий. Текст не может содержать более 127 символов. Присвоенная кодировка может быть просмотрена в динамике с использованием, например, формы отображения Динамический текст."

Сообщения / Posts 49 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Пожалуйста, покажите Ваш файл odbc.cfg - как задавали фрагменты SQL-запросов в нем?
Желательно также привести больше строк из лог-файла ТМ до ошибки "SQL:error in ExecDirect:37000".

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vasilii
Forum Member / Участник форума
Участник № / Member № 1009


Icon 1 отправлено / posted      Профиль для / Profile for Vasilii           Редактировать/удалить сообщение / Edit/Delete Post 
Здравствуйте! Запрос делал как в примере из HELP.

DSN=test
USER=user
SQL1=SELECT*FROM
HEADER1=Tab
FOOTER1=WHERE field1=#####
SQL2=INSERT INTO Tab

текст лог-файла ТМ

Professional Editional
DRAWSERV 5.12
SUPPORT: NetBios
INFO:Load Starting... D:\Project\Test_SQL\APM.dbb
INFO:Detected NT 5.0
INFO:Found 9 channels
INFO: LoadTime=0.17s CalcPeriod=549ms
ATTACH: default(PicMan)
DDE:starting...
RTM:math kernel starting...
SCREEN load error screen.000
INFO:work mode
INFO: start time is 0.11 s
ODBC:start
SQL:operator is: SELECT*FROM Tab WHERE field1=0
SQL:columns is 1 Код
SQL:columns is 2 field1
SQL:columns is 3 field2
SQL:columns is 4 field3
SQL:columns is 5 field4
SQL:columns is 6 field5
SQL:columns is 7 field6
SQL:columns is 8 field7
SQL:execute: SELECT*FROM Tab WHERE field1=0
ODBC Read
SQL:operator is: INSERT INTO Tab (field4,field5) VALUES(2,0) WHERE field1=#####
SQL:error in ExecDirect:37000
INFO:stoping...
ODBC:stop
DDE:thread stop
INFO: stop time is 2.013 s
INFO:number of calculation = 549
END OF WORK
LINK:unregistrated user Logout
LINK:unregistrated user Logout

Мне требуется из каналов field4 и field5 произвести запись в таблизу базы данных, а из канала field7 получить "код продукта" в текстовом виде.

Сообщения / Posts 49 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
1) Похоже, что для повторной макроподстановки Вы не создали канал ПУСТОЙ_SQL-where, поэтому у Вас в SQL-запросе "WHERE field1=#####" - это же ошибка по синтаксису SQL! Или Вы пытаетесь по тому же фрагменту "FOOTER1=WHERE field1=#####" выполнить запрос. Создайте еще один "FOOTER2=" с пустой строкой, чтобы по 2-ке у Вас запрос без этого WHERE выполнялся: "INSERT INTO Tab (field4,field5) VALUES(2,0)".
2) Пробелы также не забывайте между операторами в запросах: "SELECT*FROM", а кроме того - у Вас действительно БД требует авторизации при подключении как user? Если нет - тогда эту строку можно вообще удалить из файла конфигурации.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vasilii
Forum Member / Участник форума
Участник № / Member № 1009


Icon 1 отправлено / posted      Профиль для / Profile for Vasilii           Редактировать/удалить сообщение / Edit/Delete Post 
Нельзя ли поподробней. Я не силен в SQL, делал все как в HELP.
1) канал ПУСТОЙ_SQL-where создан - это field1, при равенстве значений этого канала и поля в таблице, производится чтение данных из полей field2 и field3 в соответствующие каналы.
2) Пробелы учел.

Сообщения / Posts 49 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
1) Вы когда 1 в другой канал (ПУСТОЙ_SQL Выполнить) посылаете, то ТМ снова берет FOOTER1, а он, я так понимаю, Вам во втором запросе не нужен совсем. Вы создайте еще один FOOTER2=пустой строке, тогда второй запрос инициировать нужно будет посылкой в канал двойки, а не единички.
Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vasilii
Forum Member / Участник форума
Участник № / Member № 1009


Icon 1 отправлено / posted      Профиль для / Profile for Vasilii           Редактировать/удалить сообщение / Edit/Delete Post 
Здравствуйте!
1) Все ок! Спасибо! Запись производится в таблицу, но если таблица открыта, то записи появляются только после следующего открытия таблицы. Это так и должно или что-то с настройками ODBC?
2) А что с чтением данных в текстовом виде? Я писал об этом выше.

Сообщения / Posts 49 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
1) Это особенность Access - просто, чтобы увидеть новые записи таблицу необходимо обновить.
2) А кодировка в канале была задана изначально, чтобы он мог принимать текстовые данные из СУБД?

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vasilii
Forum Member / Участник форума
Участник № / Member № 1009


Icon 1 отправлено / posted      Профиль для / Profile for Vasilii           Редактировать/удалить сообщение / Edit/Delete Post 
2) Нет, кодировку не задавал.
Сообщения / Posts 49 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Попробуйте задать.
Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vasilii
Forum Member / Участник форума
Участник № / Member № 1009


Icon 1 отправлено / posted      Профиль для / Profile for Vasilii           Редактировать/удалить сообщение / Edit/Delete Post 
Но в HELP-e пишется, что кодировку задавать не надо.
"Если считанное значение представляет собой текст, он присваивается атрибуту кодировка соответствующего канала, если ранее данному каналу не были заданы кодировка и комментарий."

Сообщения / Posts 49 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Прошу прощения - это я напутал, действительно кодировка не должна быть задана.
Проверил в ТМ5.15 - работает, если у канала не задана кодировка. Только я сомневаюсь, что данная технология Вам подойдет для обмена с БД текстовыми данными, ведь кодировка - разбивается на фрагменты и в итоге в ней Вы все равно получите не то, что в самой БД. Да и подчитывается она только один раз.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vasilii
Forum Member / Участник форума
Участник № / Member № 1009


Icon 1 отправлено / posted      Профиль для / Profile for Vasilii           Редактировать/удалить сообщение / Edit/Delete Post 
Т. е. получается то о чем я писал а начале по этому поводу : "Чтение "текста" происходит один раз и то после того как свернешь/развернешь ТМ"?
Сообщения / Posts 49 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Да. Но как я уже Вам сказал - все равно этот метод не подходит для работы с текстовыми параметрами из СУБД. ТМ 5-й версии может работать только с числовыми данными.
Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vasilii
Forum Member / Участник форума
Участник № / Member № 1009


Icon 1 отправлено / posted      Профиль для / Profile for Vasilii           Редактировать/удалить сообщение / Edit/Delete Post 
Спасибо за консультацию.
Почему в HELP-e по поводу "текстовых параметров из СУБД" ничего не сказано?

Сообщения / Posts 49 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Да это и не ограничения по части обмена с СУБД вовсе, а ограничение самой системы ТМ 5-й версии - она не работает с текстом в принципе.
Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

   Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


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

Rambler's Top100 Rambler's Top100



Powered by Infopop Corporation
UBB.classic™ 6.7.2