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

📄 u_child2_1.pas

📁 小银行系统
💻 PAS
字号:
unit U_child2_1;

interface

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

type
  TF_child2_1 = class(TF_child)
    ADODataSet1: TADODataSet;
    DataSetProvider1: TDataSetProvider;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    UpdateSQL1: TUpdateSQL;
    ADODataSet2: TADODataSet;
    DataSetProvider2: TDataSetProvider;
    ClientDataSet2: TClientDataSet;
    DataSource2: TDataSource;
    UpdateSQL2: TUpdateSQL;
    UpdateSQL3: TUpdateSQL;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DataSetProvider1BeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
    procedure FormCreate(Sender: TObject);
  
    procedure DataSetProvider2BeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure DoInsert;override;
    procedure DoEdit;override;
    procedure DoDelete;override;

    procedure DoQuery;override;
    procedure DoGetData;override;
    procedure DoBrowse;override;

    procedure DoSave;override;
    procedure DoCancel;override;
    procedure DoCloseForm;override;
  end;

var
  F_child2_1: TF_child2_1;

implementation

uses UDM, U_main, fuct_server;

{$R *.dfm}

//浏览显示数据
procedure TF_child2_1.DoBrowse;
begin
  //inherited;
  //  f_main.DBNavigator1.Enabled:=not  f_main.DBNavigator1.Enabled;
end;

//取消作业
procedure TF_child2_1.DoCancel;
begin
  //inherited;
  if  self.ClientDataSet1.Active  then  self.ClientDataSet1.CancelUpdates;
  if  self.ClientDataSet2.Active  then  self.ClientDataSet2.CancelUpdates;
  dbedit1.Enabled:=true;
end;

procedure TF_child2_1.DoCloseForm;
begin
  //inherited;
  self.Close;
end;

