📄 u_child1_3.pas
字号:
unit U_child1_3;
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_child1_3 = class(TF_child)
ADODataSet1: TADODataSet;
DataSetProvider1: TDataSetProvider;
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
UpdateSQL1: TUpdateSQL;
DosMove1: TDosMove;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: 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);
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_child1_3: TF_child1_3;
implementation
uses UDM, U_main, fuct_server;
{$R *.dfm}
//浏览显示数据
procedure TF_child1_3.DoBrowse;
begin
//inherited;
//f_main.DBNavigator1.Enabled:=not f_main.DBNavigator1.Enabled;
end;
//取消作业
procedure TF_child1_3.DoCancel;
begin
//inherited;
if self.ClientDataSet1.Active then self.ClientDataSet1.CancelUpdates;
dbedit1.Enabled:=true;
dbedit2.Enabled:=true;
dbedit3.Enabled:=true;
end;
//结束
procedure TF_child1_3.DoCloseForm;
begin
//inherited;
self.Close;
end;
//删除
procedure TF_child1_3.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_child1_3.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.Enabled:=false;
dbedit3.Enabled:=false;
dbedit4.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_child1_3.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_child1_3.DoInsert;
begin
//inherited;
//判断资料是否开启
if not 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.SetFocus;
end;
//资料查询
procedure TF_child1_3.DoQuery;
begin
//inherited;
end;
//存档
procedure TF_child1_3.DoSave;
var error:integer;
vdata:OleVariant;
begin
//inherited;
dbedit1.Enabled:=true;
dbedit2.Enabled:=true;
dbedit3.Enabled:=true;
try
//如果主键值为空则取消作业
if mlog<>mdelete then
if (trim(dbedit1.Text)='') or (trim(dbedit2.Text)='') or (trim(dbedit3.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;
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_child1_3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
F_child1_3:=nil;
end;
//单笔资料更新
procedure TF_child1_3.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_child1_3.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;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -