PDA

Просмотр полной версии : Проблема с отчетом



Ильнур
06.11.2012, 18:46
Не могу разобраться, как сделать отчет, у которого перед формированием отчета была возможность выбрать колонки для отчета.Взял пример Демо-отчеты.Сделал все как в примере.Т.е. создал отчет с названием пример, создал форму, где выбирается колонки, но при выборе колонок все выводится не как в примере.Что еще надо сделать, чтобы было как примере?Пример Демо-Отчеты с добавленным отчетом с назавнием "Пример"

SCADAMaster
06.11.2012, 19:45
У вас неправильно написан код в обработке нажатия кнопки.
Также у компонентов нужно установить стиль стыковки "Слева".
Пример в приложении

Ильнур
10.11.2012, 19:54
Спасибо!!!у компонентов установил стиль стыковки "Слева", и все прошло.И еще хотел задать вопрос.Поместил на форму (где выбирается также колонки для вывода)2 элемента "Выбор даты".Как их можно связать с "начало" и "конец" отчета. Т.е. для выбора даты начала и конца отчета.Пробывал в редактор событий делать так: перетаскивал Начало в редакторе т.е.
Данные.Parameters["Начало"].ParameterValue = DateTime1, не помогало.

SCADAMaster
10.11.2012, 20:22
Создайте переменную "Начало", установите связь между этой переменной и параметром источника "Начало" - выделите параметр "Начало", перейдите на закладку "Свойства", удалите связь, включите режим "Функция" и введите имя переменной.
Переменной "Начало" и присваивайте значений из элемента "Выбор даты".

Ильнур
10.11.2012, 20:37
Сделал так: установил связь с переменной, затем эту связь удалил, функцию выставил в true. В пункте значение прописал Данные.Parameters["Начало"].ParameterValue = DateTime1.Не помогло.

SCADAMaster
11.11.2012, 09:01
Мы вам написали как нужно сделать.
Создайте переменную в отчете, ее свяжите с параметром "Начало", и значение времени присваивайте этой переменной.
Пример в приложении.

Ильнур
11.11.2012, 17:10
Спасибо за помощь!

mar154
05.12.2012, 21:20
Доброго времени суток.

Подскажите возможно ли средствами master report сделать следующее:

Формируем отчет о переодическом процессе (это получилось) в виде:

Рецепт / количество кубов

М100 / 3
M350 / 5
M350 / 1
M200 / 2
M100 / 1


А потом автоматически ее обработать до вида:

М100 / 4
M350 / 6
M200 / 2

Какой инструмент применить?

SCADAMaster
06.12.2012, 18:03
Для этого есть специальные бэнды "Заголовок группы" и "Итог группы".
Пример в приложении.

mar154
10.12.2012, 23:32
Спасибо,все получилось.Вы мне очень помогли.

mar154
16.12.2012, 12:19
Заметил одну особенность при формировании графика(диаграммы) в отчете при просмотре отчета через саму скада формат времени 24 часа.
Если конвертировать отчет в формат xls, то при открытии в excel на графиках уже формат времени AM ,PM.

Можно ли сохранить формат времени 24 часа для графиков в excel?

SCADAMaster
16.12.2012, 13:08
Попробуйте задать принудительный формат заголовков Оси Х (Диаграмма - Область - Ось Х - Заголовки - Формат), например dd.MM.yyyy HH:mm:ss

mar154
16.12.2012, 19:04
пробовал,та же ситуация.
В конвертации в pdf все хорошо.

SCADAMaster
16.12.2012, 19:11
Посмотрите в настройках Windows - Язык и региональные стандарты - вставлен ли у вас там в разделе "Региональные параметры" "Русский" и его настройки.

dav1977
17.04.2013, 15:06
Подскажите почему отчет по переменным Начало и Конец работает только за 1 сутки. При выборе периода больше отчет зависает

SCADAMaster
17.04.2013, 15:22
Вообще должен работать и за больший интверал. Если конечно у вас очень много данных, то его построение может занять время.
Пришлите ваш проект, выполните Проект - Экспортировать.

dav1977
18.04.2013, 17:31
Проект создан на базе учебного.
Подскажите как связывается флажек с отчетом. Откуда берутся переменные cbQ, cbT и т.д. Как создать свои флажки?
Не могу закачать одним файлом только тремя. Спасибо

SCADAMaster
18.04.2013, 17:59
Подскажите почему отчет по переменным Начало и Конец работает только за 1 сутки. При выборе периода больше отчет зависает
У нас ваш отчет построился, но его объем составляет почти 50 страниц. Вы уверены что вам нужен суточный отчет с шагом в 20 секунд?


Подскажите как связывается флажек с отчетом. Откуда берутся переменные cbQ, cbT и т.д. Как создать свои флажки?

cbQ и cbT это не переменные - это название checkbox (флажка проще говоря).
Чтобы добавить свой флажок, перейдите на закладку "Форма" - в левой части будут компоненты которые можно добавить на форму.

dav1977
19.04.2013, 17:52
У нас ваш отчет построился, но его объем составляет почти 50 страниц. Вы уверены что вам нужен суточный отчет с шагом в 20 секунд?


Строится то он и у меня за сутки. А вы попробуйте изменить день например с 21 числа по 25 число одного месяца. Шаг любой хоть 3600 сек (раз в час) и форма уже не открывается все висит. в чем проблема объем выборки не большой, а все равно висит?



cbQ и cbT это не переменные - это название checkbox (флажка проще говоря).
Чтобы добавить свой флажок, перейдите на закладку "Форма" - в левой части будут компоненты которые можно добавить на форму.

Как добавить интуитивно понятно. А как связать с данными и чтобы они фильтровались по флажку не понятно объясните пожалуйста?

SCADAMaster
19.04.2013, 19:13
Строится то он и у меня за сутки. А вы попробуйте изменить день например с 21 числа по 25 число одного месяца. Шаг любой хоть 3600 сек (раз в час) и форма уже не открывается все висит. в чем проблема объем выборки не большой, а все равно висит?

Мы попробовали построить отчет за 15 дней, отчет построился примерно за 1 минуту. Количество страниц - 15.
Но как мы обнаружили без формы отчет строится гораздо быстрее - примерно вдвое.
Может быть вам задавать какие ячейки выводить не в форме отчета, а в окне мнемосхемы? В приложении ваш же проект, где необходимость вывода той или иной строки определяется при помощи команд в дереве объектов (их можно связать например с контролом "Поля выбора").



Как добавить интуитивно понятно. А как связать с данными и чтобы они фильтровались по флажку не понятно объясните пожалуйста?
Там не совсем данные фильтруются - там скрывается отключенное поле на бэнде.
У события кнопки есть такой код:
Заголовок_данныхИсточникДанных1_Время.Enabled = cbTime.Checked;
Заголовок_данныхИсточникДанных1_Расход1__Расход_1_ .Enabled = cbQ.Checked;
Заголовок_данныхИсточникДанных1_Температура1__Темп ература_1_.Enabled = cbT.Checked;
Заголовок_данныхИсточникДанных1_Давление1__Давлени е_1_.Enabled = cbP.Checked;
Заголовок_данныхИсточникДанных1_Расход2__Расход_2_ .Enabled = cbQ.Checked;
Заголовок_данныхИсточникДанных1_Температура2__Темп ература_2_.Enabled = cbT.Checked;
Заголовок_данныхИсточникДанных1_Давление2__Давлени е_2_.Enabled = cbP.Checked;

ДанныеИсточникДанных1_Время.Enabled = cbTime.Checked;
ДанныеИсточникДанных1_Расход1__Расход_1_.Enabled = cbQ.Checked;
ДанныеИсточникДанных1_Температура1__Температура_1_ .Enabled = cbT.Checked;
ДанныеИсточникДанных1_Давление1__Давление_1_.Enabl ed = cbP.Checked;
ДанныеИсточникДанных1_Расход2__Расход_2_.Enabled = cbQ.Checked;
ДанныеИсточникДанных1_Температура2__Температура_2_ .Enabled = cbT.Checked;
ДанныеИсточникДанных1_Давление2__Давление_2_.Enabl ed = cbP.Checked;


