📄 inv600_03.pas.svn-base
字号:
unit Inv600_03;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Bas100_01, Menus, StdCtrls, Buttons, ExtCtrls, DB, ADODB,DateUtils;
type
TInv600_03Form = class(TBas100_01Form)
Bevel1: TBevel;
bbtnOk: TBitBtn;
bbtnExit: TBitBtn;
lblWhsID: TLabel;
lblLocID: TLabel;
lblItemClass: TLabel;
cbFlag: TCheckBox;
edtFromWhsID: TEdit;
edtToWhsID: TEdit;
sbFromWhsID: TSpeedButton;
sbToWhsID: TSpeedButton;
edtFromLocID: TEdit;
sbFromLocID: TSpeedButton;
edtToLocID: TEdit;
sbToLocID: TSpeedButton;
edtFromItemClass: TEdit;
sbFromItemClass: TSpeedButton;
edtToItemClass: TEdit;
sbToItemClass: TSpeedButton;
lblItemID: TLabel;
edtFromItemID: TEdit;
sbFromItemID: TSpeedButton;
edtToItemID: TEdit;
sbToItemID: TSpeedButton;
qryinv100From: TADOQuery;
qryinv110from: TADOQuery;
qryinv120from: TADOQuery;
qryinv150from: TADOQuery;
qryinv100FromI100_001: TAutoIncField;
qryinv100FromI100_002: TWideStringField;
qryinv100FromI100_003: TWideStringField;
qryinv110fromI110_001: TAutoIncField;
qryinv110fromI110_003: TWideStringField;
qryinv110fromI110_004: TWideStringField;
qryinv120fromI120_001: TAutoIncField;
qryinv120fromI120_002: TWideStringField;
qryinv120fromI120_003: TWideStringField;
qryinv150fromI150_001: TAutoIncField;
qryinv150fromI150_002: TWideStringField;
qryinv150fromI150_003: TWideStringField;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtnOkClick(Sender: TObject);
procedure bbtnExitClick(Sender: TObject);
procedure cbFlagClick(Sender: TObject);
procedure EditExit(Sender: TObject);
procedure sbFromWhsIDClick(Sender: TObject);
procedure sbToWhsIDClick(Sender: TObject);
procedure sbFromLocIDClick(Sender: TObject);
procedure sbToLocIDClick(Sender: TObject);
procedure sbFromItemClassClick(Sender: TObject);
procedure sbToItemClassClick(Sender: TObject);
procedure sbFromItemIDClick(Sender: TObject);
procedure sbToItemIDClick(Sender: TObject);
procedure edtFromWhsIDExit(Sender: TObject);
procedure edtToWhsIDExit(Sender: TObject);
procedure edtFromLocIDExit(Sender: TObject);
procedure edtToLocIDExit(Sender: TObject);
procedure edtFromItemClassExit(Sender: TObject);
procedure edtToItemClassExit(Sender: TObject);
procedure edtToItemIDExit(Sender: TObject);
procedure edtFromItemIDExit(Sender: TObject);
private
procedure SetInterface;
procedure AutoProPlan(AFromWhsNo,AToWhsNo,AFromLocNo,AToLocNo,AFromClassNo,AToClassNo,AFromItemNo,AToItemNo:string;Flag:Boolean);
{ Private declarations }
public
{ Public declarations }
end;
var
Inv600_03Form: TInv600_03Form;
implementation
uses
commFun,SYSDATA,HwSelData;
{$R *.dfm}
procedure TInv600_03Form.SetInterface;
begin
//
qryinv100From.open;
qryinv110from.open;
qryinv120from.open;
qryinv150from.open;
end;
procedure TInv600_03Form.FormCreate(Sender: TObject);
begin
inherited;
SetInterface;
end;
procedure TInv600_03Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
//
end;
procedure TInv600_03Form.bbtnOkClick(Sender: TObject);
var
AFromWhsNo, AToWhsNo, AFromLocNo,AToLocNo, AFromClassNo, AToClassNo, AFromItemNo, AToItemNo: string;
Flag: Boolean;
begin
inherited;
//确定(&O)
AFromWhsNo:='';
AToWhsNo:='';
AFromLocNo:='';
AToLocNo:='';
AFromClassNo:='';
AToClassNo:='';
AFromItemNo:='';
AToItemNo:='';
AFromWhsNo:=edtFromWhsID.text;
AToWhsNo:=edtToWhsID.text;
AFromLocNo:=edtFromLocID.text;
AToLocNo:=edtToLocID.text;
AFromClassNo:=edtFromItemClass.text;
AToClassNo:=edtToItemClass.text;
AFromItemNo:=edtFromItemID.text;
AToItemNo:=edtToItemID.text;
if (AFromWhsNo<>'') and (AToWhsNo<AFromWhsNo) then
begin
ShowMsg('Error');
edtFromWhsID.focused;
Abort;
end;
if (AFromLocNo<>'') and (AToLocNo<AFromLocNo) then
begin
ShowMsg('Error');
edtFromLocID.focused;
Abort;
end;
if (AFromClassNo<>'') and (AToClassNo<AFromClassNo) then
begin
ShowMsg('Error');
edtFromItemClass.focused;
Abort;
end;
if (AFromItemNo<>'') and (AToItemNo<AFromItemNo) then
begin
ShowMsg('Error');
edtFromItemID.focused;
Abort;
end;
Flag:=cbFlag.checked;
AutoProPlan(AFromWhsNo, AToWhsNo, AFromLocNo,AToLocNo, AFromClassNo, AToClassNo, AFromItemNo, AToItemNo, Flag);
end;
procedure TInv600_03Form.bbtnExitClick(Sender: TObject);
begin
inherited;
//退出(&X)
Close;
end;
procedure TInv600_03Form.AutoProPlan(AFromWhsNo, AToWhsNo, AFromLocNo,
AToLocNo, AFromClassNo, AToClassNo, AFromItemNo, AToItemNo: string;
Flag: Boolean);
var
AQuery:TADOQuery;
ADate:TDate;
ACircle:integer;
strSQL:string;
procedure run(AQuery:TAdoQuery);
var
I:integer;
AOldWhsNo,ANewWhsNo:integer;
AQryinv600A,AQryinv600b:TAdoQuery;
begin
I:=0;
AOldWhsNo:=0;
if AQuery.IsEmpty then
begin
ShowMsg('没有符合条件的料品');
Abort;
end;
AQryinv600A:=TAdoQuery.create(nil);
AQryinv600A.Connection:=SYSDM.ADOC;
AQryinv600B:=TAdoQuery.create(nil);
AQryinv600B.Connection:=SYSDM.ADOC;
AQryinv600A.SQL.Add('select * from inv600A');
AQryinv600B.SQL.Add('select * from inv600B');
AQryinv600A.open;
AQryinv600B.open;
//新增主表
while not AQuery.Eof do
begin
ANewWhsNo:=AQuery.fieldByName('I501_001').AsInteger;
if AOldWhsNo<>ANewWhsNo then
begin
AOldWhsNo:=ANewWhsNo;
AQryinv600A.Append;
AQryinv600A.FieldByName('I600A_001').Value:=GetAutoCode('INV600'); //盘点单号
AQryinv600A.FieldByName('I600A_002').Value:='盘点计划'; //盘点名称
AQryinv600A.FieldByName('I600A_003').Value:=0; //盘点状态
AQryinv600A.FieldByName('I600A_004').Value:=ANewWhsNo; //仓库编号
AQryinv600A.FieldByName('I600A_005').Value:=FormatDateTime('yyyy-mm-dd hh:mm:ss',GetServerDate); //预计开始
AQryinv600A.FieldByName('I600A_006').Value:=FormatDateTime('yyyy-mm-dd hh:mm:ss',GetServerDate); //预计完成
//AQryinv600A.FieldByName('I600A_007').Value:=; //实际开始
//AQryinv600A.FieldByName('I600A_008').Value:=; //实际完成
AQryinv600A.FieldByName('I600A_009').Value:=1; //项目数量
AQryinv600A.FieldByName('I600A_010').Value:=FormatDateTime('yyyy-mm-dd hh:mm:ss',GetServerDate); //制单日期
AQryinv600A.FieldByName('I600A_011').Value:=AUserName; //制单人员
AQryinv600A.FieldByName('I600A_012').Value:=FormatDateTime('yyyy-mm-dd hh:mm:ss',GetServerDate); //修改日期
AQryinv600A.FieldByName('I600A_013').Value:=AUserName; //修改人员
AQryinv600A.FieldByName('I600A_014').Value:='盘点计划'; //备注说明
AQryinv600A.Post;
I:=1;
end;
//添加明细
AQryinv600B.Append;
AQryinv600B.FieldByName('I600B_001').Value:=AQryinv600A.FieldByName('I600A_001').AsString; //盘点单号
AQryinv600B.FieldByName('I600B_002').Value:=I; //盘点卡号
I:=I+1;
AQryinv600B.FieldByName('I600B_003').Value:=AQuery.FieldByName('I501_003').asInteger; //料品编号
AQryinv600B.FieldByName('I600B_004').Value:=AQuery.FieldByName('I501_002').asInteger; //庫位編號
AQryinv600B.FieldByName('I600B_005').Value:=AQuery.FieldByName('I501_005').asFloat; //库存数量
AQryinv600B.FieldByName('I600B_006').Value:=False; //已打印否
AQryinv600B.FieldByName('I600B_007').Value:=False; //已完成否
AQryinv600B.Post;
AQryinv600A.Edit;
AQryinv600A.FieldByName('I600A_009').Value:=I;
AQryinv600A.Post;
AQuery.Next;
end;
ShowMsg('盘点计划生成成功'); //盘点计划生成成功
AQryinv600A.Close;
AQryinv600B.Close;
AQryinv600A.Free;
AQryinv600B.Free;
end;
begin
//检索需要的数据集
AQuery:=TAdoQuery.create(nil);
AQuery.connection:=SYSDM.ADOC;
if Flag then
begin
AQuery.LockType:=ltBatchOptimistic;
AQuery.sql.Add('SELECT INV501.*, INV150.I150_036, INV150.I150_037, INV150.I150_038');
AQuery.sql.Add(' FROM INV501 INNER JOIN INV150 ON INV501.I501_001 = INV150.I150_001');
AQuery.sql.Add(' order by I501_001');
AQuery.open;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -