Скрыть/показать MasterData по условию

отредактировано 05:56 Раздел: FastReport 3.0
Добрый день!!!

Мне необходимо проверять значение которое возвращает запрос по полю Internal query3."DrS12 (в базе оно логическое) и если оно true, то отображать MasterData2 если лож, то MasterData3. На событие Page4OnBeforePrint той странице на которой находятся бенды повесил код:
procedure procedure Page4OnBeforePrint(Sender: TfrxComponent);
begin
  MasterData2.Visible:= <Internal query3."DrS12">;
  MasterData3.Visible:= not <Internal query3."DrS12">;
end;

Допустим у меня запрос возвращает 6 записей.
Значение у них Internal query3."DrS12 разное (true/false).
при построении запроса у меня видны либо все MasterData3 либо все MasterData2. А по идее они должны быть в перемешку.

В чем моя ошибка, может не тот обработчик событий я выбрал?

Комментарии

  • LexLex
    отредактировано 05:56
    Поясни по подробней зачем два MasterData
    они не могут печататься в перемешку, сначала один затем второй.
    Page4OnBeforePrint вызываеться одни раз перед печатью всего Page4
    даже если он многостраничный.
    Каким образом DrS12 связанно и с первым и со вторым DataSet-ом?
    Каким образом DataSet-ы связанны между собой, если ты хочешь печатать строку либо из обдного либо из другого то они явно както связанны.
    Может проще из связать на стадии запроса + прицепить DrS12 и тагда либо в запросе либо в Fast-е подиенять колонки в зависимости от DrS12.
  • отредактировано 05:56
    Запрос возвращает 10 полей.
    Одно из них "Internal query3."DrS12"
    Если "Internal query3."DrS12"=true тогда нужно выводить в репорт 8 полей в 8 мемо, я их разместил в MasterData2.
    Если "Internal query3."DrS12"=false тогда нужно печатать 1 поле в 1 мемо, я их разместил в MasterData3.

    По твоему ответу я понял что так делать некорректно.
    Раньше ясделал все мемо на одном бенде и их Visible делал:
    Visible:= <Internal query3."DrS12"> или Visible:=  not <Internal query3."DrS12">;
    
    Это работало, но вот загвоздка, когда нужно было оображать одно memo то получалось на бенде много совободного места (там невидимые memo).
    Для того что бы убрать эту пустоту, я делал высоту невидимых мемо=0, но почемуто только второе мемо подтягивалось к первому, а остальные становились "плоскими" и оставались на своих местах.
  • LexLex
    отредактировано February 2006
    Сделай MasterData к нему привежи Child
    выстави
    MasterData.PrintChildIfInvisible в True

    на MasterData размести 8 мемо
    на Child 1 мемо

    в MasterData.OnBeforePrint
    MasterData.Visible := <Internal query3."DrS12">
    Child.Visible := not <Internal query3."DrS12">

    что -то типо этого.
  • отредактировано February 2006
    Спасибо большое работает.

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

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