Eman1982
Forum Member / Участник форума
Участник № / Member № 5619
отправлено / posted
Добрый день! Xочу отображать данные из БД MS SQL в виде таблицы. Для этого существуют ГЭ "База данных"(РП, стр 278-279) Я ожидал, что функционал такого БД будет в целом примерно равен аналогичному компоненту в Делфи или С++ Билдер. Но, кажется это не так.
Можно ли задавать столбцам получившейся таблицы русские названия вместо названий типа t20minval.dt, полученных от самой таблицы бд? Можно ли задавать форматирование столбцов типа float в столбцах(кол-во знаков после запятой)? Можно ли заполнение ГЭ делать не по стандартной кнопке ГЭ, а по другой, которую я назову, допустим "Суточные значения"?
Если нет, если этот ГЭ действительно никакой по функционалу, можно ли организовать вывод данных из БД в виде таблицы каким-то другим способом?
Сообщения / Posts 45 | Из / From: Ukraine
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Имена столбцов в ГЭ «База данных» образуются как «имя таблицы БД».«имя столбца в таблице». Кириллица поддерживается. 2. Настройки, позволяющей изменить количество знаков после запятой, у этого ГЭ нет. 3. Данные в ГЭ "База данных" обновляются только по нажатию на кнопку «Запрос».
Можно сделать таблицу из ГЭ «Текст». Если в МРВ есть поддержка документирования, то можно формировать таблицу в html-файле и выводить ее на экран через ГЭ «Текст из файла».
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Eman1982
Forum Member / Участник форума
Участник № / Member № 5619
отправлено / posted
Спасибо за информацию. А можно ли использовать какой-нибудь ActiveX DBGrid? Я пробовал прикрутить дбгрид от VB6, не получается- проект выбивает. если ActiveX DBGrid можно использовать, то какой бы вы порекомендовали?
Если придется делать таблицу из ГЭ текст, то как отбратиться к конкретной строке результата запроса Select? Допустим, нужно получить данные по 31 дню. делаю запрос SELECT по дате за, допустим, январь. В Call.SQLQuery сохраняется 31 запись из БД. Как тогда привязать ГЭ Текст к каждой конкретной записи выборки?
Сообщения / Posts 45 | Из / From: Ukraine
| IP / IP: IP адрес / IP address |
отправлено / posted
1. У нас нет этого ActiveX, но если Вы вышлите его нам на почту, то мы попытаемся разобраться в чем проблема.
2. Если объем выборки постоянен, то нужно делать групповой SQL-запрос, результат которого будет получен в аргументах канала Call.ChGroupReq. Затем к аргументам канала вызова экрана привязать аргументы канала Call.ChGroupReq.
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Eman1982
Forum Member / Участник форума
Участник № / Member № 5619
отправлено / posted
Вы писали: --- Если в МРВ есть поддержка документирования, то можно формировать таблицу в html-файле и выводить ее на экран через ГЭ «Текст из файла». --- Но в РП (14 издание) в 1т., стр. 387 "Конфигурирование табличных значений" написано, что вывод в столбец архивных значений предусмотрен только из SIAD.
Так все-таки, можно выводить в таблицу отчета данные из MS SQL или только из SIAD? Мне отчеты тоже нужно формировать, для того мы и купили ДокМРВ+.
Сообщения / Posts 45 | Из / From: Ukraine
| IP / IP: IP адрес / IP address |
Eman1982
Forum Member / Участник форума
Участник № / Member № 5619
отправлено / posted
По вашему совету организовал DBGrid из ГЭ текст. Каждый ГЭ Текст привязал к аргументу канала Call.ChGroupReq.
Все работает неплохо. Но только в том случае, если в результате Select получилась выборка с количеством строк большим или равным количеству аргументов Call.ChGroupReq.
В случае, если в результате Select получилось выбрать меньшее количество строк, чем аргументов Call.ChGroupReq(например, если нет данных удовлетворяющих select... where....) то на входе Call.SQLQuery базы данных(параметр In,2) так и висит число 65535. То есть SQL-запрос никогда не закончится.
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
Call.ChGroupReq число аргументов меняется и соответствует числу выбранных строк выводить удобнее через subnum !
[ 24.04.2012, 11:28: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
Сообщения / Posts 875 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Eman1982
Forum Member / Участник форума
Участник № / Member № 5619
отправлено / posted
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)
И записи эти всё пишутся и пишутся, пока запущен профайлер с проектом, в котором произошла вышеописанная ситуация. Это. кстати, грозит тем, что растущий файл забъет собой весь винчестер....
Сообщения / Posts 45 | Из / From: Ukraine
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
У Call.ChGroupReq число аргументов меняется автоматом в последних релизах
Сообщения / Posts 875 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Eman1982
Forum Member / Участник форума
Участник № / Member № 5619
отправлено / posted
Если меняется автоматом, значит нельзя использовать ГЭ "Текст" для формирования таблицы, как рекомендует Модератор. По вышеописанным мною причинам. Так?
Сообщения / Posts 45 | Из / From: Ukraine
| IP / IP: IP адрес / IP address |
отправлено / posted
Ошибка возникает из-за того, что некоторые из аргументов канала вызова экрана ссылаются на аргументы канала Call.ChGroupReq, которых не существует (количество аргументов в канале Call.ChGroupReq изменяется в зависимости от объема выборки).
В тех случаях, когда объем выборки непостоянен, использовать таблицу заранее заданного размера не вполне корректно. В таких ситуациях правильным решением является вывод таблицы на экран из документа, который будет формироваться с помощью механизма SubNum.
Механизм SubNum имеет очень широкий функционал, который позволяет создавать в документе таблицы различной формы. Размер этих таблиц будет изменяться в зависимости от числа аргументов каналов Call. Смотрите раздел справочной системы "Номер SubNum".
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |