⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bankinout.pas

📁 飞恒进销存(超市批发)管理系统V5.1(含源程序) 语言:Delphi 6/7 相关控件:FastReport 2.4以上, Ehlib 3.4以上 1.数据库为fhe2db_V51.da
💻 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 + -