📄 pdunt.pas
字号:
unit pdunt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DBGrids, Grids, BaseGrid, AdvGrid, DB;
type
Tpdfrm = class(TForm)
GroupBox1: TGroupBox;
AdvStringGrid1: TAdvStringGrid;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
AdvStringGrid2: TAdvStringGrid;
BitBtn1: TBitBtn;
Edit1: TEdit;
Label1: TLabel;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
AdvStringGrid3: TAdvStringGrid;
BitBtn5: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormActivate(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
pdfrm: Tpdfrm;
implementation
uses data,datam,maind;
{$R *.dfm}
var
kcno:integer;
procedure Tpdfrm.BitBtn2Click(Sender: TObject);
var
i:integer;
begin
with dataman.kcQuery do
begin
close;
sql.Clear;
sql.Add('select 货物条形码,库存数量 from kc');
prepared;
open;
end;
advstringgrid3.RowCount:=dataman.kcQuery.RecordCount+1;
for i:=1 to advstringgrid3.RowCount do
advstringgrid3.Cells[0,i]:=inttostr(i);
i:=1;
dataman.kcQuery.First;
while not dataman.kcQuery.Eof do
begin
advstringgrid3.Cells[1,i]:=trim(dataman.kcQuery.Fields[0].Value);
advstringgrid3.Cells[2,i]:=trim(dataman.kcQuery.Fields[1].asstring);
dataman.kcQuery.Next;
inc(i);
end;
end;
procedure Tpdfrm.Edit1Enter(Sender: TObject);
begin
Edit1.Color:=clSkyBlue;
end;
procedure Tpdfrm.Edit1Exit(Sender: TObject);
begin
Edit1.color:=clWindow;
if trim(edit1.Text)='' then exit;
if length(trim(edit1.Text))<>15 then
begin
showmessage(edit1.text+'不是15位');
edit1.SetFocus;
end;
end;
procedure Tpdfrm.Edit1KeyPress(Sender: TObject; var Key: Char);
var
i:integer;
begin
if trim(edit1.Text)='' then exit;
if not (key in ['0'..'9',#8,#39,#13]) then key:=#0;
if key=#13 then
begin
for i:=1 to advstringgrid1.RowCount do
begin
if trim(edit1.Text)=trim(advstringgrid1.Cells[1,i]) then
begin
advstringgrid1.Cells[2,i]:=inttostr(strtoint(trim(advstringgrid1.Cells[2,i]))+1);
edit1.Text:='';
edit1.SetFocus;
break;
exit;
end;
end;
for i:=advstringgrid1.RowCount downto 1 do
begin
if trim(edit1.Text)<>trim(advstringgrid1.cells[1,i]) then
begin
advstringgrid1.Cells[0,kcno]:=inttostr(kcno);
advstringgrid1.Cells[1,kcno]:=trim(edit1.Text);
advstringgrid1.Cells[2,kcno]:='1';
kcno:=kcno+1;
advstringgrid1.RowCount:=kcno;
edit1.Text:='';
edit1.SetFocus;
break;
exit;
end;
break;
end;
end;
end;
procedure Tpdfrm.FormActivate(Sender: TObject);
begin
advstringgrid1.Cells[1,0]:='货物条形码';
advstringgrid1.Cells[2,0]:='数量';
advstringgrid2.Cells[1,0]:='货物条形码';
advstringgrid2.Cells[2,0]:='数量';
advstringgrid3.Cells[1,0]:='货物条形码';
advstringgrid3.Cells[2,0]:='数量';
edit1.Text:='';
kcno:=1;
end;
procedure Tpdfrm.BitBtn4Click(Sender: TObject);
begin
close;
end;
procedure Tpdfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
pdfrm:=nil;
pdfrm.Free;
end;
procedure Tpdfrm.BitBtn1Click(Sender: TObject);
var
i,j,m:integer;
tagget:boolean;
begin
m:=1;
if trim(advstringgrid1.Cells[1,1])='' then exit;
try
for i:=1 to advstringgrid1.RowCount do
for j:=advstringgrid3.RowCount-1 downto 1 do
begin
if (trim(advstringgrid1.Cells[1,i])=trim(advstringgrid3.Cells[1,j])) AND (trim(advstringgrid1.Cells[2,i])<>trim(advstringgrid3.Cells[2,j])) then
begin
//实盘数与库存数不一致的情况
advstringgrid2.Cells[0,m]:=inttostr(m);
advstringgrid2.Cells[1,m]:=trim(advstringgrid1.Cells[1,i]);
advstringgrid2.Cells[2,m]:=inttostr(strtoint(trim(advstringgrid1.Cells[2,i]))-strtointdef(trim(advstringgrid3.Cells[2,j]),0));
inc(m);
advstringgrid2.RowCount:=m;
break;
end;
end;
//库存有但盘点时没有的情况
tag:=0;
for j:=1 to advstringgrid3.RowCount-1 do
begin
for i:=1 to advstringgrid1.RowCount do
begin
if trim(advstringgrid3.Cells[1,j])=trim(advstringgrid1.Cells[1,i]) then
begin
tag:=1;
break;
end;
end;
if tag=0 then
begin
advstringgrid2.Cells[0,m]:=inttostr(m);
advstringgrid2.Cells[1,m]:=trim(advstringgrid3.Cells[1,j]);
advstringgrid2.Cells[2,m]:=inttostr(-strtoint(trim(advstringgrid3.Cells[2,j])));
inc(m);
advstringgrid2.RowCount:=m;
end;
tag:=0;
end;
//盘点有但库存没有
tagget:=false;
for i:=1 to advstringgrid1.RowCount-1 do
begin
for j:=1 to advstringgrid3.RowCount do
begin
if trim(advstringgrid1.Cells[1,i])=trim(advstringgrid3.Cells[1,j]) then
begin
tagget:=true;
break;
end;
end;
if tagget=false then
begin
advstringgrid2.Cells[0,m]:=inttostr(m);
advstringgrid2.Cells[1,m]:=trim(advstringgrid1.Cells[1,i]);
advstringgrid2.Cells[2,m]:=inttostr(strtoint(trim(advstringgrid1.Cells[2,i])));
inc(m);
advstringgrid2.RowCount:=m;
end;
tagget:=false;
end;
except
showmessage('盘点失败');
end;
end;
procedure Tpdfrm.BitBtn5Click(Sender: TObject);
var
n:integer;
begin
if trim(advstringgrid2.Cells[1,1])='' then exit;
try
dataman.ADOCon.BeginTrans;
with dataman.kcQuery do
begin
close;
for n:=1 to advstringgrid2.RowCount do
begin
if advstringgrid2.Cells[1,n]='' then break;
sql.Clear;
sql.Add('update kc set 库存数量=库存数量+:sl');
sql.Add('where 货物条形码=:tx');
parameters.ParamByName('tx').Value:=trim(advstringgrid2.Cells[1,n]);
parameters.ParamByName('sl').Value:=strtoint(trim(advstringgrid2.Cells[2,n]));
execsql;
end;
end;
dataman.ADOCon.CommitTrans;
showmessage('盘点存盘成功!');
except
begin
dataman.ADOCon.RollbackTrans;
showmessage('盘点存盘失败!');
end;
end;
end;
procedure Tpdfrm.BitBtn3Click(Sender: TObject);
var
kd:textfile;
kcFile,kcqk,shpname:string;
l:integer;
begin
try
kcFile:=ExtractFilePath(Application.ExeName)+'kc.txt';
AssignFile(kd,kcFile);
Rewrite(kd);
write(kd,chr(27)+chr(64));
shpname:=stringofchar(' ',(32-Length(ini_load_shopname('打印参数','和祥店')))div 2)+ini_load_shopname('打印参数','和祥店');
write(kd,shpname+chr(10));
kcqk:=stringOfChar(' ',(32-Length('牧羊人服饰'+formatdatetime('yyyy"年"mm"月"',date)+'盘亏/盘盈清单')) div 2)+'牧羊人服饰'+formatdatetime('yyyy"年"mm"月"',date)+'盘亏/盘盈清单';
write(kd,kcqk+chr(10));
writeln(kd,'--------------------------------');
// 12345678901234567890123456789012
write(kd,'商品条形码 库存数量 '+chr(10));
write(kd,'--------------------------------');
for l:=1 to advstringgrid2.RowCount do
begin
if trim(advstringgrid2.Cells[1,l])='' then break;
write(kd,trim(advstringgrid2.Cells[1,l]):15);
write(kd,trim(advstringgrid2.Cells[2,l]):10);
write(kd,chr(10));
end;
Writeln(kd,' ');
write(kd,'-------------------------------');
Writeln(kd,' ');
Writeln(kd,' ');
Writeln(kd,' ');
Writeln(kd,' ');
Writeln(kd,' ');
Writeln(kd,' ');
CloseFile(kd);
PrintFile(kcFile);
except
abort;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -