Форум: "Начинающим";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];
ВнизПроблема с передачей массива в отчет Найти похожие ветки
← →
madmech © (2009-04-24 16:35) [0]Добрый день, дамы и господа! Помогите, пожалуйста, передать двумерный динамический массив в отчет FastReport4 с целью дальнейшего его использования в скрипте. С обычной переменной все просто, как я понимаю, это надо делать следующим образом:
Report.Script.Variables["a"] := a;
Где a - некая переменная, например, типа integer. Но как быть с массивом?
← →
Сергей М. © (2009-04-24 16:38) [1]Точно так же
Скриптовый движок FR4 оперирует переменными вариантного типа, в которых, как известно, можно хранить данные типа массив
← →
madmech © (2009-04-24 16:52) [2]Ну, хорошо, я вот такой еще весь из себя зеленый желторотый пионер. :) А как перевести двумерный динамический массив в вариантную переменную, и, самое главное, как потом с ей оперировать в отчете? Суть в том, что мне надо динамически построить перекрестный отчет, элементами которого бы стали элементы моего массива.
← →
clickmaker © (2009-04-24 16:56) [3]> динамически построить перекрестный отчет, элементами которого
> бы стали элементы моего массива
DataSet какой-нибудь не проще использовать?
если по теие, то см. VarArrayCreate
← →
Сергей М. © (2009-04-24 16:58) [4]
> как перевести двумерный динамический массив в вариантную
> переменную
F1 + VarArrayCreate()
> как потом с ей оперировать в отчете
А зачем тебе вообще понадобился этом способ передачи параметров ?
Есть же в FR мастер/детайл-бэнда что-то вроде события OnData (или OnGetData - точно не помню как обзывается) ..
На кр.случай можно и frDataSet организовать ..
← →
madmech © (2009-04-24 17:00) [5]Дык, все те же самые значения лежат и в DataSet"е также, но проблемка в том, что количество полей в ДатаСете, как и размерность массива, я заранее (на этапе разработки) не знаю. Поля у меня формируются динамически. Хорошо, как тогда быть с выводом ДатаСета в кросстаб? Или, может быть, все же удобнее использовать массив, и его уже загонять в кросстаб?
← →
Сергей М. © (2009-04-24 17:16) [6]
> количество полей в ДатаСете, как и размерность массива,
> я заранее (на этапе разработки) не знаю
Это же не повод чтобы заморачиваться с массивом)
Не знаешь ? Да и не надо знать !
То что не известно в дизайн-тайм, становится известным в ран-тайм ..
← →
madmech © (2009-04-24 17:26) [7]Ну, хорошо, а как тогда загнать ДатаСет в кросстаб?
← →
Сергей М. © (2009-04-24 17:31) [8]А он что, не лезет ?
← →
Сергей М. © (2009-04-24 17:39) [9]Я вообще не понимаю в чем проблема ..
В док-те FastReportXUserManual приводится подробнейшее разъяснение с картинками, как в дизайн-тайм спроектировать будущий кросстаб-отчет..
← →
madmech © (2009-04-24 17:43) [10]А как мне прикажете строить кросс-отчет в дезайн-тайме на основе ДатаСета, используя DB Cross-Tab? У меня же на этапе разработки ни одного поля еще нет. Именно поэтому я решил использовать просто Cross-Tab, чтобы можно было его врукопашную заполнить данными из массива в процессе работы программы. Если подскажете, как можно заполнять DB Cross-Tab данными из ДатаСета, используя скрипт, в ран-тайме, буду премного благодарен. :)
← →
madmech © (2009-04-24 17:47) [11]А к Руководству Пользователя можете меня не отсылать. Я его подробнейше изучил и не нашел решения своей проблемы, которую изложил в предыдущем посте.
← →
Сергей М. © (2009-04-24 19:46) [12]Я не вижу никакой проблемы.
И если ты читая UM не нашел решения, то значит ты его не читал.
← →
AndreyV © (2009-04-24 21:27) [13]> [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
Посчитай сам, а лучше ФР доверь.
← →
madmech © (2009-04-26 13:01) [14]Всё, проблему решил на раз, стоило только еще раз заглянуть в мануал и внимательно прочитать первые несколько страниц, касающиеся кросс-табов. Просто у меня после первого прочтения и быстрого изучения возникла каша в голове, но сейчас я привел свои мысли в порядок. ;)
Всем спасибо, все свободны, тему можно закрывать. :)
← →
madmech © (2009-04-26 18:03) [15]И все же, оказывается, проблема остается актуальной, только теперь в связи с другой задачей: как передать в отчет ДВУХМЕРНЫЙ массив? Нужно смотреть значения одной матрицы из основного модуля, и в зависимости от этих значений раскрашиваться соответствующим образом таблицу (кросс-таб). Я могу обращаться напрямую к моему модулю типа:
if Manual2.MainForm.a_Sq[i, j] = 0 then
Memo1.Color := clRed;
← →
AndreyV © (2009-04-26 21:46) [16]> [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-28 12:49) [17]А я могу как-нибудь в коде скрипта обращаться к данным, находящимся в другом кросс-отчете?
← →
AndreyV © (2009-04-28 13:19) [18]> [17] madmech © (28.04.09 12:49)
> А я могу как-нибудь в коде скрипта обращаться к данным,
> находящимся в другом кросс-отчете?
Что значит "в другом кросс-отчете" - fr3 или CrossTab?
← →
madmech © (2009-04-28 14:58) [19]Имеется в виду то, что я хочу использовать данные, находящиеся в первом кросс-табе, в одном из обработчиков второго кросс-таба, лежащего в том же отчете, что и первый кросс-таб. Чтоб не усложнять себе жизнь с передачей двумерного массива в отчет. Это возможно?
← →
madmech © (2009-04-29 16:30) [20]Проблема решена с помощью занесения двумерного массива в одномерный с последующей передачей одномерного массива variant в отчет. Всё!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.006 c