我现在写的代码只能实现打印一条数据,如果要实现打印多条数据,要如何实现呢?代码如下:
With DM.QryPOS Do
Begin
Close;
SQL.Clear;
SQL.Add('Select * From POS_Temp');
Open;
If CheckBoxPrint.Checked=True Then
For i:=0 To RecordCount-1 Do
Begin
SPID:=FieldByName('SPID').AsString;
SPMC:=FieldByName('SPMC').AsString;
YDJ:=FieldByName('YDJ').AsCurrency;
XSSL:=FieldByName('XSSL').AsInteger;
ZJE:=FieldByName('ZJE').AsCurrency;
Next;
begin
Printer.Canvas.Font.Charset:=GB2312_CHARSET;
AssignPRN(PText);
Rewrite(PText);
Printer.Canvas.Font.Name:='黑体';
Printer.Canvas.Font.Size:=8;
writeln(Ptext,'商品 单价 数量 金额');
writeln(Ptext,'');
writeln(Ptext,Trim(SPID));
writeln(Ptext,Trim(SPMC)+' '+FloatToStr(YDJ)+' '+IntToStr(XSSL)+' '+FloatToStr(ZJE));
writeln(Ptext,'');
writeln(Ptext,'日期时间'+datetimetostr(now));
writeln(Ptext,'');
CloseFile(Ptext);
End;
End;
With DM.QryPOS Do
Begin
Close;
SQL.Clear;
SQL.Add('Select * From POS_Temp');
Open;
If CheckBoxPrint.Checked=True Then
For i:=0 To RecordCount-1 Do
Begin
SPID:=FieldByName('SPID').AsString;
SPMC:=FieldByName('SPMC').AsString;
YDJ:=FieldByName('YDJ').AsCurrency;
XSSL:=FieldByName('XSSL').AsInteger;
ZJE:=FieldByName('ZJE').AsCurrency;
Next;
begin
Printer.Canvas.Font.Charset:=GB2312_CHARSET;
AssignPRN(PText);
Rewrite(PText);
Printer.Canvas.Font.Name:='黑体';
Printer.Canvas.Font.Size:=8;
writeln(Ptext,'商品 单价 数量 金额');
writeln(Ptext,'');
writeln(Ptext,Trim(SPID));
writeln(Ptext,Trim(SPMC)+' '+FloatToStr(YDJ)+' '+IntToStr(XSSL)+' '+FloatToStr(ZJE));
writeln(Ptext,'');
writeln(Ptext,'日期时间'+datetimetostr(now));
writeln(Ptext,'');
CloseFile(Ptext);
End;
End;
把写入文件的代码写进循环,但是打印初始化和打印的代码写在循环外面。
next写在循环体的最后
发表于:2009-01-06 20:21:246楼 得分:0
把写入文件的代码写进循环,但是打印初始化和打印的代码写在循环外面。
老兄,这样我试过了,以前是打印第一条,现在是打印最后一条,能详细说说吗?
Begin
Close;
SQL.Clear;
SQL.Add('Select * From POS_Temp');
Open;
If CheckBoxPrint.Checked=True Then
begin
first;
while not eof do
Begin
SPID:=FieldByName('SPID').AsString;
SPMC:=FieldByName('SPMC').AsString;
YDJ:=FieldByName('YDJ').AsCurrency;
XSSL:=FieldByName('XSSL').AsInteger;
ZJE:=FieldByName('ZJE').AsCurrency;
Printer.Canvas.Font.Charset:=GB2312_CHARSET;
AssignPRN(PText);
Rewrite(PText);
Printer.Canvas.Font.Name:='黑体';
Printer.Canvas.Font.Size:=8;
writeln(Ptext,'商品 单价 数量 金额');
writeln(Ptext,'');
writeln(Ptext,Trim(SPID));
writeln(Ptext,Trim(SPMC)+' '+FloatToStr(YDJ)+' '+IntToStr(XSSL)+' '+FloatToStr(ZJE));
writeln(Ptext,'');
writeln(Ptext,'日期时间'+datetimetostr(now));
writeln(Ptext,'');
CloseFile(Ptext);
next;
End;
end;
老兄,这样还是不行啊,只能打印第一条数据
With DM.QryPOS Do
Begin
Close;
SQL.Clear;
SQL.Add('Select * From POS_Temp');
Open;
If CheckBoxPrint.Checked=True Then
begin
first;
Printer.Canvas.Font.Charset:=GB2312_CHARSET;
AssignPRN(PText);
Rewrite(PText);
Printer.Canvas.Font.Name:='黑体';
Printer.Canvas.Font.Size:=8;
while not eof do
Begin
SPID:=FieldByName('SPID').AsString;
SPMC:=FieldByName('SPMC').AsString;
YDJ:=FieldByName('YDJ').AsCurrency;
XSSL:=FieldByName('XSSL').AsInteger;
ZJE:=FieldByName('ZJE').AsCurrency; writeln(Ptext,'商品 单价 数量 金额');
writeln(Ptext,'');
writeln(Ptext,Trim(SPID));
writeln(Ptext,Trim(SPMC)+' '+FloatToStr(YDJ)+' '+IntToStr(XSSL)+' '+FloatToStr(ZJE));
writeln(Ptext,'');
writeln(Ptext,'日期时间'+datetimetostr(now));
writeln(Ptext,'');
next;
End;
CloseFile(Ptext);
end;
With QryPOS Do
Begin
Close;
SQL.Clear;
SQL.Add('Select * From POS_Temp');
Open;
If CheckBoxPrint.Checked=True Then
begin
first;
Printer.Canvas.Font.Charset:=GB2312_CHARSET;
AssignPRN(PText);
Rewrite(PText);
Printer.Canvas.Font.Name:='黑体';
Printer.Canvas.Font.Size:=8; while not eof do
Begin
SPID:=FieldByName('SPID').AsString;
SPMC:=FieldByName('SPMC').AsString;
YDJ:=FieldByName('YDJ').AsCurrency;
XSSL:=FieldByName('XSSL').AsInteger;
ZJE:=FieldByName('ZJE').AsCurrency; writeln(Ptext,'商品 单价 数量 金额');
writeln(Ptext,'');
writeln(Ptext,Trim(SPID));
writeln(Ptext,Trim(SPMC)+' '+FloatToStr(YDJ)+' '+IntToStr(XSSL)+' '+FloatToStr(ZJE));
writeln(Ptext,'');
writeln(Ptext,'日期时间'+datetimetostr(now));
writeln(Ptext,'');
next;
End;
CloseFile(Ptext);
end;
end;
谢谢了,可以了,散分