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

📄 ufrmopenaccount.pas

📁 小银行系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit UfrmOpenAccount;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, U_child1_1, Mask, StdCtrls, Buttons, ExtCtrls, DosMove,
  DBTables, DB, DBClient, Provider, ADODB, DBCtrls, Grids, DBGridEh,
  wwdblook;

type
  TfrmOpenAccount = class(TF_child1_1)
    PanTop: TPanel;
    Label3: TLabel;
    Label5: TLabel;
    Label11: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Edtfac_nm: TEdit;
    Edtsec_nm: TEdit;
    BitBtn_query: TBitBtn;
    Edtpers: TEdit;
    EdtPY: TEdit;
    BitBtn1: TBitBtn;
    Edtyymmdd: TMaskEdit;
    Label14: TLabel;
    Label8: TLabel;
    Label15: TLabel;
    DBEdit20: TDBEdit;
    ADOFactory: TADODataSet;
    ADOFactoryfac_no: TStringField;
    ADOFactoryfac_nm: TStringField;
    ADOsec: TADODataSet;
    ADOsecsec_no: TStringField;
    ADOsecsec_nm: TStringField;
    Label26: TLabel;
    MaskEdit1: TMaskEdit;
    wwDBLookupCombosec_no: TwwDBLookupCombo;
    Label4: TLabel;
    wwDBLookupComboFac_no: TwwDBLookupCombo;
    ClientDataSet1ACC_NO: TStringField;
    ClientDataSet1Per_na: TStringField;
    ClientDataSet1Per_no: TStringField;
    ClientDataSet1fac_no: TStringField;
    ClientDataSet1sec_no: TStringField;
    ClientDataSet1Bz_no: TStringField;
    ClientDataSet1Cre_date: TStringField;
    ClientDataSet1remark: TStringField;
    ClientDataSet1PY: TStringField;
    ClientDataSet1fac_nm: TStringField;
    ClientDataSet1sec_nm: TStringField;
    Label1: TLabel;
    DBEdit3: TDBEdit;
    Label2: TLabel;
    Label6: TLabel;
    DBEdit5: TDBEdit;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit4: TDBEdit;
    Label9: TLabel;
    EdtACC_NO: TEdit;
    Label10: TLabel;
    DBEdit6: TDBEdit;
    ClientDataSet1add_date: TStringField;
    ClientDataSet1add_user: TStringField;
    ClientDataSet1edit_date: TStringField;
    ClientDataSet1edit_user: TStringField;
    Edtendyymmdd: TMaskEdit;
    ClientDataSet1New_fac_no: TStringField;
    ClientDataSet1New_sec_no: TStringField;
    Label12: TLabel;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    Label13: TLabel;
    DBEdit13: TDBEdit;
    DBEdit14: TDBEdit;
    ClientDataSet1Cancel_YN: TStringField;
    ClientDataSet1cancel_date: TStringField;
    ClientDataSet1New_fac_nm: TStringField;
    ClientDataSet1New_sec_nm: TStringField;
    Label17: TLabel;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    StaticText6: TStaticText;
    StaticText7: TStaticText;
    StaticText8: TStaticText;
    StaticText9: TStaticText;
    StaticText10: TStaticText;
    EdtIN_10: TEdit;
    EdtIN_9: TEdit;
    EdtIN_8: TEdit;
    EdtIN_5: TEdit;
    EdtIN_7: TEdit;
    EdtIN_6: TEdit;
    EdtIN_2: TEdit;
    EdtIN_4: TEdit;
    EdtIN_3: TEdit;
    EdtIN_1: TEdit;
    Label16: TLabel;
    EdtPer_no: TEdit;
    EdtPer_na: TEdit;
    CheckBox1: TCheckBox;
    ClientDataSet1IN_10: TStringField;
    ClientDataSet1IN_9: TStringField;
    ClientDataSet1IN_8: TStringField;
    ClientDataSet1IN_7: TStringField;
    ClientDataSet1IN_6: TStringField;
    ClientDataSet1IN_5: TStringField;
    ClientDataSet1IN_4: TStringField;
    ClientDataSet1IN_3: TStringField;
    ClientDataSet1IN_2: TStringField;
    ClientDataSet1IN_1: TStringField;
    ClientDataSet1serial_no: TStringField;
    Label18: TLabel;
    DBEdit15: TDBEdit;
    Shape1: TShape;
    UpdateSQL2: TUpdateSQL;
    ClientDataSet1IN_money: TBCDField;
    ClientDataSet1Cdate: TStringField;
    ClientDataSet1rem_money: TBCDField;
    Label19: TLabel;
    DBEdit16: TDBEdit;
    Label20: TLabel;
    DBEdit17: TDBEdit;
    ClientDataSet1rep_loss_YN: TStringField;
    ClientDataSet1rep_loss_date: TStringField;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure BitBtn_queryClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure MaskEdit1Exit(Sender: TObject);
    procedure wwDBLookupCombosec_noExit(Sender: TObject);
    procedure wwDBLookupComboFac_noExit(Sender: TObject);
    procedure DBEdit7Exit(Sender: TObject);
    procedure DBEdit10Exit(Sender: TObject);
    procedure DBEdit2Exit(Sender: TObject);
    procedure DBEdit11Exit(Sender: TObject);
    procedure DBEdit13Exit(Sender: TObject);
    procedure EdtPer_noExit(Sender: TObject);
    procedure ClientDataSet1CalcFields(DataSet: TDataSet);
    procedure ClientDataSet1AfterScroll(DataSet: TDataSet);
    procedure EdtIN_10Enter(Sender: TObject);
    procedure EdtIN_10KeyPress(Sender: TObject; var Key: Char);
    procedure EdtIN_10Exit(Sender: TObject);
    procedure DataSetProvider1BeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
    procedure MaskEdit1Enter(Sender: TObject);
    procedure EdtIN_1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    vpers :integer ;
    procedure refresh1;
  public
    { Public declarations }
    procedure DoInsert;override;
    procedure DoEdit;override;
    procedure DoGetData;override;
    procedure DoDelete;override;
    procedure DoSave;override;
    procedure DoCancel;override;
  end;

