//通过系统设置的穿口打印到各厨房 ---分单
prtsetQ.Close;
prtsetQ.SQL.Clear;
prtsetQ.SQL.Add('select * from prtset where type=' + '''' + 'C' + '''' + ' and port like ' + '''' + '%' + rjsmain.computer_name + '%' + '''' + ' order by bh');
prtsetQ.Open;
while not prtsetQ.Eof do
begin
printername := prtsetQ.FieldValues['port'];
prtQ.Close;
prtQ.SQL.Clear;
//可根据不同的打印机往不同的窗口打印水单
prtQ.SQL.Add('select * from dcd where djh='
+ '''' + djh + '''' + ' and cfdyjhm=' + '''' + prtsetQ.FieldByName('bh').AsString
+ '''' + ' and ((dcd.prn is null and dcd.zfbz=0) or ((prn='
+ '''' + 'Y' + '''' + ') and (zfbz=1))) and sl>0 order by djh, ID');
prtQ.Open;
prtQ.First;
if prtQ.RecordCount > 0 then
begin
mm := Tprinter.Create;
jj := mm.printers.Count - 1;
for ii := 0 to jj do
begin
if lowercase(mm.printers.Strings[ii]) = lowercase(printername) then
begin
while not prtQ.Eof do
begin
AssignPrn(PText);
Rewrite(PText);
try
mm.PrinterIndex := ii;
// mm.Canvas.Font.name := '楷书';
mm.Canvas.Font.Size := 8;
writeln(PText, ' 单据号:' + prtQ.FieldByName('djh').AsString);
writeln(PText, ' 餐厅:' + prtQ.FieldByName('th').AsString + ' 台位号:' + prtQ.FieldByName('twbh').AsString);
writeln(PText, ' 菜 名 数量 加工描述');
writeln(PText, ' ' + prtQ.FieldByName('mc').AsString + ' ' + prtQ.FieldByName('sl').AsString + ' ' + prtQ.FieldByName('memo').AsString);
finally
CloseFile(PText);
end;
//另一种方法
{ mm.PrinterIndex := ii;
mm.BeginDoc;
mm.Canvas.Font.Size := 8;
mm.Canvas.TextOut(50, 20, ' 单据号:' + prtQ.FieldByName('djh').AsString);
mm.Canvas.TextOut(50, 100, ' 餐厅:' + prtQ.FieldByName('th').AsString + ' 台位号:' + prtQ.FieldByName('twbh').AsString);
mm.Canvas.TextOut(50, 180, ' 菜 名 数量 加工描述');
mm.Canvas.TextOut(50, 260, prtQ.FieldByName('mc').AsString);
mm.Canvas.TextOut(550, 260, prtQ.FieldByName('SL').AsString);
mm.Canvas.TextOut(700, 260, prtQ.FieldByName('memo').AsString);
mm.EndDoc;}
//结束
prtQ.Next;
end;
end;
end;
end;
prtsetQ.Next;
end;
prtsetQ.Close;
prtsetQ.SQL.Clear;
prtsetQ.SQL.Add('select * from prtset where type=' + '''' + 'C' + '''' + ' and port like ' + '''' + '%' + rjsmain.computer_name + '%' + '''' + ' order by bh');
prtsetQ.Open;
while not prtsetQ.Eof do
begin
printername := prtsetQ.FieldValues['port'];
prtQ.Close;
prtQ.SQL.Clear;
//可根据不同的打印机往不同的窗口打印水单
prtQ.SQL.Add('select * from dcd where djh='
+ '''' + djh + '''' + ' and cfdyjhm=' + '''' + prtsetQ.FieldByName('bh').AsString
+ '''' + ' and ((dcd.prn is null and dcd.zfbz=0) or ((prn='
+ '''' + 'Y' + '''' + ') and (zfbz=1))) and sl>0 order by djh, ID');
prtQ.Open;
prtQ.First;
if prtQ.RecordCount > 0 then
begin
mm := Tprinter.Create;
jj := mm.printers.Count - 1;
for ii := 0 to jj do
begin
if lowercase(mm.printers.Strings[ii]) = lowercase(printername) then
begin
while not prtQ.Eof do
begin
AssignPrn(PText);
Rewrite(PText);
try
mm.PrinterIndex := ii;
// mm.Canvas.Font.name := '楷书';
mm.Canvas.Font.Size := 8;
writeln(PText, ' 单据号:' + prtQ.FieldByName('djh').AsString);
writeln(PText, ' 餐厅:' + prtQ.FieldByName('th').AsString + ' 台位号:' + prtQ.FieldByName('twbh').AsString);
writeln(PText, ' 菜 名 数量 加工描述');
writeln(PText, ' ' + prtQ.FieldByName('mc').AsString + ' ' + prtQ.FieldByName('sl').AsString + ' ' + prtQ.FieldByName('memo').AsString);
finally
CloseFile(PText);
end;
//另一种方法
{ mm.PrinterIndex := ii;
mm.BeginDoc;
mm.Canvas.Font.Size := 8;
mm.Canvas.TextOut(50, 20, ' 单据号:' + prtQ.FieldByName('djh').AsString);
mm.Canvas.TextOut(50, 100, ' 餐厅:' + prtQ.FieldByName('th').AsString + ' 台位号:' + prtQ.FieldByName('twbh').AsString);
mm.Canvas.TextOut(50, 180, ' 菜 名 数量 加工描述');
mm.Canvas.TextOut(50, 260, prtQ.FieldByName('mc').AsString);
mm.Canvas.TextOut(550, 260, prtQ.FieldByName('SL').AsString);
mm.Canvas.TextOut(700, 260, prtQ.FieldByName('memo').AsString);
mm.EndDoc;}
//结束
prtQ.Next;
end;
end;
end;
end;
prtsetQ.Next;
end;
prtQ.SQL.Clear;
//可根据不同的打印机往不同的窗口打印水单
prtQ.SQL.Add('select * from dcd where djh='
+ '''' + djh + '''' + ' and cfdyjhm=' + '''' + prtsetQ.FieldByName('bh').AsString
+ '''' + ' and ((dcd.prn is null and dcd.zfbz=0) or ((prn='
+ '''' + 'Y' + '''' + ') and (zfbz=1))) and sl>0 order by djh, ID');
prtQ.Open;
prtQ.First;
这一段,先查询,然后通过Filter来取得你要的内容。这样会比你每次都查询要快点。