Как обратиться в значению компанентa Text1

Обсуждение Stimulsoft Reports.NET
Ответить
aquilax
Сообщения: 78
Зарегистрирован: 19 май 2016, 16:17

Как обратиться в значению компанентa Text1

Сообщение aquilax »

Как обратиться в значению компанентa Text1 при задании выражения для Text2?
:D
У меня есть два текстовых компонента на странице Text1 и Text2.
В первом выводится буква "В" или буква "Я" или компонент остается пустым в зависимости от дня недели
(мы пытаемся создать табель). (рис. прикреплен)
Во втором текстовом компоненте необходимо выполнить алгоритм :
Если Text1 - это пустое поле, то к переменной SUM прибавляем единицу и выводим ее в Text2, если в Text1 - буква, то ничего не делаем.
Я не могу догнать, как во втором текстовом компоненте обратиться к первому?

В дальнейшем у меня будет аж 30 ячеек, подобных Text1, и в Text2 нужно будет пройти по всем ним и отразить такую сумму - переменную SUM

Подскажите, пожалуйста, я впервые сталкиваюсь в программными элементами в Стимулсофте, не могу понять как и где их применять. :)
Вложения
Скриншот 16-08-2016 152608.jpg
Скриншот 16-08-2016 152608.jpg (3.88 КБ) 5038 просмотров
Скриншот 16-08-2016 152550.jpg
Скриншот 16-08-2016 152550.jpg (76.67 КБ) 5038 просмотров
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Как обратиться в значению компанентa Text1

Сообщение HighAley »

Здравствувйте.

Хочу сразу вам пояснить, что существует два типа компонентов. Один компонент -- это компонент шаблона отчёта. Он содержит выражение и получить какое-либо зхначение здесь невозможно.
Второй тип компонента -- это компонент построенного отчёта. Они собержат конечное значение, но таких компонентов может быть очень много.

Поэтому единственный выход это получить значение в процессе построения отчёта.

Есть несколько вариантов, чтобы получит значение текстового компонента.

1. Это использовать такое же выражение. Это самый простой и очевидный вариант. Подходит при простых выражениях.

2. Сохраянть значение в переменную. Это вариант для случая, когда надо просуммировать какие-то значения, но можно и использовать значение переменной в других компонентах. Выражение может иметь следующий вид:

Код: Выделить всё

{Variable1 = DataSource1.Columnn1}
Значение будет присвоено и переменной, и компоненту.

3. Значение можно получить в событии Get Value. Ho значение будет уже в виде строки.

4. Более сложный вариант. В некоторых случаях только этот вартант помогает выйти из положения. Особенно когда надо изменить значение компонента, который уже помтроен.
Это захранить sender в событии Get Value в переменную типа object. Это будет ссылка наконкретный экземпляр построенного отчёта. После этого можно обращаться к этому экземпляру и изменять его значение.

Можно хранить значения в переменной типа List, создавать HashTable с компонентами их значениями и т.д.

Надеюсь один из вариантов вам подойдёт.

Спасибо.
aquilax
Сообщения: 78
Зарегистрирован: 19 май 2016, 16:17

Re: Как обратиться в значению компанентa Text1

Сообщение aquilax »

Спасибо за развернутый ответ!

Мне показалось, что можно поиграть с выражениями и максимально упростить логику, чтобы не влезать в GetValue и прочие премудрости.
вроде бы даже красиво всё бы работало, но возникла проблема.
Как в ячейке Text ничего не выводить, но при этом произвести операцию SUM=SUM+1

Приведу упрощенный пример проекта во вложении.

В ячейках написаны выражения, где в зависимости от даты, выводится "0" (в выходной) или НУЖНО ВЫВОДИТЬ "" (null) в будний день и произвести суммирование SUM=SUM+1. Но при такой записи это не работает, суммирование происходит абсолютно всегда, даже если выражение попадает под другое условие - под выходной. А если попадает под условие буднего дня, то надо просуммировать и вывести в ячейку "" , что никак не получается.

В крайней правой ячейке, которая стоит отдельно, выводим саму переменную SUM (по сути это сумма пустот).

Сейчас там выводится 3, а мне при текущих входных параметрах надо получить там 1

Подскажите, как заставить работать код правильно?
Вложения
test_tabel1.mrt
(10.16 КБ) 446 скачиваний
aquilax
Сообщения: 78
Зарегистрирован: 19 май 2016, 16:17

Re: Как обратиться в значению компанентa Text1

Сообщение aquilax »

Уважаемые, гуру, подскажите, пожалуйста! :) Растолкуйте...
У меня никак не получается решить эту задачу. :(
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Как обратиться в значению компанентa Text1

Сообщение HighAley »

Здравствуйте.

Все аргументы функций вычисляются перед её вызовом.
Попробуйте использовать событие Before Print компонентов.
Там вы можете писать любой код для суммирования.

Спасибо.
aquilax
Сообщения: 78
Зарегистрирован: 19 май 2016, 16:17

Re: Как обратиться в значению компанентa Text1

Сообщение aquilax »

А вы не могли бы подсказать, как именно в свойстве Before Print, скажем, компонента Text2, сделать проверку, какое значение у Text1, что-то вроде:
if (this.Text1.Text=="X") { }
Но наверное, я неправильно обращаюсь к Text1.Text, потому что это не работает.

Благодарю за помощь!
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Re: Как обратиться в значению компанентa Text1

Сообщение Jan »

Здравствуйте.

В данном случае, нужно обратиться или к выражению, которое выичсляется в свойстве Text. Например, if (Customers.Name == "X"). Или воспользоваться событием GetValue компонента текст:

if (e.Value == "X")...

Спасибо.
Ответить