if (sender as TMenuItem).Name ='N1' then //其中frDBDataSet1 为报表数据控件,连数据集 begin //打印当前资料 frDBDataSet1.RangeBegin:=rbcurrent; frDBDataSet1.RangeEnd:=reCount; frDBDataSet1.RangeEndcount:=1; end else //打印所有资料 begin frDBDataSet1.RangeBegin:=rbfirst; frDBDataSet1.RangeEnd:=relast; frDBDataSet1.RangeEndcount:=0; end;
TO:LZGUI(威靈)你的那段代码我改成这样会无限循环,应该怎么改请高手指点 if DM.Query1.FieldByName('Print').AsBoolean = False then //其中frDBDataSet1 为报表数据控件,连数据集 begin //打印当前资料 DM.frDBDataSet2.RangeBegin := rbCurrent; DM.frDBDataSet2.RangeEnd := reCount; DM.frDBDataSet2.RangeEndCount := 1; DM.frReport2.PrepareReport; end else //打印所有资料 begin DM.frDBDataSet2.RangeBegin:=rbfirst; DM.frDBDataSet2.RangeEnd:=relast; DM.frDBDataSet2.RangeEndcount:=0; DM.frReport2.PrepareReport; end; end;
TO: rgn() 不是的一张票据有四五行数据吧,但是一条记录对应一张票据 但是我已经用SQL语句找出字段 Print 为假的记录,只有数据库中Print字段为False时这条记录才要打印出来,如果有十条记录的Print字段为False就都要一次性打印出来
>>但是我已经用SQL语句找出字段 Print 为假的记录 for i := 0 to 记录集.Count-1 do 打印(记录集[i]); 不就结了?
TO:zzlingaaa(小舟) 这样不行呀 for i := 0 to DM.Query1.Count-1 do//这句编译时不能通过 DM.frReport2.ShowPrintDialog := False; DM.frReport2.PrepareReport; Dm.frReport2.PrintPreparedReportDlg;
试试这个,数据集RangeBegin为rbCurrent,RangeEnd为reCount; procedure TForm4.Button5Click(Sender: TObject); begin Query1.First; while not Query1.Eof do begin frreport1.PrepareReport; frreport1.PrintPreparedReportDlg; Query1.Next; end; end;
问题如下:
比如Table1里有个字段 Print 布尔型 如果为真时这条记录就不打印,为假时才打印出来,
要看数据库有几条记录没有打印,如果还剩10条没有打印,就用连续纸一次性打印出来。
这样要怎样写代码呀!
要看数据库有几条记录没有打印,如果还剩10条没有打印,就用连续纸一次性打印出来。
这样要怎样写代码呀!我已经用SQL语句找出字段 Print 为假的记录,
那下来应该怎么做才能使其连续打印出来请指教。
begin //打印当前资料
frDBDataSet1.RangeBegin:=rbcurrent;
frDBDataSet1.RangeEnd:=reCount;
frDBDataSet1.RangeEndcount:=1;
end else //打印所有资料
begin
frDBDataSet1.RangeBegin:=rbfirst;
frDBDataSet1.RangeEnd:=relast;
frDBDataSet1.RangeEndcount:=0;
end;
begin //打印当前资料
DM.frDBDataSet2.RangeBegin := rbCurrent;
DM.frDBDataSet2.RangeEnd := reCount;
DM.frDBDataSet2.RangeEndCount := 1;
DM.frReport2.PrepareReport;
end else //打印所有资料
begin
DM.frDBDataSet2.RangeBegin:=rbfirst;
DM.frDBDataSet2.RangeEnd:=relast;
DM.frDBDataSet2.RangeEndcount:=0;
DM.frReport2.PrepareReport;
end;
end;
不是的一张票据有四五行数据吧,但是一条记录对应一张票据
但是我已经用SQL语句找出字段 Print 为假的记录,只有数据库中Print字段为False时这条记录才要打印出来,如果有十条记录的Print字段为False就都要一次性打印出来
for i := 0 to 记录集.Count-1 do
打印(记录集[i]);
不就结了?
for i := 0 to DM.Query1.Count-1 do//这句编译时不能通过
DM.frReport2.ShowPrintDialog := False;
DM.frReport2.PrepareReport;
Dm.frReport2.PrintPreparedReportDlg;
procedure TForm4.Button5Click(Sender: TObject);
begin
Query1.First;
while not Query1.Eof do
begin
frreport1.PrepareReport;
frreport1.PrintPreparedReportDlg;
Query1.Next;
end;
end;
比如:查找到了3条未打印记录,但是打印机打印时,总是第一条记录打了3次,其它2条记录就不打印了