昨天在开发程序中,我遇到了一个问题,就是打印指定的分店的数据。这个问题,让思考了2个多小时,最终还是搞定了。但是想想自己还是走了不少弯路。
这里面关键是:过滤提交的使用:query1.Filter=' shopid='+'''+query1shopid.asstring+'''';
当然如果是合同号:query1.Filter=' supplyid='+'''+query1supplyid.asstring+'''';
---打印按钮脚本
---描述:这个checkbox1:打印当前所有分店
procedure TForm227101.btnPrintClick(Sender: TObject);
begin
if query1.IsEmpty then exit;
//打印指定分店【未选中】
if not checkbox1.Checked then
begin
QuickRep1.DataSet := Query1;
QuickRep1.Preview;
QuickRep1AfterPrint(Sender);
end;
//打印当前所有分店【选中】
if checkbox1.Checked then
begin
QuickRep1.DataSet := Query1;
QuickRep1.Preview;
end;
end;
procedure TForm227101.QuickRep1AfterPrint(Sender: TObject);
begin
inherited;
//未选中:只打印当前分店
if not checkbox1.Checked then
begin
query1.Close;
query1.sql.Clear;
query1.sql.Text := ' select a.*,b.name as shopname from jhzgdifferitem a, shop b '+
' where a.shopid=b.id and sheetid=:sheetid order by shopid ';
query1.Filtered := false;
query1.open;
end;
end;
procedure TForm227101.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
inherited;
//未选中:过滤条件生效
if not CheckBox1.Checked then
begin
Query1.Filter := 'shopid='''+Query1.FieldByName('shopid').asstring+'''';
Query1.Filtered := true;
end;
end;