Подмена DataSet в runtime?

отредактировано 14:51 Раздел: FastReport 2.xx VCL
Народ, я возможно торможу, но даже не представляю как это сделать. Хотя, может это и по-другому делается? Надо вывести запрос с группировкой, даже если в нем нет строк. Придумал, что в случае, если запрос возвращает 0 строк, подменять датасет у мастер бэнда. Не представляю, как ему скормить новый датасет, который "single rows". Подскажите!!! :-)

Комментарии

  • отредактировано 14:51
    Посмотри http://www.fast-report.com/en/forum/?p=/discussion/3672
    правда там речь о 3-ке.... но принцип может подойти
  • отредактировано 14:51
    http://www.fast-report.com/en/forum/?p=/discussion/3672 [/url]
    правда там речь о 3-ке.... но принцип может подойти
    Болты. Тем более, и ветка там не закончена...
    А мысль была значительно проще. Реализация идеи заключается в том, чтобы получить объект датасета в рантайме и присвоить ему другой объект, который "single rows". Просто я не очень понимаю, как эти объекты хранятся в ФР и как к ним можно осуществить программный доступ средствами дельфей, а не встроенного языка.
  • gpigpi
    отредактировано April 2006
  • отредактировано 14:51
    Пишу:

    procedure Page1OnBeforePrint(Sender: TfrxComponent);
    begin
    if TfrxBandView(frReport1.FindObject('Band3')).DataSet = '0' then
    TfrxBandView(frReport1.FindObject('Band3')).DataSet := '10';
    end;


    Ошибка: undeclared identifier TfrxBandView.

    Что не так?
  • отредактировано 14:51
    Не пойму какой версией пользуитесь 2.x или 3.x?
  • отредактировано 14:51
    martiny написал:
    Ошибка: undeclared identifier TfrxBandView.
    Если 2 - то TfrBandView
  • gpigpi
    отредактировано 14:51
    А если 3, то
    TfrxMasterData(frxReport1.FindObject('MasterData1')).DataSet:=nil;
    TfrxMasterData(frxReport1.FindObject('MasterData1')).RowCount:=5;
    
  • отредактировано April 2006
    Сорри, сразу не сказал. Юзаю FR 3 + дельфи 6.
    Спасибо, буду пробовать! :-)

    И опять не то. Отчет выводится, но шапки в нем нет. Есть только подвал. А мне надо присвоить не количество строк, а другой датасет. Пусть даже и фиктивный, собраный специально для подмены тут же на коленке, потому что отчет - с группировкой! Насколько я понимаю, там же должна быть хотя бы одна строка... :-(
  • gpigpi
    отредактировано 14:51
    написал:
    А мне надо присвоить не количество строк, а другой датасет
    TfrxMasterData(frxReport1.FindObject('MasterData1')).DataSet:=frxDBDataset1;
    написал:
    потому что отчет - с группировкой!
    Условие группировки тоже нужно будет поменять

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.