各位大佬:
小弟是个新手,做一个小程序,思路是:
给各种商品分类,根据各类商品分别给各个打印机打印(根据打印机名),其中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;
小弟是个新手,做一个小程序,思路是:
给各种商品分类,根据各类商品分别给各个打印机打印(根据打印机名),其中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;
解决方案 »
- Format函数
- 如何让窗体随着鼠标而卷动
- 菜鸟问题:我用finddialog找到指定字符串时,如何使TDBMemo的滚动条滚动,使被找到的字符串能被看见?
- DBGridEh报错?
- 请问:Delphi开发环境中实现C/S和B/S这二种结构的基本方法,比较这二种结构的优缺点。向各位大师求教。
- 如何对数据库(ACCESS)进行修改!
- 回答小问题送分!!
- 怎么用delphi连接一个excel表,并把它转换为dbf文件,请给个详细例子.80分送上
- 请教一个C代码转换成delphi的简单问题
- 有关医院管理系统的问题?急!!!
- 求delphi Imgaelist的使用例子
- 李维的delphi教程为什么很难买的到啊
收帖先,谢啦..