Параметры

отредактировано 05:35 Раздел: FastReport 3.0
Уважаемые мастера, подмогните
Необходимо, чтобы в мемо33 попадало значение выборки, а параметры брались из мемо34. Пишу так:

procedure Memo33OnBeforePrint(Sender: TfrxComponent);
begin
ADOQuery3.Close;
ADOQuery3.Params[3].value:=Memo34.Text;
ADOQuery3.Open;
Memo33.Text:=IntToStr(adoquery3.FieldByName('Expr1').AsInteger);
end;

... не работает, компонент пуст или выводит с параметром, заданным по умолчанию

Комментарии

  • gpigpi
    отредактировано 05:35
    Должно работать, при условии, что в момент выполнения procedure Memo33OnBeforePrint Memo34.Text уже содержит нужное значение
  • отредактировано 05:35
    Memo34.Text не пусто - специально проверял
    Может какой то Prepared должен быть?
  • gpigpi
    отредактировано 05:35
    У меня вот так работает
    procedure Memo19OnBeforePrint(Sender: TfrxComponent);
    begin
      ADOQuery1.Close;
      ADOQuery1.Params[0].value:=Memo20.text;
      ADOQuery1.Open;
      Memo19.Text:=IntToStr(adoquery1.FieldByName('Count').asInteger);
    end;
    
    а текст самого запроса какой?
    Memo34.Text что содержит?
  • отредактировано 05:35
    Задача такова: формируется отчет, параметрами являются дата и марка. В Memo33 хочу добавить суммы предыдущего месяца. Пробовал в SQL - не получилось.
    Расположенны 2 Query.
    В первом из них параметры беруться из визуальных компонентов:
    SELECT SUM(dbo.DokList.lSale) AS Summa, SUM(dbo.DokList.lWorkDay) AS WorkDay, SUM(dbo.DokList.Empty1) AS Ocki, SUM(dbo.DokList.Empty2) AS Vesna,
    dbo.DokList.lKonsID, dbo.Personnel.pFIO, dbo.Shop.sName, dbo.AtributesValues.avLongName, dbo.AtributesValues.avShortName
    FROM dbo.AtributesValues RIGHT OUTER JOIN
    dbo.DokList ON dbo.AtributesValues.avID = dbo.DokList.lKategoryID LEFT OUTER JOIN
    dbo.Shop ON dbo.DokList.lShopID = dbo.Shop.sID LEFT OUTER JOIN
    dbo.DokHead ON dbo.DokList.iDokHeadID = dbo.DokHead.hID LEFT OUTER JOIN
    dbo.Personnel ON dbo.DokList.lKonsID = dbo.Personnel.pID
    WHERE (dbo.DokHead.hBDate >= :BDate) AND (dbo.DokHead.hBDate <= :EDate) AND (dbo.DokHead.hMarkaID = :Marka)
    GROUP BY dbo.DokList.lKonsID, dbo.Personnel.pFIO, dbo.Shop.sName, dbo.AtributesValues.avLongName, dbo.AtributesValues.avShortName
    ORDER BY dbo.AtributesValues.avShortName, dbo.Shop.sName

    Во втором:
    SELECT SUM(dbo.DokList.lSale) AS Expr1
    FROM dbo.DokHead RIGHT OUTER JOIN
    dbo.DokList ON dbo.DokHead.hID = dbo.DokList.iDokHeadID
    WHERE (dbo.DokHead.hBDate >= DATEADD(MONTH, - 1, :BDate)) AND (dbo.DokHead.hBDate <= DATEADD(MONTH, - 1, :EDate)) AND
    (dbo.DokHead.hMarkaID = :Marka) AND (dbo.DokList.lKonsID = :KonsID)

    Memo34.Text содержит KonsID. 3 параметра прописываю из тех же компонентов, а :KonsID храниться в Memo34.
  • отредактировано 05:35
    Все получилось, огоромное спасибо!
  • gpigpi
    отредактировано 05:35
    Каков результат такого кода
    procedure Memo33OnBeforePrint(Sender: TfrxComponent);
    begin
    ADOQuery3.Close;
    ADOQuery3.Params[3].value:=Memo34.Text;
    ADOQuery3.Open;
    Memo33.Text:=ADOQuery3.Params[3].value;
    end;
    
  • отредактировано 05:35
    Спасибо, все получилось, ещё небольшой вопрос
    как прочитать значение компонента, если Visible:=False (У меня Memo34.Text). Честно говоря, где то видел, но не помню где, не могу найти в помощи.
  • gpigpi
    отредактировано November 2005
    значение компонента
    
    - что имеется ввиду?
    У меня в FR 3.19.13 Memo.Text доступно при Memo.Visible=False
    Чтобы скрыть Мемо, можно установить его высоту равной 0, или сделать цвет шрифта такой же, как и цвет фона
  • отредактировано 05:35
    В отчете не нужно показывать Memo34.Text - он использовался в качестве вспомогательного компонента. Если присвоить ему Visible=False, то я не могу вообще к нему обратиться (Memo34.Text=?)
    Где то у него есть свойство, которое позволяет обращаться к Мемо даже когда он не видим. Можно (банально) поставить ширину=0, но тогда при экспорте в Ексель просвечиваетсся лишнее поле- тож не красиво
  • gpigpi
    отредактировано 05:35
    Может быть, вместо Memo34.Text в таком случае использовать переменную или скриптовую переменную? Присваивать ей значение можно при печати какого-нибудь поля из того же запроса, который содержит KonsID, а можно прямо в редакторе параметров сопоставить параметру :KonsID значение dbo.DokList.lKonsID.
  • отредактировано 05:35
    Спасибо, попробую

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

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