This is topic ГЭ "База данных" in forum Операторский интерфейс SCADA/HMI TRACE MODE 6 / at Форум TRACE MODE: техническая поддержка.


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

Posted by Eman1982 (Участник № / Member № 5619) on :
 
Добрый день!
Xочу отображать данные из БД MS SQL в виде таблицы.
Для этого существуют ГЭ "База данных"(РП, стр 278-279)
Я ожидал, что функционал такого БД будет в целом примерно равен аналогичному компоненту в Делфи или С++ Билдер.
Но, кажется это не так.

Можно ли задавать столбцам получившейся таблицы русские названия вместо названий типа t20minval.dt, полученных от самой таблицы бд?
Можно ли задавать форматирование столбцов типа float в столбцах(кол-во знаков после запятой)?
Можно ли заполнение ГЭ делать не по стандартной кнопке ГЭ, а по другой, которую я назову, допустим "Суточные значения"?

Если нет, если этот ГЭ действительно никакой по функционалу, можно ли организовать вывод данных из БД в виде таблицы каким-то другим способом?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Имена столбцов в ГЭ «База данных» образуются как «имя таблицы БД».«имя столбца в таблице». Кириллица поддерживается.
2. Настройки, позволяющей изменить количество знаков после запятой, у этого ГЭ нет.
3. Данные в ГЭ "База данных" обновляются только по нажатию на кнопку «Запрос».

Можно сделать таблицу из ГЭ «Текст».
Если в МРВ есть поддержка документирования, то можно формировать таблицу в html-файле и выводить ее на экран через ГЭ «Текст из файла».
 
Posted by Eman1982 (Участник № / Member № 5619) on :
 
Спасибо за информацию.
А можно ли использовать какой-нибудь ActiveX DBGrid? Я пробовал прикрутить дбгрид от VB6, не получается- проект выбивает.
если ActiveX DBGrid можно использовать, то какой бы вы порекомендовали?

Если придется делать таблицу из ГЭ текст, то как отбратиться к конкретной строке результата запроса Select?
Допустим, нужно получить данные по 31 дню.
делаю запрос SELECT по дате за, допустим, январь.
В Call.SQLQuery сохраняется 31 запись из БД.
Как тогда привязать ГЭ Текст к каждой конкретной записи выборки?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. У нас нет этого ActiveX, но если Вы вышлите его нам на почту, то мы попытаемся разобраться в чем проблема.

2. Если объем выборки постоянен, то нужно делать групповой SQL-запрос, результат которого будет получен в аргументах канала Call.ChGroupReq. Затем к аргументам канала вызова экрана привязать аргументы канала Call.ChGroupReq.
 
Posted by Eman1982 (Участник № / Member № 5619) on :
 
Вы писали:
---
Если в МРВ есть поддержка документирования, то можно формировать таблицу в html-файле и выводить ее на экран через ГЭ «Текст из файла».
---
Но в РП (14 издание) в 1т., стр. 387 "Конфигурирование табличных значений" написано, что вывод в столбец архивных значений предусмотрен только из SIAD.

Так все-таки, можно выводить в таблицу отчета данные из MS SQL или только из SIAD?
Мне отчеты тоже нужно формировать, для того мы и купили ДокМРВ+.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Удобней работать с электронной справочной системой Trace Mode.

2. Подразумевалось использование механизма SubNum, который позволяет в табличной форме вывести аргументы каналов Call в документ.

Посмотрите демо-проект "Из БД в документ", выложенный в разделе "Тестовые примеры".
 
Posted by Eman1982 (Участник № / Member № 5619) on :
 
По вашему совету организовал DBGrid из ГЭ текст.
Каждый ГЭ Текст привязал к аргументу канала Call.ChGroupReq.

Все работает неплохо. Но только в том случае, если в результате Select получилась выборка с количеством строк большим или равным количеству аргументов Call.ChGroupReq.

В случае, если в результате Select получилось выбрать меньшее количество строк, чем аргументов Call.ChGroupReq(например, если нет данных удовлетворяющих select... where....) то на входе Call.SQLQuery базы данных(параметр In,2) так и висит число 65535. То есть SQL-запрос никогда не закончится.

Что делать в такой ситуации?
 
Posted by Nico (Участник № / Member № 5342) on :
 
Call.ChGroupReq число аргументов меняется и соответствует числу выбранных строк
выводить удобнее через subnum !

[ 24.04.2012, 11:28: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by Eman1982 (Участник № / Member № 5619) on :
 
Nico, видно вы уже сталкивались с подобной ситуацией, расскажите подробнее.
Вот вы говорите, что число аргументов Call.ChGroupReq меняется само.

Как такое может быть, если я сам на закладке "Аргументы" в канале создаю необходимое мне количество аргументов?

Вы говорите, удобнее использовать subnum.
Как технически это сделать? Вот с Call.ChGroupReq понятно- создал в нем нужное кол-во аргументов. Привязал каждый ГЭ Текст к нужному аргументу и все работает нормально.

Но только, судя по опытам, в том случае, если выбранных строк столько же или больше, чем кол-во аргументов Call.ChGroupReq.

Если выбранных по select строк меньше, происходят всякие глюки. Еще заметил- в случае, если выбранных строк меньше аргументов, в файле <Имя проекта.txt> создаются записи типа:
(11:34:29) WRN_RTM:wrong entry(g)
(11:34:30) WRN_RTM:wrong entry(g)
(11:34:30) WRN_RTM:wrong entry(g)

И записи эти всё пишутся и пишутся, пока запущен профайлер с проектом, в котором произошла вышеописанная ситуация.
Это. кстати, грозит тем, что растущий файл забъет собой весь винчестер....
 
Posted by Nico (Участник № / Member № 5342) on :
 
У Call.ChGroupReq число аргументов меняется автоматом в последних релизах
 
Posted by Eman1982 (Участник № / Member № 5619) on :
 
Если меняется автоматом, значит нельзя использовать ГЭ "Текст" для формирования таблицы, как рекомендует Модератор.
По вышеописанным мною причинам. Так?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Ошибка возникает из-за того, что некоторые из аргументов канала вызова экрана ссылаются на аргументы канала Call.ChGroupReq, которых не существует (количество аргументов в канале Call.ChGroupReq изменяется в зависимости от объема выборки).

В тех случаях, когда объем выборки непостоянен, использовать таблицу заранее заданного размера не вполне корректно. В таких ситуациях правильным решением является вывод таблицы на экран из документа, который будет формироваться с помощью механизма SubNum.

Механизм SubNum имеет очень широкий функционал, который позволяет создавать в документе таблицы различной формы. Размер этих таблиц будет изменяться в зависимости от числа аргументов каналов Call. Смотрите раздел справочной системы "Номер SubNum".
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2