Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.011 c
15-1239229185
Хитрий Лис
2009-04-09 02:19
2009.06.21
Гууглмапс - странные объекты


2-1241207260
бульдозер
2009-05-01 23:47
2009.06.21
CreateProcess определить готовность запускаемого приложения


4-1211184805
Barloggg
2008-05-19 12:13
2009.06.21
как отобрать у винды мышь?


11-1201597213
Elec3C
2008-01-29 12:00
2009.06.21
Баг ListBox.DoubleBuffer := True


2-1241090941
madmech
2009-04-30 15:29
2009.06.21
Проблема с отрисовкой заголовка кросс-отчета





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский