各位大佬:
小弟是个新手,做一个小程序,思路是:
给各种商品分类,根据各类商品分别给各个打印机打印(根据打印机名),其中YPDY过程是根据上述思路编写的,而XPDY过程只是给默认打印机打印的;二个过程同时在一个procedure TForm6.Button1Click(Sender: TObject);中调用,但是运行时报错’project project1.exe raised exception class edbengineeError with message'UNexpected end of command token' line number 1'
只有去除YPDY过程程序正常,不知为何,请教各位大佬,万分感谢!
procedure TForm6.ypdy;
var
    I,L,k1,k2:  integer;
  f6_xp1,f6_xpsl1,f6_n1:integer;
  f6_no1,f6_mc1,f6_pl1,f6_sl2,f6_n2,f6_dl1,k:string;
   begin
   try
  //f6_no1:=trim(form3.edit13.text);
 query2.Close;
 query2.sql.Clear;
 query2.SQL.Add('select * from xiaoshou_la where beizhu<>''');  query2.Open;
  if query2.RecordCount=0 then exit;
  query2.First;
    f6_xp1:=0;
        for f6_n1:=0 to query2.recordcount-1 do
  begin
  // SetPaperHeight(200);
  
      f6_dl1:=query2.fieldbyname('dalei').AsString;
    query3.close;
    query3.SQL.Clear;
    query3.sql.add('select * from print_com where dalei=:da');//pint_com为根据商品大类(DALEI)对应一个打印机名
    query3.ParamByName('da').AsString:=f6_dl1;
     query3.Open;
     k:=inttostr(query3.fieldbyname('p_com').AsInteger);
  // SetPaperHeight(200);
       k2:=   printer.printers.IndexOf(k);
  printer.PrinterIndex:=k2;
  L:=75;
  Printer.BeginDoc;
      f6_no1:=query2.fieldbyname('dj_no').AsString;
    f6_n2:=inttostr(f6_n1);
      f6_mc1:=query2.fieldbyname('spmc').asstring;
      f6_pl1:=query2.fieldbyname('beizhu').AsString;
      f6_sl2:=inttostr(f6_xpsl1);
  printer.canvas.Font.Name:='Courier 10Cpi';    //字体名称
 Printer.Canvas.Font.Size:=10;        //TextOut(列,行)
  printer.Canvas.Font.Style:=[fsBold];   //粗体
   printer.Canvas.Font.Style:=[];  printer.Canvas.TextOut(0,25,''+f6_no1+'                   ');
   printer.Canvas.TextOut(0,40,'店用'   +datetimetostr(now) );
   printer.Canvas.TextOut(0,63,'-------------------------------');   printer.Canvas.TextOut(0,L,''+f6_mc1+' '+f6_sl2+'/'+f6_pl1+'');
  Inc(L,25);
   Printer.EndDoc;
    query2.Next; //f6_xp1:=f6_xp1+1;
 //f6_n1:=f6_n1+1;
 end;  except
  end;
 end;
procedure TForm6.xpdy;
var
    I,L:  integer;
    xfbm,xfxm,xfsl,xfje: string;
    f6_name,f6_spmc,f6_je,f6_sl,f6_jjzje,f6_yhje,f6_fkje,f6_no:string;
  f6_js,f6_no1:integer;
    procedure SetPaperHeight(Value:integer); //设置高度
    var
       Device : array[0..255] of char;
       Driver : array[0..255] of char;
       Port : array[0..255] of char;
       hDMode : THandle;
       PDMode : PDEVMODE;
     begin
         //file:// 自定义纸张最小高度 127mm
        //if Value < 127 then Value := 127;
        //  file:// 自定义纸张最大高度 432mm
        //if Value > 432 then Value := 432;
        Printer.PrinterIndex := -1;
        Printer.GetPrinter(Device, Driver, Port, hDMode); //获取打印机模式
        if hDMode <> 0 then
         begin
            pDMode := GlobalLock(hDMode);
            if pDMode <> nil then
            begin
                pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE or DM_PAPERLENGTH;
                pDMode^.dmPaperSize := DMPAPER_USER;
                pDMode^.dmPaperLength := Value * 10;
                pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
                pDMode^.dmDefaultSource := DMBIN_MANUAL;                Printer.SetPrinter(Device,Driver,Port,hDMode);
                GlobalUnlock(hDMode);
            end;
         end;
        Printer.PrinterIndex :=-1;
        end;
   begin
   try
f6_jjzje:=trim(form3.label7.Caption );
f6_yhje:=trim(form3.edit7.Text );
f6_fkje:=trim(form3.edit11.text);
f6_name:=trim(form3.edit1.Text );
f6_no:=trim(form3.edit13.text);
query1.Close;
query1.sql.Clear;
query1.sql.Add('select * from xiaoshou_la');query1.Open;
 f6_no1:=strtoint(trim(edit5.Text));
//form3.table3.Open ;
//form3.table3.First ;
query1.First;
  SetPaperHeight(200);
  Printer.BeginDoc;
  printer.canvas.Font.Name:='Courier 10Cpi';    //字体名称
 Printer.Canvas.Font.Size:=10;        //TextOut(列,行)
  printer.Canvas.Font.Style:=[fsBold];   //粗体
    printer.Canvas.Font.Style:=[];  printer.Canvas.TextOut(0,25,'-------------------------------');
  printer.Canvas.TextOut(0,40,'商品名称        数量     金额 ');
  printer.Canvas.TextOut(0,63,'-------------------------------');
  L:=75;        for f6_js:=0 to query1.recordcount-1 do
  begin
  f6_spmc:=query1.fieldbyname('spmc').asstring;
  f6_je:=floattostr(query1.fieldbyname('je').asfloat);
  f6_sl:=floattostr(query1.fieldbyname('sl').AsFloat);  printer.Canvas.TextOut(0,L ,' '+f6_spmc+'              '+f6_sl+'    '+f6_je+'    ');
  Inc(L,25);
  printer.Canvas.TextOut(0,L ,'-------------------------------');
  Inc(L,25);
 query1.Next;
 // form3.table3.Next;
  end;
  printer.Canvas.TextOut(0,L,'付款金额:'+f6_fkje+' 收款员:'+f6_name+'');
  Inc(L,25);
  printer.Canvas.TextOut(0,L,'其中:计价总额:  '+f6_jjzje+'');
  Inc(L,25);
  printer.Canvas.TextOut(0,L,'     优惠金额:   '+f6_yhje+'');
  Inc(L,25);
  printer.Canvas.TextOut(0,L,'-------------------------------');
  Inc(L,25);
  printer.Canvas.TextOut(0,L,'交易时间:'+DateTimeToStr(now));
  Inc(L,25);
  printer.Canvas.TextOut(0,L,'单据号: '+f6_no+'   ');
  Inc(L,25);
  printer.Canvas.TextOut(0,L,'-------------------------------');
  Inc(L,25);
  printer.Canvas.TextOut(0,L,'           欢迎光临            ');
  Inc(L,25);
  printer.Canvas.TextOut(0,L,'-------------------------------');
  Inc(L,25);
    Printer.EndDoc;
table4.Open;
table4.Edit;
table4.FieldByName('no1').AsInteger:=f6_no1;
table4.Post;
table4.Edit;
  except
  end;
  end;