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

📄 ufrmopenaccount.pas

📁 小银行系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  inherited;
  if frmFirst=true then
  begin
     wwDBLookupComboFac_no.SetFocus ;
     frmFirst :=false;
     MaskEdit1.Visible :=false;
     DBEdit4.Visible :=true;
  end;
end;

procedure TfrmOpenAccount.BitBtn_queryClick(Sender: TObject);
var sqlstr:string;
  vlen: integer ;
begin
  inherited;
  sqlstr :='';
  if EdtACC_NO.Text <>''   then
     sqlstr :=sqlstr +' and A.Acc_no='''+edtAcc_no.Text +''''
  else
  begin
    if wwDBLookupComboFac_no.Text <>'' then
       sqlstr := sqlstr + ' and A.fac_no='''+ wwDBLookupComboFac_no.Text +'''';
    if wwDBLookupCombosec_no.Text <>'' then
       sqlstr := sqlstr + ' and A.sec_no='''+wwDBLookupCombosec_no.Text +'''';
    if (edtyymmdd.text <>'    -  -  ') then
        sqlstr := sqlstr+' and A.Cre_date>='''+ Edtyymmdd.Text+'''' ;
    if (Edtendyymmdd.Text<>'    -  -  ') then
       sqlstr := sqlstr+' and A.Cre_date<='''+ Edtendyymmdd.Text+'''' ;

    if Edtper_no.Text <>'' then
       sqlstr := sqlstr+' and A.per_no = '''+ EdtPer_no.Text +'''' ;
    if Edtper_na.Text <>'' then
       sqlstr := sqlstr+' and A.per_na like ''%'+ TRIM(Edtper_na.Text)+'%''' ;
    if EdtPY.Text <>'' then
       sqlstr := sqlstr+' and A.PY='''+ EdtPY.Text+ ''' ';
  end;
  if not CheckBox1.Checked then
     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;

  vpers := self.ClientDataSet1.RecordCount ;
  Edtpers.Text := inttostr(vpers) ;

  MaskEdit1.Visible :=false;
  DBEdit4.Visible :=true;
  confirm :=true ;
end;

procedure TfrmOpenAccount.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  self.ADOFactory.Free ;
  self.ADOsec.Free ;
  self.ADODataSet1.Free ;
  self.ClientDataSet1.Free ;
  self.DataSetProvider1.Free ;
  frmOpenAccount :=nil;
end;

procedure TfrmOpenAccount.MaskEdit1Exit(Sender: TObject);
var
  sqlstr,vnum:string;
  nn:integer;
  TempAdo :TAdodataSet ;
begin
  inherited;
  if not isdate(MaskEdit1.Text) then
  begin
     showmessage('开户日期输入错误,请重新输入!');
     MaskEdit1.SetFocus ;
     exit ;
  end ;
  DBEdit4.Text :=MaskEdit1.Text ;

  //产生流水号
  if (self.ClientDataSet1.State=dsInsert) then
  begin
    TempAdo := TAdodataSet.Create(nil);
    sqlstr := 'select max(serial_no) dno, CONVERT(int,substring(max(serial_no),9,2)) nn '
       +'from Deposit  where ACC_NO='''+DBEdit1.Text+''' AND Cdate='''+
        MaskEdit1.Text+'''' ;
    try
      TempAdo.Connection := DM.ADOConnection1 ;
      TempAdo.CommandText := Sqlstr;
      TempAdo.Prepared := True;
      TempAdo.Open;

      nn := TempAdo.fieldbyname('nn').Asinteger ;
      vnum := copy(MaskEdit1.Text,1,4)+copy(MaskEdit1.Text,6,2)
         +copy(MaskEdit1.Text,9,2)+right('00'+trim(IntToStr(nn+1)),2) ;

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

end;

procedure TfrmOpenAccount.wwDBLookupCombosec_noExit(Sender: TObject);
begin
  inherited;
  if  self.ADOsec.Locate('sec_no',wwDBLookupCombosec_no.Text,[])  then
      edtsec_nm.text :=self.ADOsec.fieldbyname('sec_nm').asstring;

end;

procedure TfrmOpenAccount.wwDBLookupComboFac_noExit(Sender: TObject);
begin
  inherited;
  if  self.ADOFactory.Locate('fac_no',wwDBLookupCombofac_no.Text,[])  then
      edtfac_nm.text :=self.ADOFactory.fieldbyname('fac_nm').asstring;

end;

procedure TfrmOpenAccount.DBEdit7Exit(Sender: TObject);
begin
  inherited;
  if f_main.ActiveControl =f_main.B_cancel then abort ;
  if  self.ADOFactory.Locate('fac_no',DBEdit7.Text,[])  then
  begin
     self.ClientDataSet1fac_nm.Value :=self.ADOFactory.fieldbyname('fac_nm').asstring;
  end
  else
  begin
    if F_sele=nil then F_sele:=TF_sele.Create(self);
       F_sele.DataSource1.DataSet:=self.ADOFactory ;
    if F_sele.ShowModal=mrOK then
       begin
         self.ClientDataSet1fac_no.Value  := self.ADOFactory.fieldbyname('fac_no').AsString ;
         self.ClientDataSet1fac_nm.Value := self.ADOFactory.fieldbyname('fac_nm').AsString ;
       end;
  end;

end;

procedure TfrmOpenAccount.DBEdit10Exit(Sender: TObject);
begin
  inherited;
  if f_main.ActiveControl =f_main.B_cancel then abort ;
  if  self.ADOsec.Locate('sec_no',DBEdit10.Text,[])  then
  begin
     self.ClientDataSet1sec_nm.Value :=self.ADOsec.fieldbyname('sec_nm').asstring;
  end
  else
  begin
    if F_sele=nil then F_sele:=TF_sele.Create(self);
       F_sele.DataSource1.DataSet:=self.ADOsec ;
    if F_sele.ShowModal=mrOK then
       begin
         self.ClientDataSet1sec_no.Value := self.ADOsec.fieldbyname('sec_no').AsString ;
         self.ClientDataSet1sec_nm.Value := self.ADOsec.fieldbyname('sec_nm').AsString ;
       end;
  end;

end;

procedure TfrmOpenAccount.DBEdit2Exit(Sender: TObject);
var vPY :string;
begin
  inherited;
  if (self.ClientDataSet1.State<>dsInsert) and 
     (self.ClientDataSet1.State<>dsEdit) then exit ;

  vPY := '' ;
  if trim(COPY(DBEdit2.Text,1,2))<>'' then
     vPY := vPY + GetPYIndexChar(COPY(DBEdit2.Text,1,2)) ;
  if trim(COPY(DBEdit2.Text,3,2))<>'' then
     vPY := vPY + GetPYIndexChar(COPY(DBEdit2.Text,3,2)) ;
  if trim(COPY(DBEdit2.Text,5,2))<>'' then
     vPY := vPY + GetPYIndexChar(COPY(DBEdit2.Text,5,2)) ;
  if trim(COPY(DBEdit2.Text,7,2))<>'' then
     vPY := vPY + GetPYIndexChar(COPY(DBEdit2.Text,7,2)) ;

  self.ClientDataSet1PY.Value := vPY ;
end;

procedure TfrmOpenAccount.DBEdit11Exit(Sender: TObject);
begin
  inherited;
  if f_main.ActiveControl =f_main.B_cancel then abort ;
  if (self.ClientDataSet1.State<>dsEdit) then abort ;
  if  self.ADOFactory.Locate('fac_no',DBEdit11.Text,[])  then
  begin
     self.ClientDataSet1New_fac_nm.Value :=self.ADOFactory.fieldbyname('fac_nm').asstring;
  end
  else
  begin
    if F_sele=nil then F_sele:=TF_sele.Create(self);
       F_sele.DataSource1.DataSet:=self.ADOFactory ;
    if F_sele.ShowModal=mrOK then
       begin
         self.ClientDataSet1New_fac_no.Value  := self.ADOFactory.fieldbyname('fac_no').AsString ;
         self.ClientDataSet1New_fac_nm.Value := self.ADOFactory.fieldbyname('fac_nm').AsString ;
       end;
  end;

end;

procedure TfrmOpenAccount.DBEdit13Exit(Sender: TObject);
begin
  inherited;
  if f_main.ActiveControl =f_main.B_cancel then abort ;
  if (self.ClientDataSet1.State<>dsEdit) then abort ;
  if  self.ADOsec.Locate('sec_no',DBEdit13.Text,[])  then
  begin
     self.ClientDataSet1New_sec_nm.Value :=self.ADOsec.fieldbyname('sec_nm').asstring;
  end
  else
  begin
    if F_sele=nil then F_sele:=TF_sele.Create(self);
       F_sele.DataSource1.DataSet:=self.ADOsec ;
    if F_sele.ShowModal=mrOK then
       begin
         self.ClientDataSet1New_sec_no.Value := self.ADOsec.fieldbyname('sec_no').AsString ;
         self.ClientDataSet1New_sec_nm.Value := self.ADOsec.fieldbyname('sec_nm').AsString ;
       end;
  end;

end;

procedure TfrmOpenAccount.EdtPer_noExit(Sender: TObject);
var sqlstr:string;
  TempAdo :TAdodataSet ;
begin
  inherited;
  if EdtPer_no.Text =''  then exit ;
  sqlstr:='select per_na from Account where per_no='''+EdtPer_no.Text+'''' ;
  TempAdo := TAdodataSet.Create(nil);
  try
    TempAdo.Connection := DM.ADOConnection1 ;
    TempAdo.CommandText := Sqlstr;
    TempAdo.Prepared := True;
    TempAdo.Open;
    if not TempAdo.Eof then
       Edtper_na.Text := TempAdo.FieldByName('per_na').AsString
    else
    begin
        MessageDlg('对不起该工号没有开户资料', mtInformation,[mbOk], 0);
        Edtper_na.SetFocus ;
        exit ;
    end;
  finally
    TempAdo.Free ;
  end;

end;

procedure TfrmOpenAccount.ClientDataSet1CalcFields(DataSet: TDataSet);
var
  //小数点位置,小数点前位数,小数点后位数
  nPos,nLen,dLen:integer;
  sIN_money,nIN_money:string;
begin
  inherited;
   //存款部分
   //存款 角分元...
   if self.ClientDataSet1IN_money.AsFloat >0 then
   begin
       sIN_money := Trim(floattostr(self.ClientDataSet1IN_money.AsFloat));
       nPos :=Pos('.',sIN_money);
       if nPos>0 then
          dLen :=Length(Trim(COPY(sIN_money,nPos+1,2)))   //小数位数
       else
          dLen :=0 ;
       if nPos>0 then
          nIN_money := Trim(Copy(sIN_money,1,nPos-1))
       else
          nIN_money := sIN_money ;
       nIN_money :=nIN_money ;
       nLen :=Length(Trim(nIN_money)) ;  //整数位数


       //小数部分
       if dLen>0 then
          self.ClientDataSet1IN_2.Value := COPY(sIN_money,nPos+1,1)
       else
          if nLen>0 then
             self.ClientDataSet1IN_2.Value := '0' ;

       if dLen>1 then
          self.ClientDataSet1IN_1.Value := COPY(sIN_money,nPos+2,1)
       else
          if nLen>0 then
             self.ClientDataSet1IN_1.Value := '0' ;


       //整数部分
       if nLen >0 then
          self.ClientDataSet1IN_3.Value := COPY(nIN_money,nLen,1) ;
       if nLen >1 then
          self.ClientDataSet1IN_4.Value := COPY(nIN_money,nLen-1,1) ;
       if nLen >2 then
          self.ClientDataSet1IN_5.Value := COPY(nIN_money,nLen-2,1) ;
       if nLen >3 then
          self.ClientDataSet1IN_6.Value := COPY(nIN_money,nLen-3,1) ;
       if nLen >4 then
          self.ClientDataSet1IN_7.Value := COPY(nIN_money,nLen-4,1) ;
       if nLen >5 then
          self.ClientDataSet1IN_8.Value := COPY(nIN_money,nLen-5,1) ;
       if nLen >6 then
          self.ClientDataSet1IN_9.Value := COPY(nIN_money,nLen-6,1) ;
       if nLen >7 then
          self.ClientDataSet1IN_10.Value := COPY(nIN_money,nLen-7,1) ;
   end ;

end;

procedure TfrmOpenAccount.refresh1;
begin
  inherited;
  EdtIN_10.Text :=self.ClientDataSet1IN_10.Value ;
  EdtIN_9.Text :=self.ClientDataSet1IN_9.Value ;
  EdtIN_8.Text :=self.ClientDataSet1IN_8.Value ;
  EdtIN_7.Text :=self.ClientDataSet1IN_7.Value ;
  EdtIN_6.Text :=self.ClientDataSet1IN_6.Value ;
  EdtIN_5.Text :=self.ClientDataSet1IN_5.Value ;
  EdtIN_4.Text :=self.ClientDataSet1IN_4.Value ;
  EdtIN_3.Text :=self.ClientDataSet1IN_3.Value ;
  EdtIN_2.Text :=self.ClientDataSet1IN_2.Value ;
  EdtIN_1.Text :=self.ClientDataSet1IN_1.Value ;
end;

procedure TfrmOpenAccount.ClientDataSet1AfterScroll(DataSet: TDataSet);
begin
  inherited;
  self.refresh1 ;
end;

procedure TfrmOpenAccount.EdtIN_10Enter(Sender: TObject);
begin
  inherited;
  TEdit(Sender).SelectAll ;

end;

procedure TfrmOpenAccount.EdtIN_10KeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  PostMessage(Tedit(Sender).Handle, WM_KEYDOWN, 13, 0);
  //self.Perform(WM_NEXTDLGCTL,0, 0)

end;

procedure TfrmOpenAccount.EdtIN_10Exit(Sender: TObject);
begin
  inherited;
  if (TEdit(Sender).Text<>'') and
     (not isnumeric(TEdit(Sender).Text)) then
  begin
     ShowMessage('您只能输入数字!');
     TEdit(Sender).SetFocus;
     exit;
  end;
  if First_code and (TEdit(Sender).Text='0') then
  begin
     ShowMessage('首位不能输入0,请仔细检查!');
     TEdit(Sender).SetFocus;
     exit;
  end;

  if  (TEdit(Sender).Text<>'') and (TEdit(Sender).Text<>'0')
     and (isnumeric(TEdit(Sender).Text)) then
     First_code :=false ;

end;

procedure TfrmOpenAccount.DataSetProvider1BeforeUpdateRecord(
  Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
var
  vsql1,vsql2:string;
begin
  case updatekind of
    ukinsert:begin
              vsql1:=self.UpdateSQL1.InsertSQL.Text;
              vsql2:=self.UpdateSQL2.InsertSQL.Text;
             end;
    ukmodify:begin
              vsql1:=UpdateSQL1.ModifySQL.Text;
              vsql2:=UpdateSQL2.ModifySQL.Text;
             end;
     ukdelete:begin
              vsql1:=UpdateSQL1.DeleteSQL.Text;
              vsql2:=UpdateSQL2.DeleteSQL.Text;
             end;
     end;
    //更新存款明细资料
    if vsql2<>'' then
    begin
      DM.ADOCommand1.CommandText:=vsql2;
      AdoSetParams(DM.ADOCommand1,deltaDS);
      DM.ADOCommand1.Prepared;
      DM.ADOCommand1.Execute;
    end;

    //更新新开户资料
    DM.ADOCommand1.CommandText:=vsql1;
    AdoSetParams(DM.ADOCommand1,deltaDS);
    DM.ADOCommand1.Prepared;
    DM.ADOCommand1.Execute;
    applied:=true;

end;

procedure TfrmOpenAccount.MaskEdit1Enter(Sender: TObject);
begin
  inherited;
  if DBEdit3.Text ='' then
  begin
     ShowMessage('工号不能为空,请重输!');
     DBEdit3.SetFocus;
     exit;
  end;
end;

procedure TfrmOpenAccount.EdtIN_1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  IF KEY=13 THEN f_main.B_update.SetFocus ;

end;

end.

⌨️ 快捷键说明

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