📄 inv610_02.pas.svn-base
字号:
unit Inv610_02;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_13, Grids, Wwdbigrd, Wwdbgrid, Mask, wwdbedit, Wwdotdot,
DB, ADODB, wwdbdatetimepicker, StdCtrls, Buttons, ActnList, Menus,
ComCtrls, ToolWin;
type
TInv610_02Form = class(TBas200_13Form)
lblCount: TLabel;
lblPerson: TLabel;
lblCheckDate: TLabel;
sbPerson: TSpeedButton;
sbCount: TSpeedButton;
lblChecker: TLabel;
edtPerson: TEdit;
memRemark: TMemo;
edtCountName: TEdit;
edtCount: TEdit;
edtCheckDate: TwwDBDateTimePicker;
edtChecker: TEdit;
edtFromDate: TwwDBDateTimePicker;
lblFromDate: TLabel;
lblRemark: TLabel;
dsInv610B: TDataSource;
qryInv610B: TADOQuery;
pmInv610B: TPopupMenu;
mmiAdd: TMenuItem;
mmiEdit: TMenuItem;
mmiDel: TMenuItem;
edtItemID: TwwDBComboDlg;
wwDBGrid1: TwwDBGrid;
qryInv600: TADOQuery;
adsInv610B: TADODataSet;
adsInv610BFItemID: TWideStringField;
adsInv610BFItemName: TWideStringField;
adsInv610BFItemSpec: TWideStringField;
adsInv610BFUnitName: TWideStringField;
adsInv610BFLocID: TWideStringField;
adsInv610BFLocName: TWideStringField;
adsInv610BFQty: TFloatField;
adsInv610BFNo: TIntegerField;
adsInv610BFCount: TFloatField;
adsInv610BFBanlance: TFloatField;
lblToDate: TLabel;
edtToDate: TwwDBDateTimePicker;
ADOQuery1I610A_001: TWideStringField;
ADOQuery1I610A_002: TWideStringField;
ADOQuery1I600A_002: TWideStringField;
ADOQuery1I610A_003: TDateTimeField;
ADOQuery1I610A_004: TDateTimeField;
ADOQuery1I610A_007: TWideStringField;
ADOQuery1I610A_008: TDateTimeField;
ADOQuery1I610A_009: TWideStringField;
ADOQuery1I610A_010: TDateTimeField;
ADOQuery1I610A_011: TWideStringField;
ADOQuery1I610A_012: TDateTimeField;
ADOQuery1I610A_013: TWideStringField;
ADOQuery1I610A_014: TMemoField;
ADOQuery1I610A_005: TWideStringField;
ADOQuery1I610A_006: TWideStringField;
qryInv600I600A_001: TWideStringField;
qryInv600I600A_002: TWideStringField;
qryHrm150: TADOQuery;
qryHrm150H150_001: TAutoIncField;
qryHrm150H150_002: TWideStringField;
qryHrm150H150_003: TWideStringField;
adsInv610BFRemark: TStringField;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbCountClick(Sender: TObject);
procedure edtCountExit(Sender: TObject);
procedure Action1Execute(Sender: TObject);
procedure edtItemIDCustomDlg(Sender: TObject);
procedure wwDBGrid1Enter(Sender: TObject);
procedure wwDBGrid1Exit(Sender: TObject);
procedure pmInv610BPopup(Sender: TObject);
procedure sbPersonClick(Sender: TObject);
procedure edtPersonEnter(Sender: TObject);
procedure edtPersonExit(Sender: TObject);
procedure wwDBGrid1FieldChanged(Sender: TObject; Field: TField);
private
ALastNo:Integer;
AOldCount:String;
ANoStrList,ANameStrList,ACodeStrList:TStringList;
procedure GetDetailData;
procedure SetPersonByEmpNo(APersonNo:string);
procedure SetPersonByEmpID(APersonID:string);
{ Private declarations }
public
procedure OpenData(ACode:String);
procedure SetInterface; override;
procedure GetDataInfo; override;
procedure InsertEvent; override;
procedure UpdateEvent; override;
procedure DeleteEvent; override;
procedure SetEmptyInit; override;
procedure TableBeforePost; override;
procedure TableAfterPost; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Inv610_02Form: TInv610_02Form;
implementation
uses SYSDATA, CommFun, InvComm, HwSelData, HwSelDataA, Inv610_03;
{$R *.dfm}
//检查输入的执行人员是否合法(用编辑格式)
function CheckPerson(APersonID:string):Boolean;
var
AStringList:TStringList;
I:Integer;
S:string;
begin
Result:=True;
if APersonID='' then Exit;
AStringList:=TStringList.Create;
for I:=1 to Length(APersonID) do
begin
if Copy(APersonID,I,1)=',' then
begin
AStringList.Add(trim(S));
S:='';
end else
S:=S+Copy(APersonID,I,1);
if I=Length(APersonID) then AStringList.Add(trim(S));
end;
for I:=0 to AStringList.Count-1 do
begin
if AStringList[I]='' then
begin
Result:=False;
AStringList.Free;
Exit;
end;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select 1 from HRM150 where H150_002='+''''+AStringList[I]+'''');
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.IsEmpty then
begin
Result:=False;
AStringList.Free;
Exit;
end;
end;
AStringList.Free;
end;
//取得盘点人员显示、编辑、保存的字符串
//显示时:员工姓名1,员工姓名2...
//编辑时:员工编号1,员工编号2...
//保存时:[电脑编号1],[电脑编号2]...
//AType:类型,0=不加入其他字串,1=加入'['和']'字串
function GetPerson(AStringList:TStringList;AType:Integer=0):string;
var
I:Integer;
S:String;
begin
for I:=0 to AStringList.Count-1 do
begin
if AType=0 then S:=S+','+AStringList[I] else S:=S+','+'['+AStringList[I]+']';
end;
Delete(S,1,1); //删除第一个字符串','
Result:=S;
end;
procedure TInv610_02Form.SetInterface;
begin
inherited;
Caption:=GetDBString('INV61002001'); //盘点进度汇报
ADOQuery1I610A_001.DisplayLabel:=GetDBString('INV61002002'); //汇报单号
ADOQuery1I610A_002.DisplayLabel:=GetDBString('INV61002003'); //盘点单号
ADOQuery1I600A_002.DisplayLabel:=GetDBString('INV61002004'); //盘点名称
ADOQuery1I610A_003.DisplayLabel:=GetDBString('INV61002005'); //开始日期
ADOQuery1I610A_004.DisplayLabel:=GetDBString('INV61002006'); //结束日期
ADOQuery1I610A_007.DisplayLabel:=GetDBString('INV61002007'); //盘点人员
ADOQuery1I610A_008.DisplayLabel:=GetDBString('INV61002008'); //审核日期
ADOQuery1I610A_009.DisplayLabel:=GetDBString('INV61002009'); //审核人员
ADOQuery1I610A_010.DisplayLabel:=GetDBString('INV61002010'); //制单日期
ADOQuery1I610A_011.DisplayLabel:=GetDBString('INV61002011'); //制单人员
ADOQuery1I610A_012.DisplayLabel:=GetDBString('INV61002012'); //修改日期
ADOQuery1I610A_013.DisplayLabel:=GetDBString('INV61002013'); //修改人员
ADOQuery1I610A_014.DisplayLabel:=GetDBString('INV61002014'); //备注说明
adsInv610B.FieldByName('FItemID').DisplayLabel:=GetDBString('INV61002015'); //料品编号
adsInv610B.FieldByName('FItemName').DisplayLabel:=GetDBString('INV61002016'); //料品名称
adsInv610B.FieldByName('FItemSpec').DisplayLabel:=GetDBString('INV61002017'); //规格型号
// adsInv610B.FieldByName('FUnitID').DisplayLabel:=GetDBString('INV61002018'); //单位编号
adsInv610B.FieldByName('FUnitName').DisplayLabel:=GetDBString('INV61002019'); //单位名称
adsInv610B.FieldByName('FLocID').DisplayLabel:=GetDBString('INV61002020'); //库位编号
adsInv610B.FieldByName('FLocName').DisplayLabel:=GetDBString('INV61002021'); //库位名称
adsInv610B.FieldByName('FQty').DisplayLabel:=GetDBString('INV61002022'); //库存数量
adsInv610B.FieldByName('FCount').DisplayLabel:=GetDBString('INV61002023'); //盘点数量
adsInv610B.FieldByName('FBanlance').DisplayLabel:=GetDBString('INV61002024'); //盈亏数量
adsInv610B.FieldByName('FRemark').DisplayLabel:=GetDBString('INV61002014'); //备注说明
lblCode.Caption:=GetDBString('INV61002030'); //汇报单号
lblCount.Caption:=GetDBString('INV61002031'); //盘点单号
lblFromDate.Caption:=GetDBString('INV61002032'); //开始日期
lblToDate.Caption:=GetDBString('INV61002033'); //结束日期
lblPerson.Caption:=GetDBString('INV61002034'); //盘点人员
lblCheckDate.Caption:=GetDBString('INV61002035'); //审核日期
lblChecker.Caption:=GetDBString('INV61002036'); //审核人员
qryInv600I600A_001.DisplayLabel:=GetDBString('INV61002037'); //盘点单号
qryInv600I600A_002.DisplayLabel:=GetDBString('INV61002038'); //盘点名称
end;
procedure TInv610_02Form.FormCreate(Sender: TObject);
begin
inherited;
ANoStrList:=TStringList.Create;
ANameStrList:=TStringList.Create;
ACodeStrList:=TStringList.Create;
ATableName:='INV610A';
AFieldName:='I610A_001';
SetInterface;
qryInv600.Open;
qryHrm150.Open;
end;
procedure TInv610_02Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
ANoStrList.Free;
ANameStrList.Free;
ACodeStrList.Free;
qryInv600.Close;
qryHrm150.Close;
end;
procedure TInv610_02Form.OpenData(ACode: String);
begin
inherited;
ADOQuery1.DisableControls;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from INV610A,INV600A where I610A_002=I600A_001 order by I610A_001');
ADOQuery1.Open;
ADOQuery1.Locate('I610A_001',ACode,[]);
ADOQuery1.EnableControls;
ADOQuery1AfterScroll(ADOQuery1);
end;
procedure TInv610_02Form.GetDataInfo;
begin
inherited;
edtCode.Text :=ADOQuery1.FieldByName('I610A_001').AsString; //汇报单号
edtCount.Text :=ADOQuery1.FieldByName('I610A_002').AsString; //盘点单号
edtCountName.Text :=ADOQuery1.FieldByName('I600A_002').AsString; //盘点名称
edtFromDate.Date :=ADOQuery1.FieldByName('I610A_003').Value; //开始日期
edtToDate.Date :=ADOQuery1.FieldByName('I610A_004').Value; //结束日期
edtPerson.Text :=ADOQuery1.FieldByName('I610A_005').AsString; //盘点人员电脑编号
edtPerson.Text :=ADOQuery1.FieldByName('I610A_006').AsString; //盘点人员员工编号
edtPerson.Text :=ADOQuery1.FieldByName('I610A_007').AsString; //盘点人员
if ADOQuery1.FieldByName('I610A_008').AsString<>'' then
edtCheckDate.Date :=ADOQuery1.FieldByName('I610A_008').Value; //审核日期
edtChecker.Text :=ADOQuery1.FieldByName('I610A_009').AsString; //审核人员
edtCreateDate.Text :=ADOQuery1.FieldByName('I610A_010').AsString; //制单日期
edtCreateBy.Text :=ADOQuery1.FieldByName('I610A_011').AsString; //制单人员
edtUpdateDate.Text :=ADOQuery1.FieldByName('I610A_012').AsString; //修改日期
edtUpdateBy.Text :=ADOQuery1.FieldByName('I610A_013').AsString; //修改人员
memRemark.Text :=ADOQuery1.FieldByName('I610A_014').AsString; //备注说明
AOldCount:=edtCount.Text;
//取得明细表数据
GetDetailData;
end;
procedure TInv610_02Form.GetDetailData;
begin
ALastNo:=0;
adsInv610B.Close;
adsInv610B.CreateDataSet;
qryInv610B.Close;
qryInv610B.SQL.Clear;
qryInv610B.SQL.Add('select AA.*,BB.I110_003,BB.I110_004 from');
qryInv610B.SQL.Add(' (select A.*,C.*,D.I150_002,D.I150_003,D.I150_004,E.I140_003');
qryInv610B.SQL.Add(' from INV610B A,INV610A B,INV600B C,INV150 D,INV140 E');
qryInv610B.SQL.Add(' where I610B_001=I610A_001 and I610A_002=I600B_001 and');
qryInv610B.SQL.Add(' I610B_002=I600B_002 and I600B_003=I150_001 and');
qryInv610B.SQL.Add(' I150_011=I140_001 and I610B_001='+''''+edtCode.Text+'''');
qryInv610B.SQL.Add(' ) AA left join INV110 BB on AA.I600B_004=BB.I110_001');
qryInv610B.SQL.Add('order by AA.I600B_002');
qryInv610B.Open;
while not qryInv610B.Eof do
begin
adsInv610B.Append;
adsInv610B.FieldByName('FNo').Value:=qryInv610B.FieldByName('I610B_002').Value;
adsInv610B.FieldByName('FItemID').Value:=qryInv610B.FieldByName('I150_002').Value;
adsInv610B.FieldByName('FItemName').Value:=qryInv610B.FieldByName('I150_003').Value;
adsInv610B.FieldByName('FItemSpec').Value:=qryInv610B.FieldByName('I150_004').Value;
adsInv610B.FieldByName('FUnitName').Value:=qryInv610B.FieldByName('I140_003').Value;
adsInv610B.FieldByName('FLocID').Value:=qryInv610B.FieldByName('I110_003').Value;
adsInv610B.FieldByName('FLocName').Value:=qryInv610B.FieldByName('I110_004').Value;
adsInv610B.FieldByName('FQty').Value:=qryInv610B.FieldByName('I610B_003').Value;
adsInv610B.FieldByName('FCount').Value:=qryInv610B.FieldByName('I610B_004').Value;
adsInv610B.FieldByName('FBanlance').Value:=qryInv610B.FieldByName('I610B_005').Value;
adsInv610B.FieldByName('FRemark').Value:=qryInv610B.FieldByName('I610B_006').Value;
adsInv610B.Post;
ALastNo:=qryInv610B.FieldByName('I610B_002').AsInteger;
qryInv610B.Next;
end;
end;
procedure TInv610_02Form.ReportGetValue(const ParName: String;
var ParValue: Variant);
begin
inherited;
end;
procedure TInv610_02Form.SetEmptyInit;
begin
inherited;
edtCode.Text:='';
edtCount.Text:='';
edtCountName.Text:='';
edtFromDate.Clear;
edtToDate.Clear;
edtPerson.Text:='';
edtCheckDate.Clear;
edtChecker.Text:='';
memRemark.Text:='';
edtCreateDate.Text:='';
edtCreateBy.Text:='';
edtUpdateDate.Text:='';
edtUpdateBy.Text:='';
ALastNo:=0;
adsInv610B.Close;
adsInv610B.CreateDataSet;
ANoStrList.Clear;
ANameStrList.Clear;
ACodeStrList.Clear;
end;
procedure TInv610_02Form.TableAfterPost;
begin
inherited;
qryInv610B.Close;
qryInv610B.SQL.Clear;
qryInv610B.SQL.Add('select * from INV610B where I610B_001='+''''+edtCode.Text+'''');
qryInv610B.Open;
adsInv610B.First;
while not adsInv610B.Eof do
begin
qryInv610B.Append;
qryInv610B.FieldByName('I610B_001').Value:=edtCode.Text;
qryInv610B.FieldByName('I610B_002').Value:=adsInv610B.FieldByName('FNo').Value;
qryInv610B.FieldByName('I610B_003').Value:=adsInv610B.FieldByName('FQty').Value;
qryInv610B.FieldByName('I610B_004').Value:=adsInv610B.FieldByName('FCount').Value;
qryInv610B.FieldByName('I610B_005').Value:=adsInv610B.FieldByName('FBanlance').Value;
qryInv610B.FieldByName('I610B_006').Value:=adsInv610B.FieldByName('FRemark').Value;
qryInv610B.Post;
adsInv610B.Next;
end;
UpdateCountFlag(edtCode.Text,True);
//反写料品资料表中的盘点日期字段 INV150.I150_038=INV610A.I610A_004
UpdateLastDate('INV610',edtCode.Text);
end;
procedure TInv610_02Form.TableBeforePost;
var
ADate:TDateTime;
S:String;
I,J:Integer;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -