Добрый день! 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".