?? ord130_02.pas.svn-base
字號(hào):
unit Ord130_02;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_16, DB, wwdbdatetimepicker, StdCtrls, Buttons, ADODB,
Menus, ExtCtrls, Grids, Wwdbigrd, Wwdbgrid;
type
TOrd130_02Form = class(TBas200_16Form)
lblItem: TLabel;
lblSpec: TLabel;
lblCurr: TLabel;
lblDate: TLabel;
lblPrice: TLabel;
sbItem: TSpeedButton;
lblUnit: TLabel;
edtItem: TEdit;
edtItemName: TEdit;
edtSpec: TEdit;
cbCurr: TComboBox;
edtDate: TwwDBDateTimePicker;
edtPrice: TEdit;
edtUnit: 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;
ADOQuery1I150_002: TStringField;
ADOQuery1I150_003: TStringField;
ADOQuery1I150_004: TStringField;
ADOQuery1I140_002: TStringField;
ADOQuery1I140_003: TStringField;
ADOQuery1G100_002: TStringField;
ADOQuery1O130_003: TDateTimeField;
ADOQuery1O130_004: TBCDField;
ADOQuery1O130_001: TIntegerField;
ADOQuery1O130_002: TIntegerField;
qryOrd130: TADOQuery;
Panel1: TPanel;
adsOrd130: TADODataSet;
dsOrd130: TDataSource;
adsOrd130FItem: TStringField;
adsOrd130FItemName: TStringField;
adsOrd130FPrice: TFloatField;
adsOrd130FCurr: TStringField;
adsOrd130FDate: TDateTimeField;
qryOrd130I150_002: TWideStringField;
qryOrd130I150_003: TWideStringField;
qryOrd130O130_004: TFloatField;
qryOrd130G100_002: TWideStringField;
qryOrd130O130_003: TDateTimeField;
GroupBox1: TGroupBox;
wwDBGrid1: TwwDBGrid;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edtPriceKeyPress(Sender: TObject; var Key: Char);
procedure sbItemClick(Sender: TObject);
procedure edtItemExit(Sender: TObject);
private
AOldItem,AOldCurr:Integer;
AOldDate:TDateTime;
procedure GetSameItem(AItem:string);
{ Private declarations }
public
procedure OpenData(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
Ord130_02Form: TOrd130_02Form;
implementation
uses SYSDATA, CommFun, HwSelData;
{$R *.dfm}
procedure TOrd130_02Form.OpenData(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 ORD130 order by O130_001,O130_002,O130_003');
ADOQuery1.Open;
ADOQuery1.Locate('O130_001;O130_002;O130_003',VarArrayOf([AItemNo,ACurrNo,ADate]),[]);
ADOQuery1AfterScroll(ADOQuery1);
end;
procedure TOrd130_02Form.SetInterface;
begin
inherited;
Caption:=GetDBString('ORD13002001'); //銷售價(jià)格維護(hù)
lblItem.Caption:=GetDBString('ORD13002002'); //產(chǎn)品編號(hào)
lblSpec.Caption:=GetDBString('ORD13002003'); //規(guī)格型號(hào)
lblUnit.Caption:=GetDBString('ORD13002004'); //計(jì)量單位
lblCurr.Caption:=GetDBString('ORD13002005'); //幣別名稱
lblDate.Caption:=GetDBString('ORD13002006'); //生效日期
lblPrice.Caption:=GetDBString('ORD13002007'); //銷售價(jià)格
bbtnOk.Caption:=GetDBString('ORD13002008'); //保存(&S)
bbtnExit.Caption:=GetDBString('ORD13002009'); //退出(&X)
qryInv150I150_002.DisplayLabel:=GetDBString('ORD13002010'); //產(chǎn)品編號(hào)
qryInv150I150_003.DisplayLabel:=GetDBString('ORD13002011'); //產(chǎn)品名稱
qryInv150I150_004.DisplayLabel:=GetDBString('ORD13002012'); //規(guī)格型號(hào)
qryInv150I140_002.DisplayLabel:=GetDBString('ORD13002013'); //單位編號(hào)
qryInv150I140_003.DisplayLabel:=GetDBString('ORD13002014'); //單位名稱
adsOrd130FItem.DisplayLabel:=GetDBString('ORD13002015'); //料品編號(hào)
adsOrd130FItemName.DisplayLabel:=GetDBString('ORD13002016'); //料品名稱
adsOrd130FPrice.DisplayLabel:=GetDBString('ORD13002017'); //銷售價(jià)格
adsOrd130FCurr.DisplayLabel:=GetDBString('ORD13002018'); //幣別編號(hào)
adsOrd130FDate.DisplayLabel:=GetDBString('ORD13002019'); //生效日期
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);
adsOrd130.Close;
adsOrd130.CreateDataSet;
end;
procedure TOrd130_02Form.FormCreate(Sender: TObject);
begin
inherited;
qryInv150.Open;
end;
procedure TOrd130_02Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
qryGld100.Close;
qryInv150.Close;
end;
procedure TOrd130_02Form.GetDataInfo;
begin
inherited;
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('O130_003').Value;
edtPrice.Text:=ADOQuery1.FieldByName('O130_004').AsString;
AOldItem:=ADOQuery1.FieldByName('O130_001').AsInteger;
AOldCurr:=ADOQuery1.FieldByName('O130_002').AsInteger;
AOldDate:=ADOQuery1.FieldByName('O130_003').AsDateTime;
GetSameItem(edtItem.Text);
end;
procedure TOrd130_02Form.InsertInit;
begin
inherited;
SetEmptyInit;
end;
procedure TOrd130_02Form.SetEmptyInit;
begin
inherited;
edtItem.Text:='';
edtItemName.Text:='';
edtSpec.Text:='';
cbCurr.ItemIndex:=cbCurr.Items.IndexOf(ACurrID);
edtDate.Date:=GetServerDate;
edtPrice.Text:='0.00';
if Visible then edtItem.SetFocus;
adsOrd130.Close;
adsOrd130.CreateDataSet;
end;
procedure TOrd130_02Form.TableAfterPost;
begin
inherited;
end;
procedure TOrd130_02Form.TableBeforePost;
var
AItemNo,ACurrNo:Integer;
begin
inherited;
if trim(edtItem.Text)='' then
begin
ShowMsg('UMS10000274'); //產(chǎn)品編號(hào)不能為空
edtItem.SetFocus;
Abort;
end;
if not qryInv150.Locate('I150_002',edtItem.Text,[]) then
begin
ShowMsg('UMS10000267'); //輸入的產(chǎn)品編號(hào)無效
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'); //輸入的幣別編號(hào)無效
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('UMS10000413'); //銷售價(jià)格不能為空或零
edtPrice.SetFocus;
Abort;
end;
if (AOldItem<>AItemNo) or (AOldCurr<>ACurrNo) or (AOldDate<>edtDate.Date) then
begin
if IsExists('select 1 from ORD130 where O130_001='+IntToStr(AItemNo)+' and O130_002='+IntToStr(ACurrNo)+' and O130_003='+GetDateString(edtDate.Date)) then
begin
ShowMsg('UMS10000414'); //相同信息的記錄已存在,請(qǐng)重新輸入
edtDate.SetFocus;
Abort;
end;
end;
if AMode='ADD' then ADOQuery1.Append else ADOQuery1.Edit;
ADOQuery1.FieldByName('O130_001').Value:=AItemNo;
ADOQuery1.FieldByName('O130_002').Value:=ACurrNo;
ADOQuery1.FieldByName('O130_003').Value:=edtDate.Date;
ADOQuery1.FieldByName('O130_004').AsString:=edtPrice.Text;
end;
procedure TOrd130_02Form.edtPriceKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
ValidFloat(Sender,Key);
end;
procedure TOrd130_02Form.sbItemClick(Sender: TObject);
begin
inherited;
//產(chǎn)品編號(hào)
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;
GetSameItem(edtItem.Text);
end;
end;
procedure TOrd130_02Form.edtItemExit(Sender: TObject);
begin
inherited;
//產(chǎn)品編號(hào)
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;
GetSameItem(edtItem.Text);
end else
begin
edtItem.Text:='';
edtItemName.Text:='';
edtUnit.Text:='';
ShowMsg('UMS10000267'); //輸入的產(chǎn)品編號(hào)無效
edtItem.SetFocus;
Abort;
end;
end;
procedure TOrd130_02Form.GetSameItem(AItem: string);
begin
qryOrd130.Close;
qryOrd130.SQL.Clear;
qryOrd130.SQL.Add('select I150_002,I150_003,O130_004,G100_002,O130_003');
qryOrd130.SQL.Add(' from ORD130,GLD100,INV150');
qryOrd130.SQL.Add(' where O130_002=G100_001 and O130_001=I150_001 and I150_002='+''''+AItem+''''+' Order By O130_003');
qryOrd130.Open;
qryOrd130.First;
adsOrd130.Close;
adsOrd130.CreateDataSet;
while not qryOrd130.Eof do
begin
if not (adsOrd130.State in [dsInsert,dsEdit]) then adsOrd130.Append;
adsOrd130.FieldByName('FItem').Value:=qryOrd130.fieldByName('I150_002').Value;
adsOrd130.FieldByName('FItemName').Value:=qryOrd130.fieldByName('I150_003').Value;
adsOrd130.FieldByName('FPrice').Value:=qryOrd130.fieldByName('O130_004').Value;
adsOrd130.FieldByName('FCurr').Value:=qryOrd130.fieldByName('G100_002').Value;
adsOrd130.FieldByName('FDate').Value:=qryOrd130.fieldByName('O130_003').Value;
adsOrd130.Post;
qryOrd130.Next;
end;
wwDBGrid1.Columns[0].ReadOnly:=True;
wwDBGrid1.Columns[1].ReadOnly:=True;
wwDBGrid1.Columns[2].ReadOnly:=True;
wwDBGrid1.Columns[3].ReadOnly:=True;
wwDBGrid1.Columns[4].ReadOnly:=True;
end;
initialization
RegisterClass(TOrd130_02Form);
finalization
UnRegisterClass(TOrd130_02Form);
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -