Советы по Delphi

       

Передача переменных отчета в ReportSmith I


Я имею проблему с передачей id клиента в reportsmith для печати специфического отчета мастер/деталь. Я не нахожу способа каким образом можно передать значение id переменной отчета. Как мне передать ее из Delphi в ReportSmith?

В свое время эта проблема также попортила мне немало нервов, но наконец-то я могу похвастаться ее решением:

begin
MillCardNewRep.InitialValues.Clear;{Передаем Current Milling Number(текущий номер поля Milling) в ReportSmith}MillCardNewRep.InitialValues.Add('@MILLING=<'+MillingNoEdit.Text+'>')MillCardNewRep.Run;end;

Я объявил переменную MILLING в отчете RS как число, получаемое из компонента DBEdit.

НО

обратите внимание что из Delphi вы ДОЛЖНЫ посылать величину не как Value, а как .Text. Если необходимо, приведите это к типу str (или PChar??), но в данном случае я получил эту величину из компонента DBEdit с флагом "только для чтения", т.к. я использовал его для представления приращиваемого (AutoIncrement) поля.

[000227]


Тема: Передача переменных в отчет ReportSmith

Следующий код демонстрирует технологию передачи переменных в отчет ReportSmith.

Примечание: данный совет подразумевает ваше знание темы создания отчета со включенными переменными отчета. Для получения дополнительной информации обратитесь к электронной справке по ReportSmith к главе 'Creating Reports' (создание отчетов), поставляемой вместе с Delphi.

В нашем случае мы присвоим значение ('CA') строковой переменной отчета с именем 'state'.

Код ReportSmith:

Данная информация размещается в ReportSmith в диалоге ReportVariables (переменные отчета). Данный диалог можно вызвать, выбирая в меню Rreportsmith Tools | Report Query и нажимая на кнопку Report Variables.

Name: state Type: string Title: state var Prompt: Введите ваше любимое состояние. Entry: type-in Report Variables: state ; Имейте в виду, что данная переменная и хранимое в ней значение при передаче в ReportSmith чувствительны к регистру. Код Delphi:

Данный код подразумевает, что вы разместили на форме компонент TReport, назвали его 'Report1' и установили его свойство ReportName в соответствии с именем отчета, передаваемого в переменной, приведенной выше.

Разместите следующий код в обработчике события OnClick кнопки, расположенной на вашей форме. В данном случае я использую событие кнопки исключительно в целях простоты, и для ваших целей можно использовать любое другое событие:

procedure TForm1.Button1Click(Sender: TObject);var s: string;begins:='CA';Report1.InitialValues.Add('@state=<'+s+'>');Report1.run;end;

[000941]



Содержание раздела