This is topic Работа с базой данных in forum Архивирование в TRACE MODE / Data Logging in Trace Mode at Форум TRACE MODE: техническая поддержка.


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

Posted by Sergey_K (Участник № / Member № 136) on :
 
1. Необходимо выполнить запросы:
1) SELECT * FROM Tab WHERE field1=###
2) UPDATE Tab SET field2=### WHERE field1=###
Очевидно, что в файле odbc.cfg эти запросы будут располагаться в различных строках и соответствующие каналы SQL_выполнить должны иметь различные настройки I0 и I1.
При этом канал, из которого осуществляется подстановка (канал field1) должен иметь настройки I0 и I1, совпадающие с настройками канала SQL_выполнить. Таким образом, получается, невозможно осуществить подстановку значения канала field1 в оба запроса.
Поэтому необходимо либо изменять настройки I0 и I1 канала field1 в реальном времени (возможно ли вообще это сделать?) либо (что в действительности работает, но создает кучу неприятностей) создавать второй канал с тем же именем field1, но уже иными настройками I0 и I1.
Какой более разумный способ вы можете предложить для подстановки значения одного и того же канала в различные SQL-запросы?

2. Необходимо выполнить два запроса:
1) SELECT * FROM
2) UPDATE
Оба запроса относятся к одной и той же таблице.
Для того, чтобы по первому запросу были получены данные необходимо иметь каналы с именами, совпадающими с названиями полей таблицы и имеющие подтип ПУСТОЙ и дополнение in_null.
Для того, чтобы выполнить второй запрос и данные были переданы в таблицу необходимо иметь каналы подтипа ПУСТОЙ с дополнением SQL_для_вставки с именами, совпадающими с именами полей в таблице.
В итоге получается, что необходимо иметь каналы с одинаковыми именами, но разными типами.
Есть ли какой-нибудь другой способ?

3. Иметься запрос:
UPDATE Tab1 SET field1=1 WHERE field2=###
Все выполняется замечательно и вместо ### подставляется значение канала. Но как только записать запрос в виде
UPDATE Tab1 WHERE field2=###
(канал field1 имеет дополнение SQL_для_вставки)
Происходит следующее. ODBC-драйвер Trace Mode выдает следующий запрос
UPDATE Tab1 SET field1=1 WHERE field2=###
Не происходит подстановка вместо ### значения канала field2
Чем это вызвано?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Для каналов SQL_where действительно существует данное ограничение о необходимости совпадения его настроек с настройками канала, инициализирующего запрос. Используемый Вами способ является на данный момент единственным.
2. К сожалению, на данный момент другого способа нет. В следующих версиях системы предполагается значительное усовершенствование существующего механизма.
3. Указанная Вами особенность формирования запроса локализована. Это ошибка. Запись по ней занесена в базу для корректировки.
 
Posted by Sergey_K (Участник № / Member № 136) on :
 
Не могли бы Вы тогда подсказать каким образом мне выполнить следующие запросы. Необходимо вывести число из базы данных с возможностью ручной корректировки значения в базе данных, а затем это исправленное число снова вывести на экран.
SELECT * FROM Tab WHERE field1=###
UPDATE Tab WHERE field1=###
Вместо field1=###, во втором случае, соответственно не происходит подстановка значения канала. Желательно, если возможно, выслать примерчик для работы с базой данных(например Access) на адрес Ligor@newmail.ru.
 
Posted by Sergey_K (Участник № / Member № 136) on :
 
Извините, у меня с ящиком возникли проблемы, если будете что-то высылать, то используйте следующий адрес Ligor@ukrpost.net.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1.Согласно спецификации инструкции UPDATE, Вам обязательно необходимо указывать предложение SET вместе с указанием перечня столбцов для обновления.
2.Пример решения Вашей задачи выслан на указанный адрес.
3.Данный раздел содержит темы, объединенные под названием: "Архивирование в TRACE MODE / Data Logging in Trace Mode".
В дальнейшем, вопросы связанные с затронутой Вами темой, будет корректнее задавать в разделе: "Работа в MS Windows ODBC/DDE/OPC/NET) / Working under MS Windows"
 
Posted by Sergey_K (Участник № / Member № 136) on :
 
Проект получил, спасибо за помощь. Очень помогли.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2