我现在写的代码只能实现打印一条数据,如果要实现打印多条数据,要如何实现呢?代码如下:
    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;

解决方案 »

  1.   

    我是做了用POS小票打印机用的啊,结算时自动打印,不需要预览,用报表工具打印有点烦索了
      

  2.   

    你这个循环有问题。
    把写入文件的代码写进循环,但是打印初始化和打印的代码写在循环外面。
    next写在循环体的最后
      

  3.   

    NEXT写在最后我也试过了,还是只能打印一条数据
      

  4.   

    kenshinggg 
    发表于:2009-01-06 20:21:246楼 得分:0 
    把写入文件的代码写进循环,但是打印初始化和打印的代码写在循环外面。 
     老兄,这样我试过了,以前是打印第一条,现在是打印最后一条,能详细说说吗?
      

  5.   

        With DM.QryPOS Do
        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;
      

  6.   

    SmallHand 
    老兄,这样还是不行啊,只能打印第一条数据
      

  7.   


     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;
      

  8.   

    begin
      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;
      

  9.   

    starluck :
    谢谢了,可以了,散分