var
  frmOpenAccount: TfrmOpenAccount;
  frmFirst,confirm,First_code :boolean;

implementation
uses U_main,UDM,U_sele,user_func,fuct_server,UExcelTools;

{$R *.dfm}

procedure TfrmOpenAccount.DoInsert;
begin
  inherited;
  if confirm =false then
  begin
     f_main.B_cancel.Click ;
     exit ;
  end ;

  MaskEdit1.Text :=f_main.vTodayDate ;
  MaskEdit1.Visible :=true;
  DBEdit4.Visible :=false;

  self.ClientDataSet1.FieldByName('Cancel_YN').AsString := 'N';
  self.ClientDataSet1.FieldByName('rep_loss_YN').AsString :='N' ;
  self.ClientDataSet1.FieldByName('Cre_date').AsString := f_main.vTodayDate ;
  self.ClientDataSet1.FieldByName('add_date').AsString :=f_main.vTodayDate ;
  self.ClientDataSet1.FieldByName('add_user').AsString :=f_main.vuser_no ;
  DBEdit11.Enabled :=false ;
  DBEdit13.Enabled :=false ;
  First_code :=true ;
  DBEdit1.Enabled :=false ;
  DBEdit2.SetFocus ;
end;

procedure TfrmOpenAccount.DoEdit;
begin
  inherited;
  if confirm =false then
  begin
     f_main.B_cancel.Click ;
     exit ;
  end ;
  MaskEdit1.Visible :=true;
  DBEdit4.Visible :=false;
  MaskEdit1.Text := self.ClientDataSet1.FieldByName('Cre_date').AsString ;
  self.ClientDataSet1.FieldByName('edit_date').AsString :=f_main.vTodayDate ;
  self.ClientDataSet1.FieldByName('edit_user').AsString :=f_main.vuser_no ;
  DBEdit11.Enabled :=true ;
  DBEdit13.Enabled :=true ;
end;

procedure TfrmOpenAccount.DoGetData;
begin
  inherited;
end;

procedure TfrmOpenAccount.DoDelete;
var sqlstr:string;
  TempAdo :TAdodataSet;
