Форум 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 » Передача данных из Excel в ТМ

   
Автор / Author Тема / Topic: Передача данных из Excel в ТМ
kalman
Forum Member / Участник форума
Участник № / Member № 1154


Icon 5 отправлено / posted      Профиль для / Profile for kalman           Редактировать/удалить сообщение / Edit/Delete Post 
Добрый день. Помогите разобраться.
Задача стандартная – принимать значения из листа Excel. Данный лист зарегистрирован как пользовательский DSN имя базы db_first. Имя листа – Channels value, в котором содержаться два именованных столбца (первые ячейки - A1, B1) – TIR-001 и TIR-002.
Создаю проект как описано руководстве. Канал “Запрос” – SQL_выполнить (I0=0, I1=0, C2=1, C3=0). Чтобы обновление было постоянным при старте -1, Отработать, и через трансляцию его выходному значению присваиваю 0. Каналы для вставки значений из БД в ТМ – TIR-001, TIR-002 – in_null.
Файл odbc.cfg:
DSN=db_first

SQL1=SELECT TIR-001, TIR-002 FROM

HEADER1=Channels value$

В редакторе динамический текст, настроенный на входное значение каналов стоит на нуле. В чем причина?
У меня система ТМ 5.12, Windows XP и Office XP.

Сообщения / Posts 41 | Из / 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) А Вы уверены, что имя таблицы можно с пробелом называть? Есть сомнения, что будет работать в таком виде HEADER1. Проверить можно в логе профайлера - он всегда пишет в него какой SQL был сформирован и выполнен, а также результат его выполнения.
2) Не совсем понятно - в канал ПУСТОЙ-SQL_выполнить Вы -1 задали?
3) Вместо Трансляции - лучше на Управление FBD подключите, которая 0 в Выход посылает.

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


Icon 1 отправлено / posted      Профиль для / Profile for kalman           Редактировать/удалить сообщение / Edit/Delete Post 
Просмотрел отчет выдает след. ошибки:
DDE:starting...
DDE:wrong NetDDE: Не удается связать службу диспетчера общих баз данных (DSDM)
и
ODBC:start
SQL:operator is: SELECT * FROM
SQL:error in Prepare:37000

1. Может ли служить причиной ошибка DDE?
2. Имя листа (с пробелом или без) на ошибку не влияет.
3. Известна ли Вам данная ошибка -37000?

Сообщения / Posts 41 | Из / 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) DDE тут не при чем - это просто сообщение, что служба сетевого DDE у Вас не запущена. Но это к данной функции отношения не имеет.
2) У Вас в логе явно видно, что SQL-запрос сформирован неверно:
SELECT * FROM
имени таблицы нет!
Только не понятно - в файле конфигурации у Вас фрагмент SQL задан как "SELECT TIR-001, TIR-002 FROM ", а в логе почему-то "SELECT * FROM "? Вы изменили что-то в конфигурационном файле?

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


Icon 1 отправлено / posted      Профиль для / Profile for kalman           Редактировать/удалить сообщение / Edit/Delete Post 
Собственно говоря, ошибка не изменяется, как при конкретном задании имен столбцов, так при выбрке с условием, даже если в строке писать

SQL1=SELECT * FROM solo$ WHERE field1=5
, например.

Скачал тестовые примеры со страницы поддержки для DDE и ODBC, Профайл выдает ошибку -16 - несоответствие версии.
Для какой версии данные примеры? И что надо сделать, чтобы они запустились под моей 5.12? Или т. к. владелец базовой линии ТМ, то данные примеры, а также возможности мне не доступны?

Сообщения / Posts 41 | Из / 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 
Смотря из какого раздела они были взяты - там для Базового и для Профессионального формата есть. Ошибка 16 - это несоответствие формата.
А что за символ "$" в имени таблицы?
И еще одно - файл odbc.cfg обязательно должен заканчиваться символом перевода строки (Enter в конце).

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


Icon 1 отправлено / posted      Профиль для / Profile for kalman           Редактировать/удалить сообщение / Edit/Delete Post 
Разобрался, оказывается имя столбца, соответственно, и канала не должно содержать символа "-", наверное понимает как вычитание.
Теперь возникли проблемы с записью в БД.
Смотрю лог, там даже нет записи про SQL2.
А символ "$" обязательно присутствет в имени листа, например когда данные вставляешь из одного .xls файла в другой, отсюда и аналогия.
1. Чтоб в БД записывались данные, также необходимо в выход канала SQL-выполнить, постоянно передавать 0, а при старте присвоить 1?
2. Тип канала SQL_для_вставки - out?

Сообщения / Posts 41 | Из / 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) Значение канала определяет номер FOOTER'а из конфигурации. Поэтому необязательно это должна быть 1.
2) Не обязательно.

Сообщения / Posts 15201 | Из / 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