double width = 0;

foreach (StiComponent comp in ДанныеИсточникДанных1.Components)
{
if (comp.Enabled)width += comp.Width;
}

double factor = width / ДанныеИсточникДанных1.Width;
foreach (StiComponent comp in ДанныеИсточникДанных1.Components)
{
if (comp.Enabled)comp.Width /= factor;
}

foreach (StiComponent comp in Заголовок_данныхИсточникДанных1.Components)
{
if (comp.Enabled)comp.Width /= factor;
}

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

dav1977
21.04.2013, 12:43
Но как мы обнаружили без формы отчет строится гораздо быстрее - примерно вдвое.
Может быть вам задавать какие ячейки выводить не в форме отчета, а в окне мнемосхемы? В приложении ваш же проект, где необходимость вывода той или иной строки определяется при помощи команд в дереве объектов (их можно связать например с контролом "Поля выбора").





В приложенном проекте этот код, с небольшими изменениями, перенесен в событие "Начало построения" отчета.


1 Спасибо идею понял, подскажите а где в вашей версии проекта находится код(где искать событие Начало построения отчета), как его открыть на редактирование?

2 А можно как-то ограничить объем выборки, если вдруг оператор забъет большой период, что бы не было зависания.

SCADAMaster
21.04.2013, 16:29
1 Спасибо идею понял, подскажите а где в вашей версии проекта находится код(где искать событие Начало построения отчета), как его открыть на редактирование?

Щелкаете в свободном месте отчета, переходите на закладку "События". Скриншот в приложении.




2 А можно как-то ограничить объем выборки, если вдруг оператор забъет большой период, что бы не было зависания.
Можно например ограничивать при помощи модуля "Расчет". Если между Концом и началом время больше допустимого, то выдаем на выход расчета наименьшее допустимое.
Формула примерно такая (ограничение - 90 дней)
ЕСЛИ (Конец - Начало>3*30*24*3600,Конец - 3*30*24*3600, Начало )

Еще можно использоват ФБ "Скрипт C#" - с его помощью можно также определить что диапазон превысил допустимый и выдать на выход нужную дату.

dav1977
17.05.2013, 09:45
Подскажите как изменить,убрать следущие ошибки?

dav1977
17.05.2013, 11:40
Формула примерно такая (ограничение - 90 дней)
ЕСЛИ (Конец - Начало>3*30*24*3600,Конец - 3*30*24*3600, Начало )

Еще можно использоват ФБ "Скрипт C#" - с его помощью можно также определить что диапазон превысил допустимый и выдать на выход нужную дату.

А дальше что, мы получили новую переменную(тип время) и она никуда не подцепляется ?

SCADAMaster
17.05.2013, 12:10
Подскажите как изменить,убрать следущие ошибки?
Выдается ошибка что значение не может быть вычислено. Возможно вы не определили константу у какой то переменной.
Приложите ваш проект


А дальше что, мы получили новую переменную(тип время) и она никуда не подцепляется ?
Именно эта переменная и будет переменной конца. Именно ее и нужно связывать с соответствующей переменной в источнике данных.
Эта переменная будет ограничивать временной диапазон.

dav1977
17.05.2013, 18:06
Выдается ошибка что значение не может быть вычислено. Возможно вы не определили константу у какой то переменной.
Приложите ваш проект



Спасибо разобрался небыл задан источник данных.
Новая проблема перестал работать интервал (привязка есть), а все равно измерение раз в мс. Посмотрите пожалуйста.

SCADAMaster
17.05.2013, 19:08
У вас в настройках источника данных стоит способ формирования "По изменению" - в этом случае строка формируется при каждом изменении переменной, а параметр "Интервал" игнорируется