begin
    sqlstr:='select count(*) nn from Deposit where ACC_NO='''+EdtACC_NO.Text+'''';
    TempAdo := TAdodataSet.Create(nil);
    try
      TempAdo.Connection := DM.ADOConnection1 ;
      TempAdo.CommandText := Sqlstr;
      TempAdo.Prepared := True;
      TempAdo.Open;

      if TempAdo.FieldByName('nn').AsInteger >0 then
      begin
          MessageDlg('对不起该资料'+char(10)+'已发生存取款业务,不能删除!', mtInformation,[mbOk], 0);
          f_main.B_cancel.Click;
          exit ;
      end;
   finally
     TempAdo.Free ;
   end ;

  inherited;
end;

procedure TfrmOpenAccount.DoCancel;
begin
  inherited;
  MaskEdit1.Visible :=false;
  DBEdit4.Visible :=true;

end;

//存档
procedure TfrmOpenAccount.DoSave;
var Sqlstr,vnum:string;
  nn: integer;
  TempAdo : TAdodataSet;
  vIN_money :real;
  sIN_money :string ;
  vIN_10,vIN_9,vIN_8,vIN_7,vIN_6,vIN_5,vIN_4,vIN_3,vIN_2,vIN_1 :string ;
begin
  //产生帐号
  if (self.ClientDataSet1.State=dsInsert)  then
  begin
    TempAdo := TAdodataSet.Create(nil);
    sqlstr := 'select max(Acc_no) dno, CONVERT(int,substring(max(Acc_no),6,4)) nn '
       +'FROM Account where fac_no='''+DBEdit7.Text+
       ''' AND sec_no='''+DBEdit10.Text+'''' ;
    try
      TempAdo.Connection := DM.ADOConnection1 ;
      TempAdo.CommandText := Sqlstr;
      TempAdo.Prepared := True;
      TempAdo.Open;

      nn := TempAdo.fieldbyname('nn').Asinteger ;
      vnum := DBEdit7.Text + DBEdit10.Text+ Right('0000'+trim(IntToStr(nn+1)),4);

      self.ClientDataSet1.FieldByName('Acc_no').AsString:=vnum;
    finally
      TempAdo.Free;
    end;
  end ;

  sqlstr:='select count(*) nn from Account where ACC_NO='''+DBEdit1.Text+'''' ;
  TempAdo := TAdodataSet.Create(nil);
  try
    TempAdo.Connection := DM.ADOConnection1 ;
    TempAdo.CommandText := Sqlstr;
    TempAdo.Prepared := True;
    TempAdo.Open;

  if (self.ClientDataSet1.State=dsInsert)  then
  begin
     if TempAdo.FieldByName('nn').AsInteger >0 then
     begin
        MessageDlg('对不起该资料'+char(10)+'在你存档前已经存在.', mtInformation,[mbOk], 0);
        f_main.B_cancel.Click;
        exit ;
     end;
  end;
  if (self.ClientDataSet1.State=dsEdit)  then
  begin
     if TempAdo.FieldByName('nn').AsInteger=0 then
     begin
        MessageDlg('对不起该资料'+char(10)+'在你存档前已经不存在.'+char(10)+'请重新读取资料', mtInformation,[mbOk], 0);
        f_main.B_cancel.Click;
        exit ;
     end;
  end;
  finally
    TempAdo.Free;
  end;

  //存款金额
  if EdtIN_10.Text='' then
     vIN_10 :='0'
  else
     vIN_10 :=EdtIN_10.Text ;
  if EdtIN_9.Text='' then
     vIN_9 :='0'
  else
     vIN_9 :=EdtIN_9.Text ;
  if EdtIN_8.Text='' then
     vIN_8 :='0'
  else
     vIN_8 :=EdtIN_8.Text ;
  if EdtIN_7.Text='' then
     vIN_7 :='0'
  else
     vIN_7 :=EdtIN_7.Text ;
  if EdtIN_6.Text='' then
     vIN_6 :='0'
  else
     vIN_6 :=EdtIN_6.Text ;
  if EdtIN_5.Text='' then
     vIN_5 :='0'
  else
     vIN_5 :=EdtIN_5.Text ;
  if EdtIN_4.Text='' then
     vIN_4 :='0'
  else
     vIN_4 :=EdtIN_4.Text ;
  if EdtIN_3.Text='' then
     vIN_3 :='0'
  else
     vIN_3 :=EdtIN_3.Text ;
  if EdtIN_2.Text='' then
     vIN_2 :='0'
  else
     vIN_2 :=EdtIN_2.Text ;
  if EdtIN_1.Text='' then
     vIN_1 :='0'
  else
     vIN_1 :=EdtIN_1.Text ;

  sIN_money :=vIN_10 + vIN_9 + vIN_8 + vIN_7 +vIN_6 + vIN_5 +
              vIN_4 + vIN_3 +'.'+ vIN_2 + vIN_1 ;
  vIN_money := StrToFloat(Trim(sIN_money));

  if (self.ClientDataSet1.State=dsInsert) and (vIN_money=0) then
  begin
     showmessage('存款金额不能为0,请重新输入!');
     EdtIN_10.SetFocus ;
     exit ;
  end;

  if (self.ClientDataSet1.State=dsInsert) or
     (self.ClientDataSet1.State=dsEdit)  then
  begin
     self.ClientDataSet1Cdate.Value := MaskEdit1.Text ;
     self.ClientDataSet1IN_money.Value  := vIN_money ;
     self.ClientDataSet1REM_money.Value := vIN_money ;
  end ;

  inherited;
  if (self.ClientDataSet1.State=dsInsert) then
  begin
     vpers := vpers + 1 ;
     Edtpers.Text := inttostr(vpers) ;
  end ;
  MaskEdit1.Visible :=false;
  DBEdit4.Visible :=true;
  DBEdit11.Enabled :=false ;
  DBEdit13.Enabled :=false ;
end;

procedure TfrmOpenAccount.BitBtn1Click(Sender: TObject);
begin
  inherited;
  close ;
end;

procedure TfrmOpenAccount.FormCreate(Sender: TObject);
var sqlstr:string;
begin
  inherited;
  self.ADOFactory.Active :=true;
  self.ADOsec.Active :=true;
  frmFirst :=true;
  confirm :=false ;
  Edtyymmdd.Text := Copy(f_main.vTodayDate,1,7)+'-01' ;
  Edtendyymmdd.Text :=f_main.vTodayDate ;

  sqlstr :='';
  sqlstr := sqlstr+' and A.Cre_date>='''+ Edtyymmdd.Text+'''' ;
  sqlstr := sqlstr+' and A.Cre_date<='''+ Edtendyymmdd.Text+'''' ;
  //sqlstr := sqlstr+' and A.Cancel_YN<>''Y'' ' ;
  sqlstr := copy(sqlstr,6,length(sqlstr)-5);
  if trim(sqlstr)<>'' then
     sqlstr := ' where '+sqlstr ;

  sqlstr:='SELECT A.*,B.fac_nm,C.sec_nm,E.fac_nm New_fac_nm,F.sec_nm New_sec_nm,'+
   'G.Cdate, G.IN_money, G.rem_money '+
   ' FROM Account  A LEFT  JOIN factory  B  ON A.fac_no = B.fac_no '+
   ' LEFT  JOIN Sec C ON A.sec_no = C.sec_no '+
   ' LEFT  JOIN factory  E  ON A.New_fac_no = E.fac_no '+
   ' LEFT  JOIN Sec F ON A.New_sec_no = F.sec_no '+
   ' LEFT  JOIN Deposit G ON A.Acc_no=G.Acc_no '+
   ' AND A.Cre_date=G.Cdate  AND A.serial_no=G.serial_no '+sqlstr +
   ' ORDER  BY A.Acc_no ';


  self.ClientDataSet1.Active :=false;
  self.ADODataSet1.CommandText:=sqlstr;
  self.ClientDataSet1.Active :=true;
  self.DBGrid1.Visible :=true;
  //Edtpers.Text := inttostr(self.ClientDataSet1.RecordCount) ;
  vpers := self.ClientDataSet1.RecordCount ;
  Edtpers.Text := inttostr(vpers) ;
  MaskEdit1.Visible :=false;
  DBEdit4.Visible :=true;
  confirm :=true ;

end;

procedure TfrmOpenAccount.FormActivate(Sender: TObject);
begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -