我有一个报告,我想在其中选择要显示/打印的数据。
我将UniDAC用作数据连接,当我不选择数据时,只需将其全部打印即可。
我的报告代码中有一个名为varDiaryGuid的变量,该变量指定要用来过滤记录的值。
在我的测试中,在打开报告之前,为该变量分配了值{A13CE6A0-7EB0-469A-87D7-3518FB9F365A}。
报告开始时,它会显示一个消息框“开始报告”:{A13CE6A0-7EB0-469A-87D7-3518FB9F365A},因此该变量应是可用的。
但是然后我收到一个错误消息,说出意外字符-经过一些测试,它看起来像是GUID开头的{。
有谁对我接下来要测试的东西有什么想法吗?
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
ShowMessage('Start report: ' + varDiaryGuid);
qryDiary.Close;
qryDiary.SQL.Clear;
qryDiary.SQL.Text := 'SELECT * FROM qrymd_diary WHERE (flddiary_guid = ' + varDiaryGuid + ')';
qryDiary.Open;
end;
您应该使用参数进行查询(安全性和性能)。
qrydiary
使用OI将组件的查询定义为
SELECT
*
FROM
qrymd_diary
WHERE
flddiary_guid = :diary_guid
在您的代码中,您只需分配参数值
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
ShowMessage('Start report: ' + varDiaryGuid);
qryDiary.Close;
qryDiary.ParamByName( 'diary_guid' ).Value := varDiaryGuid;
qryDiary.Open;
end;
根据所使用的sql组件,还必须定义参数的数据类型。其中一些可以解决类型,而有些则需要您的帮助。只需使用OI检查参数类型。
您可以在文档中阅读有关使用参数的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句