В свое время эта проблема также попортила мне немало нервов, но наконец-то я могу похвастаться ее решением:
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 к главе '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]