关于frxReport网上的东西太少实在找不到解决问的答案,我现在情况是这样的,通过frxReport有条件的显示记录,我的记录有8条,符合条件的有二条,结果显示出来二条记录重复显示了8次,总共16条,而不是只是显示二条在表上,相关代码如下,不知问题出在那里:
//此处打印预览开始显示列表内容
procedure TGreportfrm.frxReport1BeginDoc(Sender: TObject);
begin
with adoquery1 do //将数据表字段与表内容栏对应,并显示到表中
begin
close;
sql.Clear;
sql.Add('select * from sendhis');
open;
TfrxMemoView(frxReport1.FindObject('memo8')).Memo.Text:=fieldbyname('PageNO').AsString;
TfrxMemoView(frxReport1.FindObject('Memo9')).Memo.Text:=fieldbyname('UserName').AsString;
TfrxMemoView(frxReport1.FindObject('Memo10')).Memo.Text:=fieldbyname('Message').AsString;
TfrxMemoView(frxReport1.FindObject('Memo11')).Memo.Text:=fieldbyname('SendDate').AsString;
filtered:=true;
end;
TfrxMemoView(frxReport1.FindObject('memo3')).Memo.Text:=datetostr(datetimepicker1.Date)+' - '+datetostr(datetimepicker2.Date);
end;//在adoquery1里面进行相关条件的限制显示
procedure TGreportfrm.ADOQuery1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
if (strtodatetime(dataset.fieldbyname('senddate').AsString)-datetimepicker1.Date>=0) and (strtodatetime(dataset.fieldbyname('senddate').AsString)-datetimepicker2.Date<=0) then
begin
accept:=true;
end else
begin
accept:=false;
end;
end;
条件应当起了作用,因为也只是显示了符合条件的数据二条数据,但不知为何重复显示了8次,不知在那里控制
//此处打印预览开始显示列表内容
procedure TGreportfrm.frxReport1BeginDoc(Sender: TObject);
begin
with adoquery1 do //将数据表字段与表内容栏对应,并显示到表中
begin
close;
sql.Clear;
sql.Add('select * from sendhis');
open;
TfrxMemoView(frxReport1.FindObject('memo8')).Memo.Text:=fieldbyname('PageNO').AsString;
TfrxMemoView(frxReport1.FindObject('Memo9')).Memo.Text:=fieldbyname('UserName').AsString;
TfrxMemoView(frxReport1.FindObject('Memo10')).Memo.Text:=fieldbyname('Message').AsString;
TfrxMemoView(frxReport1.FindObject('Memo11')).Memo.Text:=fieldbyname('SendDate').AsString;
filtered:=true;
end;
TfrxMemoView(frxReport1.FindObject('memo3')).Memo.Text:=datetostr(datetimepicker1.Date)+' - '+datetostr(datetimepicker2.Date);
end;//在adoquery1里面进行相关条件的限制显示
procedure TGreportfrm.ADOQuery1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
if (strtodatetime(dataset.fieldbyname('senddate').AsString)-datetimepicker1.Date>=0) and (strtodatetime(dataset.fieldbyname('senddate').AsString)-datetimepicker2.Date<=0) then
begin
accept:=true;
end else
begin
accept:=false;
end;
end;
条件应当起了作用,因为也只是显示了符合条件的数据二条数据,但不知为何重复显示了8次,不知在那里控制
解决方案 »
- 列表ListView如何使用网络上面的图标呢?
- ADO得到当前ORACLE用户的表名列表
- 用循环把数据库中记录一行一行导入文本中的错误!
- 疑惑性能 关于adoquery filter 和 select * from xx where xxx like '%xx%'
- 报表必须运行两次才能显示!
- 您用过dbExpress吗?
- 如何将程序中字符串变量的内容写到文件中去?在线等。急!
- #### Oracle中的SYSDBA用户问题,在线等待! ####
- [公告]请问有人要2001版定额库吗?
- 问点Pascal的语法问题。
- 用GetProp函数如何获取一控件的过程或者函数地址。
- delphi关于hint、messagedlg等几个问题求助,在线等。。
放在Open之后试试??...
close;
sql.Clear;
sql.Add('select * from sendhis');
open;
filtered:=true;
...