📄 u_child2_1.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 + -