Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с передачей массива в отчет [D7, XP]


madmech ©   (2009-04-24 16:35:00) 

Добрый день, дамы и господа! Помогите, пожалуйста, передать двумерный динамический массив в отчет FastReport4 с целью дальнейшего его использования в скрипте. С обычной переменной все просто, как я понимаю, это надо делать следующим образом:
 Report.Script.Variables['a'] := a;

Где a - некая переменная, например, типа integer. Но как быть с массивом?


madmech   (2009-04-29 16:30:00) [1]

Проблема решена с помощью занесения двумерного массива в одномерный с последующей передачей одномерного массива variantв отчет. Всё!


madmech   (2009-04-28 14:58:00) [2]

Имеется в виду то, что я хочу использовать данные, находящиеся в первом кросс-табе, в одном из обработчиков второго кросс-таба, лежащего в том же отчете, что и первый кросс-таб. Чтоб не усложнять себе жизнь с передачей двумерного массива в отчет. Это возможно?


AndreyV   (2009-04-28 13:19:00) [3]

> [17] madmech ©   (28.04.09 12:49)
> А я могу как-нибудь в коде скрипта обращаться к данным,
> находящимся в другом кросс-отчете?

Что значит "в другом кросс-отчете" - fr3 или CrossTab?


madmech   (2009-04-28 12:49:00) [4]

А я могу как-нибудь в коде скрипта обращаться к данным, находящимся в другом кросс-отчете?


AndreyV   (2009-04-26 21:46:00) [5]

> [15] madmech ©   (26.04.09 18:03)
> Я могу обращаться
> напрямую к моему модулю типа:
> if Manual2.MainForm.a_Sq[i, j] = 0 then
> Memo1.Color := clRed;

Сделай внешнюю пременную или внешнюю функцию GetElement(i, j) см. документацию, вроде это в "Руководство программиста".


madmech   (2009-04-26 18:03:00) [6]

И все же, оказывается, проблема остается актуальной, только теперь в связи с другой задачей: как передать в отчет ДВУХМЕРНЫЙ массив? Нужно смотреть значения одной матрицы из основного модуля, и в зависимости от этих значений раскрашиваться соответствующим образом таблицу (кросс-таб). Я могу обращаться напрямую к моему модулю типа:
if Manual2.MainForm.a_Sq[i, j] = 0 then
 Memo1.Color := clRed;


madmech   (2009-04-26 13:01:00) [7]

Всё, проблему решил на раз, стоило только еще раз заглянуть в мануал и внимательно прочитать первые несколько страниц, касающиеся кросс-табов. Просто у меня после первого прочтения и быстрого изучения возникла каша в голове, но сейчас я привел свои мысли в порядок. ;)
Всем спасибо, все свободны, тему можно закрывать. :)


AndreyV   (2009-04-24 21:27:00) [8]

> [10] madmech ©   (24.04.09 17:43)
> А как мне прикажете строить кросс-отчет в дезайн-тайме на
> основе ДатаСета, используя DB Cross-Tab? У меня же на этапе
> разработки ни одного поля еще нет.

А что же есть тогда?

Строй исходный ДатаСет в длину, см. ещё раз Руководство, которое ты уже изучил.

поле1 поле2 поле3
1     а     10
1     б     100
2     а     20
2     б     200
2     в     300
3     а     30
4     г     40

Получишь

     а    б     в    г
1
2
3
4

Посчитай сам, а лучше ФР доверь.


Сергей М.   (2009-04-24 19:46:00) [9]

Я невижу никакойпроблемы.
И если ты читая UM не нашел решения, то значит ты его не читал.


madmech   (2009-04-24 17:47:00) [10]

А к Руководству Пользователя можете меня не отсылать. Я его подробнейшеизучил и не нашел решения своей проблемы, которую изложил в предыдущем посте.


madmech   (2009-04-24 17:43:00) [11]

А как мне прикажете строить кросс-отчет в дезайн-тайме на основе ДатаСета, используя DB Cross-Tab? У меня же на этапе разработки ни одного поля еще нет. Именно поэтому я решил использовать просто Cross-Tab, чтобы можно было его врукопашнуюзаполнить данными из массива в процессе работы программы. Если подскажете, как можно заполнять DB Cross-Tabданными из ДатаСета, используя скрипт, в ран-тайме, буду премного благодарен. :)


Сергей М.   (2009-04-24 17:39:00) [12]

Я вообще не понимаю в чем проблема ..

В док-те FastReportXUserManual приводится подробнейшееразъяснение с картинками, как в дизайн-тайм спроектировать будущий кросстаб-отчет..


Сергей М.   (2009-04-24 17:31:00) [13]

А он что, не лезет ?


madmech   (2009-04-24 17:26:00) [14]

Ну, хорошо, а как тогда загнать ДатаСет в кросстаб?


Сергей М.   (2009-04-24 17:16:00) [15]


> количество полей в ДатаСете, как и размерность массива,
> я заранее (на этапе разработки) не знаю


Это же не повод чтобы заморачиваться с массивом)

Не знаешь ? Да и не надо знать !
То что не известно в дизайн-тайм, становится известным в ран-тайм ..


madmech   (2009-04-24 17:00:00) [16]

Дык, все те же самые значения лежат и в DataSet'е также, но проблемка в том, что количество полей в ДатаСете, как и размерность массива, я заранее (на этапе разработки) не знаю. Поля у меня формируются динамически. Хорошо, как тогда быть с выводом ДатаСета в кросстаб? Или, может быть, все же удобнее использовать массив, и его уже загонять в кросстаб?


Сергей М.   (2009-04-24 16:58:00) [17]


> как перевести двумерный динамический массив в вариантную
> переменную


F1 + VarArrayCreate()


> как потом с ей оперировать в отчете


А зачем тебе вообще понадобился этом способ передачи параметров ?

Есть же в FR мастер/детайл-бэнда что-то вроде события OnData (или OnGetData - точно не помню как обзывается) ..

На кр.случай можно и frDataSet организовать ..


clickmaker   (2009-04-24 16:56:00) [18]

> динамически построить перекрестный отчет, элементами которого
> бы стали элементы моего массива

DataSet какой-нибудь не проще использовать?
если по теие, то см. VarArrayCreate


madmech   (2009-04-24 16:52:00) [19]

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


Сергей М.   (2009-04-24 16:38:00) [20]

Точно так же
Скриптовый движок FR4 оперирует переменными вариантного типа, в которых, как известно, можно хранить данные типа массив


Наверх

Титульная страница Поиск, карта сайта Написать письмо