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

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » SIAD/SQL. Архивирование в TRACE MODE / SIAD/SQL. Data Logging in TRACE MODE » Работа с несколькими строками выборки

   
Автор / Author Тема / Topic: Работа с несколькими строками выборки
Usr
Junior Member / Новичок
Участник № / Member № 4363


Icon 1 отправлено / posted      Профиль для / Profile for Usr           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Добрый день, уважаемая поддержка!

Задача звучит так:

необходимо сделать Select из БД. В результате запроса должны будут получиться несколько строк, которые я друг за другом хотел бы поместить в отчет (в один html файл, таблица из нескольких значение в шаблоне документов) с помощью программы или как нибудь иначе(если посоветуете).

Вопрос один: http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/40/t/000034.html - тут сказано что можно получить несколько строк, как это сделать?

В хелпе есть пункт "Выполнение SQL-запросов в реальном времени"->"Извлечение строк". Не понятно, если для выполнения запроса в программе я должен написать CALL.SQLQuery.In=0xFFFF, то какой должен быть входной параметр у программы?

Вопрос 2: если все таки удастся осуществить вопрос один, то, чтобы подряд перебрать все строки, которые вернулись после запроса, мне нужно общее их количество, где мне взять его?

Вопрос 3: аналогично тому, как описано в вопросе 1, как осуществить генерацию документа из программы?

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


Icon 1 отправлено / posted      Профиль для / Profile for NestorIT           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
На первые два вопроса попробую ответить вместо ТП.

Необходимо:
1. шаблон БД с одним запросом (SELECT...), который возвращает много строк
2. канал типа CALL с типом вызова SQLQuery, вызывающий вышеуказанный шаблон БД (может быть получен автоматически перетаскиванием шаблона БД из предыдущего пункта в МРВ, н-р, в /Система/RTM_1/Каналы в навигаторе проекта если имена по умолчанию). Назовем его SQL_SELECT.
3. на каждый столбец выборки данных, возвращаемой запросом - канал типа CALL с типом вызова (дополнением) ChGroupReq. Для них надо создать N-аргументов (по max количеству извлекаемых в запросе строк) с типом данных, соответствующим типу параметра в шаблоне запроса и направлением IN.

Т.е. если запрос изначально был
code:
 SELECT a #A#, b #B# FROM T 

где параемтр шаблона вызова БД #A# скажем типа TIME, а #B# типа REAL, то создаем два канала CALL с типом вызова ChGroupReq, скажем, ChGroupReq_A и ChGroupReq_B, и для каждого из них создаем аргументы - для ChGroupReq_A с типом TIME, а для ChGroupReq_B - типом REAL. Именно в этих аргументах и будут располагаться извлекаемые данные.

4. Для канала CALL с типом вызова SQLQuery (см. п. 2. - SQL_SELECT) неоходимо аргументы связать со входными значениями каналов CALL с типом вызова ChGroupReq (см. п. 3.)

Т.е., продолжая пример, #А# канала SQL_SELECT с запросом связываем с ChGroupReq_A.ВходноеЗначение, #B# - с ChGroupReq_B.ВходноеЗначение

5. Когда необходимо получить данные из БД, то в канал с запросом (см. п. 2. - SQL_SELECT) во ВходноеЗначение посылаем 65535 или что то же самое 0xFFFF. Сделать это можно разными способами: хоть программа будет посылать это значение, хоть опреатор через "Ввести и передать" - неважно.

6. Как только в канале с запросом (SQL_SELECT) входное значение вернется в нулевое значение - запрос выполнен, в аргументах каналов ChGroupReq_A и ChGroupReq_B распологаются данные.
В атрибуте I1 канала SQL_SELECT - количество строк, в атрибуте I2 того же канала - код ошибки.

Сообщения / Posts 35 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Usr
Junior Member / Новичок
Участник № / Member № 4363


Icon 1 отправлено / posted      Профиль для / Profile for Usr           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо за информацию, все доступно объяснили)))
буду пробовать!

Сообщения / Posts 18 | Из / 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   Вставить в ответ текст исходного сообщения  / Reply With Quote 
NestorIT, спасибо.
Надо только уточнить:
"к аргументу канала CALL.SQLQuery, который используется в качестве подстановки в запросе, привязан атрибут 0, R канала CALL.ChGroupReq. "

По вопросу 3.
Для генерации документа программа должна записать во ВХОДНОЕ значение канала CALL, вызывающего шаблон документа, "ненулевого значения, при этом биты этого значения, установленные в 1, задают следующие опции:
бит 0 (0x1) – вывод на принтер;
бит 1 (0x2) – публикация на web-сервере (см. TRACE MODE Data Center );
бит 4 (0x10) – отображение жирных кривых (3 px) на трендах.

После отработки значение канала автоматически сбрасывается в 0."

В простейшем случае достаточно послать "1".