//删除
procedure TF_child2_1.DoDelete;
begin
  //inherited;
   if  self.ClientDataSet1.Active then
   begin
     if self.ClientDataSet1.RecordCount>0 then
     begin
       if MessageDlg('是否删除该资料?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
       begin
          self.ClientDataSet1.Delete;
          f_Main.B_update.Click;
       end
       else  f_Main.B_cancel.Click;
     end
     else
     begin
       MessageDlg('没有你要删除的资料', mtInformation,[mbOk], 0);
       setuseprg(mcancel);
       if f_Main.B_Add.Enabled then f_Main.B_Add.SetFocus;
     end;
   end
  else
  begin
      MessageDlg('资料没有连接!请刷新资料!', mtInformation,[mbOk], 0);
      setuseprg(mcancel);
      f_Main.B_cancel.Click;
  end;
end;

//修改资料
procedure TF_child2_1.DoEdit;
begin
  //inherited;
  //判断资料是否开启
  if  self.ClientDataSet1.Active  then
  begin
    if self.ClientDataSet1.RecordCount>0 then
    begin
      self.ClientDataSet1.Edit;
      if self.ClientDataSet1.Fields.FindField('edit_date')<>nil then
         self.ClientDataSet1.FieldByName('edit_date').AsString:=f_main.vTodayDate;
      if self.ClientDataSet1.Fields.FindField('edit_user')<>nil then
         self.ClientDataSet1.FieldByName('edit_user').AsString:=f_main.vuser_no;
      dbedit1.Enabled:=false;
      dbedit2.SetFocus;
    end
    else
    begin
      MessageDlg('没有资料供你修改', mtInformation,[mbOk], 0);
      setuseprg(mcancel);
      f_Main.B_cancel.Click;
    end;
  end
  else
  begin
      MessageDlg('资料没有连接请刷新资料!', mtInformation,[mbOk], 0);
      setuseprg(mcancel);
      f_Main.B_cancel.Click;
  end;

end;

//取得资料
procedure TF_child2_1.DoGetData;
begin
  //inherited;
  //判断资料集是否有参数
  if self.ClientDataSet1.Params.Count<=0  then
  begin
     self.ClientDataSet1.DisableControls;
     self.ClientDataSet1.Active:=false;
     self.ClientDataSet1.Active:=true;
     self.ClientDataSet1.EnableControls;
  end;
end;

//新增资料
procedure TF_child2_1.DoInsert;
begin
  //inherited;
  //判断资料是否开启
  if  self.ClientDataSet1.Active  then  self.ClientDataSet1.Active:=true;
  self.ClientDataSet1.Append;
  if self.ClientDataSet1.Fields.FindField('add_date')<>nil then
     self.ClientDataSet1.FieldByName('add_date').AsString:=f_main.vTodayDate;
  if self.ClientDataSet1.Fields.FindField('add_user')<>nil then
     self.ClientDataSet1.FieldByName('add_user').AsString:=f_main.vuser_no;
  dbedit1.Enabled:=false;
  dbedit2.SetFocus;
  f_main.DBNavigator1.Enabled:=false;

end;

//资料查询
procedure TF_child2_1.DoQuery;
begin
  //inherited;
end;

//存档
procedure TF_child2_1.DoSave;
var error:integer;
    vdata:OleVariant;
begin
  //inherited;
  dbedit1.Enabled:=true;
try
   //如果主键值为空则取消作业
   if  mlog<>mdelete  then
   if trim(dbedit1.Text)=''  then
   begin
       docancel;
       exit;
   end;
   //与后端资料库连接
   if not dm.ADOConnection1.Connected then  dm.ADOConnection1.Connected:=true;
   dm.ADOConnection1.BeginTrans;
   ClientDataSet1.CheckBrowseMode;
   //判断是否有资料异动
   if  ClientDataSet1.ChangeCount>0 then
     vdata:=ClientDataSet1.Delta
   else  vdata:=null;
   if   vartype(vdata)<>varnull then  self.DataSetProvider1.ApplyUpdates(vdata,0,error);
   ClientDataSet1.MergeChangeLog;

   self.ClientDataSet2.CheckBrowseMode;
   //判断是否有资料异动
   if  ClientDataSet2.ChangeCount>0 then
     vdata:=ClientDataSet2.Delta
   else  vdata:=null;
   if   vartype(vdata)<>varnull then  self.DataSetProvider2.ApplyUpdates(vdata,0,error);
   ClientDataSet2.MergeChangeLog;

   dm.ADOConnection1.CommitTrans;
except
   dm.ADOConnection1.RollbackTrans;
   MessageDlg('资料更新失败', mtInformation,[mbOk], 0);
   self.ClientDataSet1.CancelUpdates;
end;
  case mlog of
    mAdd:f_main.B_Add.SetFocus ;
    mEdit:f_main.B_edit.SetFocus ;
    mDelete:f_main.B_delete.SetFocus ;
  end;
  mlog:=mFormActive;
  f_main.DBNavigator1.Enabled:=true;
end;

//结束
procedure TF_child2_1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  F_child2_1:=nil;
end;

//单笔资料更新主档案
procedure TF_child2_1.DataSetProvider1BeforeUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
var
  vsql:string;
begin
   vsql:='';
   case updatekind of
    ukinsert:begin
              vsql:=self.UpdateSQL1.InsertSQL.Text;
             end;
    ukmodify:begin
              vsql:=UpdateSQL1.ModifySQL.Text;
             end;
     ukdelete:begin
              vsql:=UpdateSQL1.DeleteSQL.Text;
             end;
     end;
     //判断是否有sql语句
    if  vsql<>''  then
    begin
      dm.ADOCommand1.CommandText:=vsql;
      AdoSetParams(dm.ADOCommand1,deltaDS);
      dm.ADOCommand1.Prepared;
      dm.ADOCommand1.Execute;
    end;
    applied:=true;
end;

//开始
procedure TF_child2_1.FormCreate(Sender: TObject);
begin
  inherited;
  self.DBGrid1.Visible:=false;
  self.Memo1.Visible:=true;

  //如果没有参数则自动开启资料
  if self.ClientDataSet1.Params.Count<=0  then
  begin
     self.ClientDataSet1.DisableControls;
     self.ClientDataSet1.Active:=false;
     self.ClientDataSet1.Active:=true;
     self.ClientDataSet1.EnableControls;
  end;
  f_main.DBNavigator1.DataSource:=self.DataSource1;
  f_main.DBNavigator1.Enabled:=self.vBrowse;
end;


//从档案资料更新
procedure TF_child2_1.DataSetProvider2BeforeUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
var
  vsql,vsql1:string;
begin
   vsql:='';
   vsql1:='';
   case updatekind of
    ukinsert:begin
              vsql:=self.UpdateSQL2.InsertSQL.Text;
              vsql1:=self.UpdateSQL3.InsertSQL.Text;
             end;
    ukmodify:begin
              vsql:=UpdateSQL2.ModifySQL.Text;
              vsql1:=UpdateSQL3.ModifySQL.Text;
             end;
     ukdelete:begin
              vsql:=UpdateSQL2.DeleteSQL.Text;
              vsql1:=UpdateSQL3.DeleteSQL.Text;
             end;
     end;
     //判断是否有sql语句
    if  vsql1<>''  then
    begin
      dm.ADOCommand1.CommandText:=vsql1;
      AdoSetParams(dm.ADOCommand1,deltaDS);
      dm.ADOCommand1.Prepared;
      dm.ADOCommand1.Execute;
    end;

    if  vsql<>''  then
    begin
      dm.ADOCommand1.CommandText:=vsql;
      AdoSetParams(dm.ADOCommand1,deltaDS);
      dm.ADOCommand1.Prepared;
      dm.ADOCommand1.Execute;
    end;
    applied:=true;

end;

end.

⌨️ 快捷键说明

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