功能界面上一个主表和几个子表,主表和子表是主从关系,现在需要改写导航条上的删除功能,删除主表或子表时,分别对主表和子表的删除标记做记号,我写了一个语句,但这个好像不能判断到底是删除主表还是子表,请问怎么获得主表和子表的表名,将表名作为参数传递给存储过程,以区分删除时到底是对主表做删除标记还是对子表做删除标记?
目前参考代码如下:
procedure TMainForm.DataNavigatorBeforeAction(Sender: TObject; var Accept: Boolean);
VAR
lq : Tquery;
ygbh : string;
begin
case (Sender as TBizDataSetAction).ID of
BizActnConsts.ActionDataSetDelete:
begin
//在这里写你自己的代码,可以用lQuery发sql语句更新你的标记字段
if JsDialogs.ConfirmBox('确定删除吗?','提示信息',1) then
begin
lq := Business.Data.TQuery.Create(nil);
lq.ConnectionString :='DATABASEURL=Biz:\RSDAGL\HR.Database';
try
lq.CommandText := 'exec dbo.HR_Del :YGBH, :Succeed, :Mes';
ygbh := DataSetBroker1.DataSet.FieldByName('YGBH').AsString;
lq.Params.ParamByName('YGBH').AsString := ygbh;
lq.Params.ParamByName('Succeed').AsInteger := 0;
lq.Params.ParamByName('Mes').AsString := '';
lq.Execute;
lq.free;
jsdialogs.ShowMsg('恭喜,员工信息删除成功!','提示');
DataSetBroker1.DataSet.REFRESH ;
except
lq.free;
jsdialogs.ShowError('对不起,员工信息删除失败!','提示');
end;
end;
//自己代码完
Accept := False; //这句是要的,不再执行默认的删除动作
end;
end;
end; |