При этом значение атрибута ПАРАМЕТР канала CALL.Документ определит регламент и направление формирования файла документа.

Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Sapchag
Junior Member / Новичок
Участник № / Member № 4580


Icon 1 отправлено / posted      Профиль для / Profile for Sapchag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Уважаемая поддержка, можно получить такой же развернутый комментарий но для групповой записи.
Создал канал CALL.SQLQuery с типом OUT. К каждому аргументу запроса привязал по CALL.ChGroupReq. В которых создал по 8 аргументов направлением OUT. Этим 8 аргументам програмно присваиваю нужные значения, затем отправляю во входное значение CALL.SQLQuery 1. Записываются одни нули. Что делаю не так?

Сообщения / Posts 11 | Из / 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   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Перепроверили в релизе 6.07 и MS Access.
Создали канал CALL.SQLQuery с типом OUT с двумя аргументами, связанными со столбцами БД (не с ID (!)).
К каждому аргументу запроса привязали по CALL.ChGroupReq. В которых создали по 8 аргументов направлением OUT. Этим 8 аргументам каналов CALL.ChGroupReq присваивали произвольные значения.
Затем отправляли во входное значение CALL.SQLQuery 1. Записывалась 1 строка со значениями аргументов ARG_000 каналов CALL.ChGroupReq.
Затем отправляли во входное значение CALL.SQLQuery 8. Записывались 8 строк со значениями аргументов ARG_000- ARG_007 каналов CALL.ChGroupReq.

Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Sapchag
Junior Member / Новичок
Участник № / Member № 4580


Icon 1 отправлено / posted      Профиль для / Profile for Sapchag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Дъявол видимо как всегда кроется в деталях. Если возможно отправте вашу рабочую версию мне на мыло?
Сообщения / Posts 11 | Из / 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   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Отправлено.
Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Sapchag
Junior Member / Новичок
Участник № / Member № 4580


Icon 1 отправлено / posted      Профиль для / Profile for Sapchag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо получил. Запись пошла, но в поле с DATETIME пишутся 01.01.1970 08:00:00. Если вместо реального значения ChGroupReq, к базе данных привязать первый аргумент из ChGroupReq то значения пишутся нормальные. Версия релиза 6.06. База MS Access.
Сообщения / Posts 11 | Из / 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   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вы имеете в виду, что 1 из каналов ChGroupReq имел аргументы типа D&T и писал в свой столбец БД с таким же типов данных?
Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Sapchag
Junior Member / Новичок
Участник № / Member № 4580


Icon 1 отправлено / posted      Профиль для / Profile for Sapchag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Восемь аргументов ChGroupReq имеют тип D&T. Я привязал столбец БД с таким же типом данных к первому аргументу ChGroupReq. После этого стало писаться время указанное этом аргументе.
Сообщения / Posts 11 | Из / 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   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Мы обнаружили некоторое несоответствие в типах данных.
Пока, в качестве временного решения, задайте у соответствующего аргумента CALL.SQLQuery тип данных REAL.

Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Sapchag
Junior Member / Новичок
Участник № / Member № 4580


Icon 1 отправлено / posted      Профиль для / Profile for Sapchag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Можно поподробней как обойтись типом REAL? У меня не получилось.
Сообщения / Posts 11 | Из / 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   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Отправлен адаптированный пример.
Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Sapchag
Junior Member / Новичок
Участник № / Member № 4580


Icon 1 отправлено / posted      Профиль для / Profile for Sapchag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В отправленом примере к аргументам Date_and_time привязал время изменения битового меандра. Перестало работать. В трассировке видно, что вместо даты и времени отправляется 1. Можно пример где вместо констант, будт изменяемые значения. Хотя бы datatime.
Сообщения / Posts 11 | Из / 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   Вставить в ответ текст исходного сообщения  / Reply With Quote 
К аргументам каналов ChGroupReq, привязанных к аргументам CALL.SQLQuery, могут быть привязаны только атрибуты РЕАЛЬНОЕ других каналов.
Мы внесем дополнение в документацию.

В примере, посланном Вам, Вы можете привязать эти аргументы к атрибутам РЕАЛЬНОЕ каналов TIME.
Можно передать в эти аргументы значение D&T из экрана, программы, канала CALL.MOVE и т.д., но с привязкой на стороне источников этих параметров.

Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Sapchag
Junior Member / Новичок
Участник № / Member № 4580


Icon 1 отправлено / posted      Профиль для / Profile for Sapchag           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Все получилось спасибо!
Сообщения / Posts 11 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Alexander Novikov
Junior Member / Новичок
Участник № / Member № 5459


Icon 1 отправлено / posted      Профиль для / Profile for Alexander Novikov           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте! А можете мне тоже выслать данный пример? Заранее благодарен.
Сообщения / Posts 16 | Из / 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   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Отправлено.
Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / 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