📄 bankinout.pas
字号:
unit BankInOut;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unitmb, DBCtrlsEh, ExtCtrls, DBCtrls, ImgList, Menus, ComCtrls,
Buttons, ToolWin, StdCtrls, Mask, Grids, DBGridEh, FR_Ctrls;
type
TBankInOutFrm = class(TmbForm)
Label6: TLabel;
Label10: TLabel;
Shape1: TShape;
Label5: TLabel;
dbeAmount: TDBEditEh;
dbeOutBankName: TDBEditEh;
Label9: TLabel;
Label7: TLabel;
dbeInBankName: TDBEditEh;
dbeExeManName: TDBEditEh;
Label4: TLabel;
edtCheckNo: TEdit;
edtMemo1: TEdit;
procedure dbeOutBankNameEditButtons0Click(Sender: TObject;
var Handled: Boolean);
procedure dbeInBankNameEditButtons0Click(Sender: TObject;
var Handled: Boolean);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure cmdAddClick(Sender: TObject);
procedure cmdSaveClick(Sender: TObject);
procedure cmdEditClick(Sender: TObject);
procedure cmdPriorClick(Sender: TObject);
procedure cmdNextClick(Sender: TObject);
procedure dbeExeManNameEditButtons0Click(Sender: TObject;
var Handled: Boolean);
procedure dbeAmountKeyPress(Sender: TObject; var Key: Char);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
nOutBankId,nInBankId,nOldOutBankId,nOldInBankId:integer;
nOldAmount:Currency;
Function GetPriorNext(bPrior:boolean;tablename:string):boolean;
procedure InsertMaster(sInvono:string);override;
procedure UpdateMaster;override;
procedure ShowMasterSpecial(bAdd:boolean);override;
procedure ShowMasterInfo(bPrior:boolean);
procedure UpdateBankAmount(ABankId:Integer;Aamount:Real);
public
{ Public declarations }
end;
var
BankInOutFrm: TBankInOutFrm;
implementation
uses selPaytype, datamodule1;
{$R *.dfm}
procedure TBankInOutFrm.dbeOutBankNameEditButtons0Click(Sender: TObject;
var Handled: Boolean);
begin
inherited;
if not cmdSave.Enabled then exit;
dlgselPayType.Newsql:='select Bankid as id,name from bank ';
dlgSelpaytype.Top :=self.top+dbeOutBankName.Top +81;
dlgSelpaytype.Left :=self.Left+dbeOutBankName.left+4;
if dlgselPayType.showmodal=mrok then
with dataE2 do
begin
dbeOutBankName.Text :=dlgselPayType.xName;
nOutBankId:=dlgSelPaytype.xid;
end;
end;
procedure TBankInOutFrm.dbeInBankNameEditButtons0Click(Sender: TObject;
var Handled: Boolean);
begin
inherited;
if not cmdSave.Enabled then exit;
dlgselPayType.Newsql:='select Bankid as id,name from bank ';
dlgSelpaytype.Top :=self.top+dbeInBankName.Top +81;
dlgSelpaytype.Left :=self.Left+dbeInBankName.left+4;
if dlgselPayType.showmodal=mrok then
with dataE2 do
begin
dbeInBankName.Text :=dlgselPayType.xName;
nInBankId:=dlgSelPaytype.xid;
end;
end;
procedure TBankInOutFrm.FormCreate(Sender: TObject);
begin
//inherited;
nTableId:=17;
myTable:=dataE2.aTblName[nTableId];
end;
procedure TBankInOutFrm.InsertMaster(sInvono: string);
begin
inherited;
with dataE2 do
begin
adoCmd.commandtext:='insert into '+myTable+' values ( :BillNo, :billdate, :operator, :EmployId, :Amount, :InBankId, :OutBankId, :CheckNo, :Memo)';
adoCmd.parameters[0].value:=sInvoNo;
adoCmd.parameters[1].value:=edtBillDate.date;
adoCmd.parameters[2].value:=myUsrName;
adoCmd.parameters[3].value:=nEmployid;
adoCmd.parameters[4].value:=StrToCurr(dbeAmount.Text);
adoCmd.parameters[5].value:=nInBankId;
adoCmd.parameters[6].value:=nOutBankId;
adoCmd.parameters[7].value:=Trim(edtCheckNo.Text);
adoCmd.parameters[8].value:=Trim(edtMemo1.Text);
adoCmd.execute;
end;
UpdateBankAmount(nOutBankId,-StrToCurr(dbeAmount.Text));
UpdateBankAmount(nInBankId,StrToCurr(dbeAmount.Text));
end;
procedure TBankInOutFrm.ShowMasterSpecial(bAdd: boolean);
var
sSql:string;
begin
inherited;
with DataE2 do
if not bAdd then
begin
nEmployId:=adoquery1.fieldbyname('EmployId').asinteger;
nOldAmount:=adoquery1.fieldbyname('BillAmt').AsCurrency;
dbeAmount.Text:=CurrToStr(nOldAmount);
nInBankId:=adoquery1.fieldbyname('InBankId').asinteger;
nOutBankId:=adoquery1.fieldbyname('OutBankId').asinteger;
edtCheckNo.Text:=trim(adoquery1.fieldbyname('CheckNo').asstring);
edtMemo1.text:=trim(adoquery1.fieldbyname('Memo').asstring);
if OpenTable('select * from bank where bankId= :bankid',nOutBankId) then
dbeOutBankName.Text:=adoquery1.fieldbyname('name').asstring;
if OpenTable('select * from bank where bankId= :bankid',nInBankId) then
dbeInBankName.Text:=adoquery1.fieldbyname('name').asstring;
if OpenTable('select * from Employ where EmployID= :EmployID',nEmployId) then
dbeExeManName.Text:=adoquery1.fieldbyname('name').asstring;
end
else begin //add emptye record,so clear last infomation
nInBankId:=-1;
nOutBankId:=-1;
nEmployid:=-1;
dbeOutBankName.Text:='';
dbeInBankName.Text:='';
dbeExeManName.Text:='';
dbeAmount.Text:='';
edtCheckNo.Text:='';
edtMemo1.Text:='';
end;
end;
procedure TBankInOutFrm.FormShow(Sender: TObject);
begin
//inherited;
cmdNext.Enabled:=false;
edtBillDate.Date :=date;
end;
procedure TBankInOutFrm.cmdAddClick(Sender: TObject);
begin
//inherited;
bNew:=true;
edtBillDate.Date :=date;
{nInBankId:=-1;
nOutBankId:=-1;
nEmployid:=-1;
dbeAmount.Text:='';
edtCheckNo.Text:='';
edtMemo1.Text:=''; }
SetCommandStatus(3);
edtInvono.Text:=DataE2.GetInvono(mytable,'SEE');
ShowMasterSpecial(true);
end;
procedure TBankInOutFrm.cmdSaveClick(Sender: TObject);
var
sInvono:string;
begin
//inherited;
if (dbeAmount.Text='') or (dbeAmount.Text='0') then
begin
Application.MessageBox('请输入金额!','提示',64);
dbeAmount.SetFocus;
exit;
end;
try
SetCommandStatus(2);
if bNew then
begin
sInvoNo:=DataE2.getInvono(mytable,'NEW');
InsertMaster(sInvoNo);
end else UpdateMaster;
bNew:=false;
except
on E:Exception do
Application.MessageBox(Pchar(e.Message),'提示',64);
end;
end;
procedure TBankInOutFrm.UpdateMaster;
var
sSQL:String;
begin
inherited;
with dataE2 do
begin
sSQL:='update '+myTable+' set billdate=:billdate, operator=:operator, EmployId=:EmployId,';
sSQL:=sSQL+'BillAmt=:BillAmt, InBankId=:InBankId, OutBankId=:OutBankId, CheckNo=:CheckNo, Memo=:Memo';
sSQL:=sSQL+' where BillNo= :BillNo';
adoCmd.commandtext:=sSQL;
adoCmd.parameters[0].value:=edtBillDate.date;
adoCmd.parameters[1].value:=myUsrName;
adoCmd.parameters[2].value:=nEmployid;
adoCmd.parameters[3].value:=StrToCurr(dbeAmount.Text);
adoCmd.parameters[4].value:=nInBankId;
adoCmd.parameters[5].value:=nOutBankId;
adoCmd.parameters[6].value:=Trim(edtCheckNo.Text);
adoCmd.parameters[7].value:=Trim(edtMemo1.Text);
adoCmd.parameters[8].value:=Trim(edtInvoNo.Text);
adoCmd.execute;
end;
UpdateBankAmount(nOldOutBankId,nOldAmount);
UpdateBankAmount(nOldInBankId,-nOldAmount);
UpdateBankAmount(nOutBankId,-StrToCurr(dbeAmount.Text));
UpdateBankAmount(nInBankId,StrToCurr(dbeAmount.Text));
end;
procedure TBankInOutFrm.cmdEditClick(Sender: TObject);
begin
//inherited;
bNew:=false;
nOldOutBankId:=nOutBankId;
nOldInBankId:=nInBankId;
nOldEmployId:=nEmployId;
SetCommandStatus(3);
end;
procedure TBankInOutFrm.cmdPriorClick(Sender: TObject);
begin
//inherited;
ShowMasterInfo(true);
end;
procedure TBankInOutFrm.ShowMasterInfo(bPrior: boolean);
begin
setCommandStatus(2);
if bPrior and not cmdNext.enabled then
begin
cmdNext.Enabled:=true;
cmdnext.ImageIndex:=12;
end;
if GetPriorNext(bPrior,myTable) then //have a record
with dataE2 do
begin
edtBillDate.date :=adoQuery1.fieldbyname('billdate').asdatetime;
edtInvoNo.text :=adoQuery1.fieldbyname('BillNo').asstring;
ShowMasterSpecial(false);
end;
end;
procedure TBankInOutFrm.cmdNextClick(Sender: TObject);
begin
//inherited;
ShowMasterInfo(false);
end;
function TBankInOutFrm.GetPriorNext(bPrior: boolean; tablename: string): boolean;
var
sSql:String;
begin
sSql:='select top 1 * from ';
if bPrior then
begin
if Trim(edtInvoNo.Text)='' then
sSql:=sSql+ tableName+ ' order by BillNo desc'
else
sSql:=sSql+ tableName+ ' where BillNo < :BillNo order by BillNo desc'; end
else
sSql:=sSql+ tableName+ ' where BillNo > :BillNo ';
with dataE2 do
begin
if adoquery1.active then adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add(sSql);
if Trim(edtInvoNo.Text)<>'' then
adoquery1.parameters[0].value:=Trim(edtInvoNo.Text);
adoQuery1.open;
result:=not adoquery1.eof;
end;
end;
procedure TBankInOutFrm.dbeExeManNameEditButtons0Click(Sender: TObject;
var Handled: Boolean);
begin
inherited;
if not cmdSave.Enabled then exit;
dlgselPayType.Newsql:='select EmployId as id,name from employ ';
dlgSelpaytype.Top :=self.top+dbeExeManName.Top +81;
dlgSelpaytype.Left :=self.Left+dbeExeManName.left+4;
if dlgselPayType.showmodal=mrok then
with dataE2 do
begin
dbeExeManName.Text :=dlgselPayType.xName;
nEmployId:=dlgSelPaytype.xid;
end;
end;
procedure TBankInOutFrm.UpdateBankAmount(ABankId: Integer; Aamount: Real);
begin
with dataE2 do
begin
adoCmd.commandtext:='update bank set Amount=Amount+:Amount where Bankid=:Bankid';
adoCmd.parameters[0].value:=Aamount;
adoCmd.parameters[1].value:=ABankId;
adoCmd.execute;
end;
end;
procedure TBankInOutFrm.dbeAmountKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if not (key in ['0'..'9','.',#8]) then
Key := Chr(0);
end;
procedure TBankInOutFrm.FormKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
//------按回车键后跳到下一个控件------
if key = #13 then
if (not (ActiveControl is TDBGridEh)) and ActiveControl.Enabled
and ActiveControl.Visible then
begin
key := #0;
perform(wm_nextdlgctl,0,0);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -