📄 pur120_02.pas.svn-base
字号:
unit Pur120_02;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_16, DB, wwdbdatetimepicker, StdCtrls, Buttons, ADODB,
Menus, ExtCtrls;
type
TPur120_02Form = class(TBas200_16Form)
lblCust: TLabel;
lblSpec: TLabel;
lblCurr: TLabel;
lblDate: TLabel;
lblPrice: TLabel;
sbCust: TSpeedButton;
lblUnit: TLabel;
lblItem: TLabel;
SpeedButton1: TSpeedButton;
edtCust: TEdit;
edtCustName: TEdit;
edtSpec: TEdit;
cbCurr: TComboBox;
edtDate: TwwDBDateTimePicker;
edtPrice: TEdit;
edtUnit: TEdit;
edtItem: TEdit;
edtItemName: TEdit;
qryInv150: TADOQuery;
qryInv150I150_002: TWideStringField;
qryInv150I150_003: TWideStringField;
qryInv150I150_004: TWideStringField;
qryInv150I140_002: TWideStringField;
qryInv150I140_003: TWideStringField;
qryInv150I150_001: TAutoIncField;
qryInv150I140_001: TAutoIncField;
qryGld100: TADOQuery;
qryGld100G100_001: TAutoIncField;
qryGld100G100_002: TWideStringField;
qryGld100G100_003: TWideStringField;
qryGld100G100_004: TBooleanField;
qryGld100G100_005: TFloatField;
qryGld100G100_006: TWideStringField;
qryOrd150: TADOQuery;
qryOrd150O150_001: TAutoIncField;
qryOrd150O150_002: TWideStringField;
qryOrd150O150_003: TWideStringField;
ADOQuery1O150_002: TStringField;
ADOQuery1O150_003: TStringField;
ADOQuery1I150_002: TStringField;
ADOQuery1I150_003: TStringField;
ADOQuery1I150_004: TStringField;
ADOQuery1I140_002: TStringField;
ADOQuery1I140_003: TStringField;
ADOQuery1G100_002: TStringField;
ADOQuery1P120_001: TIntegerField;
ADOQuery1P120_002: TIntegerField;
ADOQuery1P120_003: TIntegerField;
ADOQuery1P120_004: TDateTimeField;
ADOQuery1P120_005: TFloatField;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbCustClick(Sender: TObject);
procedure edtCustExit(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure edtItemExit(Sender: TObject);
procedure edtPriceKeyPress(Sender: TObject; var Key: Char);
private
AOldCust,AOldItem,AOldCurr:Integer;
AOldDate:TDateTime;
{ Private declarations }
public
procedure OpenData(ACustNo,AItemNo,ACurrNo:Integer;ADate:TDateTime);
procedure SetInterface; override;
procedure GetDataInfo; override;
procedure SetEmptyInit; override;
procedure InsertInit; override;
procedure TableBeforePost; override;
procedure TableAfterPost; override;
{ Public declarations }
end;
var
Pur120_02Form: TPur120_02Form;
implementation
uses SYSDATA, CommFun, HwSelData;
{$R *.dfm}
procedure TPur120_02Form.OpenData(ACustNo,AItemNo,ACurrNo:Integer;ADate:TDateTime);
begin
if AItemNo=0 then AMode:='ADD' else AMode:='UPD';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from PUR120 order by P120_001,P120_002,P120_003,P120_004');
ADOQuery1.Open;
ADOQuery1.Locate('P120_001;P120_002;P120_003;P120_004',VarArrayOf([ACustNo,AItemNo,ACurrNo,ADate]),[]);
ADOQuery1AfterScroll(ADOQuery1);
end;
procedure TPur120_02Form.SetInterface;
begin
inherited;
Caption:=GetDBString('PUR12002001'); //采购价格维护
lblItem.Caption:=GetDBString('PUR12002002'); //产品编号
lblSpec.Caption:=GetDBString('PUR12002003'); //规格型号
lblUnit.Caption:=GetDBString('PUR12002004'); //计量单位
lblCurr.Caption:=GetDBString('PUR12002005'); //币别名称
lblDate.Caption:=GetDBString('PUR12002006'); //生效日期
lblPrice.Caption:=GetDBString('PUR12002007'); //采购价格
bbtnOk.Caption:=GetDBString('PUR12002008'); //保存(&S)
bbtnExit.Caption:=GetDBString('PUR12002009'); //退出(&X)
qryInv150I150_002.DisplayLabel:=GetDBString('PUR12002010'); //产品编号
qryInv150I150_003.DisplayLabel:=GetDBString('PUR12002011'); //产品名称
qryInv150I150_004.DisplayLabel:=GetDBString('PUR12002012'); //规格型号
qryInv150I140_002.DisplayLabel:=GetDBString('PUR12002013'); //单位编号
qryInv150I140_003.DisplayLabel:=GetDBString('PUR12002014'); //单位名称
qryOrd150O150_002.DisplayLabel:=GetDBString('PUR12002015'); //供应商号
qryOrd150O150_003.DisplayLabel:=GetDBString('PUR12002016'); //供应商名
cbCurr.Clear;
qryGld100.Close;
qryGld100.Open;
qryGld100.First;
while not qryGld100.Eof do
begin
cbCurr.Items.Add(qryGld100.FieldByName('G100_002').AsString);
qryGld100.Next;
end;
cbCurr.ItemIndex:=cbCurr.Items.IndexOf(ACurrID);
end;
procedure TPur120_02Form.FormCreate(Sender: TObject);
begin
inherited;
qryOrd150.Open;
qryInv150.Open;
end;
procedure TPur120_02Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
qryOrd150.Close;
qryInv150.Close;
qryGld100.Close;
end;
procedure TPur120_02Form.GetDataInfo;
begin
inherited;
edtCust.Text:=ADOQuery1.FieldByName('O150_002').AsString;
edtCustName.Text:=ADOQuery1.FieldByName('O150_003').AsString;
edtItem.Text:=ADOQuery1.FieldByName('I150_002').AsString;
edtItemName.Text:=ADOQuery1.FieldByName('I150_003').AsString;
edtSpec.Text:=ADOQuery1.FieldByName('I150_004').AsString;
edtUnit.Text:=ADOQuery1.FieldByName('I140_003').AsString;
cbCurr.ItemIndex:=cbCurr.Items.IndexOf(ADOQuery1.FieldByName('G100_002').AsString);
edtDate.Date:=ADOQuery1.FieldByName('P120_004').Value;
edtPrice.Text:=ADOQuery1.FieldByName('P120_005').AsString;
AOldCust:=ADOQuery1.FieldByName('P120_001').AsInteger;
AOldItem:=ADOQuery1.FieldByName('P120_002').AsInteger;
AOldCurr:=ADOQuery1.FieldByName('P120_003').AsInteger;
AOldDate:=ADOQuery1.FieldByName('P120_004').AsDateTime;
end;
procedure TPur120_02Form.InsertInit;
begin
inherited;
SetEmptyInit;
end;
procedure TPur120_02Form.SetEmptyInit;
begin
inherited;
edtCust.Text:='';
edtCustName.Text:='';
edtItem.Text:='';
edtItemName.Text:='';
edtSpec.Text:='';
cbCurr.ItemIndex:=cbCurr.Items.IndexOf(ACurrID);
edtDate.Date:=GetServerDate;
edtPrice.Text:='0.00';
end;
procedure TPur120_02Form.TableAfterPost;
begin
inherited;
end;
procedure TPur120_02Form.TableBeforePost;
var
ACustNo,AItemNo,ACurrNo:Integer;
begin
inherited;
if trim(edtCust.Text)='' then
begin
ShowMsg('UMS10000542'); //供应商号不能为空
edtCust.SetFocus;
Abort;
end;
if not qryOrd150.Locate('O150_002',edtCust.Text,[]) then
begin
ShowMsg('UMS10000543'); //输入的供应商号无效
edtCust.SetFocus;
Abort;
end;
ACustNo:=qryOrd150.FieldByName('O150_001').Value;
if trim(edtItem.Text)='' then
begin
ShowMsg('UMS10000274'); //产品编号不能为空
edtItem.SetFocus;
Abort;
end;
if not qryInv150.Locate('I150_002',edtItem.Text,[]) then
begin
ShowMsg('UMS10000267'); //输入的产品编号无效
edtItem.SetFocus;
Abort;
end;
AItemNo:=qryInv150.FieldByName('I150_001').Value;
if trim(cbCurr.Text)='' then
begin
ShowMsg('UMS10000020'); //币别名称不能为空
cbCurr.SetFocus;
Abort;
end;
if not qryGld100.Locate('G100_002',cbCurr.Text,[]) then
begin
ShowMsg('UMS10000412'); //输入的币别编号无效
cbCurr.SetFocus;
Abort;
end;
ACurrNo:=qryGld100.FieldByName('G100_001').Value;
if trim(edtDate.Text)='' then
begin
ShowMsg('UMS10000235'); //生效日期不能为空
edtDate.SetFocus;
Abort;
end;
if trim(edtPrice.Text)='' then
begin
ShowMsg('UMS10000544'); //采购价格不能为空或零
edtPrice.SetFocus;
Abort;
end;
if (AOldItem<>AItemNo) or (AOldCurr<>ACurrNo) or (AOldDate<>edtDate.Date) then
begin
if IsExists('select 1 from PUR120 where P120_001='+IntToStr(ACustNo)+' and P120_002='+IntToStr(AItemNo)+' and P120_003='+IntToStr(ACurrNo)+' and P120_004='+GetDateString(edtDate.Date)) then
begin
ShowMsg('UMS10000414'); //相同信息的记录已存在,请重新输入
edtDate.SetFocus;
Abort;
end;
end;
if AMode='ADD' then ADOQuery1.Append else ADOQuery1.Edit;
ADOQuery1.FieldByName('P120_001').Value:=ACustNo;
ADOQuery1.FieldByName('P120_002').Value:=AItemNo;
ADOQuery1.FieldByName('P120_003').Value:=ACurrNo;
ADOQuery1.FieldByName('P120_004').Value:=edtDate.Date;
ADOQuery1.FieldByName('P120_005').AsString:=edtPrice.Text;
end;
procedure TPur120_02Form.sbCustClick(Sender: TObject);
begin
inherited;
//供应商号
if not edtCust.Focused then edtCust.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryOrd150,nil);
if HwSelDataForm.ShowModal=1 then
begin
edtCust.Text:=qryOrd150.FieldByName('O150_002').AsString;
edtCustName.Text:=qryOrd150.FieldByName('O150_003').AsString;
end;
end;
procedure TPur120_02Form.edtCustExit(Sender: TObject);
begin
inherited;
//供应商号
if trim(edtCust.Text)='' then Exit;
if qryOrd150.Locate('O150_002',edtCust.Text,[]) then
begin
edtCust.Text:=qryOrd150.FieldByName('O150_002').AsString;
edtCustName.Text:=qryOrd150.FieldByName('O150_003').AsString;
end else
begin
edtCust.Text:='';
edtCustName.Text:='';
ShowMsg('UMS10000543'); //输入的供应商号无效
edtCust.SetFocus;
Abort;
end;
end;
procedure TPur120_02Form.SpeedButton1Click(Sender: TObject);
begin
inherited;
//产品编号
if not edtItem.Focused then edtItem.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryInv150,nil);
if HwSelDataForm.ShowModal=1 then
begin
edtItem.Text:=qryInv150.FieldByName('I150_002').AsString;
edtItemName.Text:=qryInv150.FieldByName('I150_003').AsString;
edtSpec.Text:=qryInv150.FieldByName('I150_004').AsString;
edtUnit.Text:=qryInv150.FieldByName('I140_003').AsString;
end;
end;
procedure TPur120_02Form.edtItemExit(Sender: TObject);
begin
inherited;
//产品编号
if trim(edtItem.Text)='' then Exit;
if qryInv150.Locate('I150_002',edtItem.Text,[]) then
begin
edtItem.Text:=qryInv150.FieldByName('I150_002').Value;
edtItemName.Text:=qryInv150.FieldByName('I150_003').Value;
edtSpec.Text:=qryInv150.FieldByName('I150_004').AsString;
edtUnit.Text:=qryInv150.FieldByName('I140_003').AsString;
end else
begin
edtItem.Text:='';
edtItemName.Text:='';
edtUnit.Text:='';
ShowMsg('UMS10000267'); //输入的产品编号无效
edtItem.SetFocus;
Abort;
end;
end;
procedure TPur120_02Form.edtPriceKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
ValidFloat(Sender,Key);
end;
initialization
RegisterClass(TPur120_02Form);
finalization
UnRegisterClass(TPur120_02Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -