|

楼主 |
发表于 2010-5-13 10:17:32
|
显示全部楼层
procedure TBC_DETAIL_FROM.ButtonUPDATE_DETAILClick(Sender: TObject);
var
funcURL, PRIMARY_IDS: String;
flag, lFuncIsRunning: Boolean;
i: Integer;
begin
if DataSetBrokerBC_DETAIL_DT.DataSet.IsEmpty then
begin
JsDialogs.ShowWarning('明细数据为空,请查询数据并勾选后再进行修改。','提示');
SysUtils.Abort;
end;
DataSetBrokerBC_DETAIL_DT.DataSet.First;
while not DataSetBrokerBC_DETAIL_DT.DataSet.Eof do
begin
if DataSetBrokerBC_DETAIL_DT.DataSet.FieldByName('IS_UPDATE').AsInteger = 1 then
begin
flag := True;
if i = 0 then
begin
if Jsdialogs.OkCancelBox('确实要修改当前记录吗?','修改确认',1)=False then
begin
SysUtils.Abort;
end;
i := 1;
end;
if PRIMARY_IDS = '' then PRIMARY_IDS := DataSetBrokerBC_DETAIL_DT.DataSet.FieldByName('DISTRICT_CODE').AsString + '-' + DataSetBrokerBC_DETAIL_DT.DataSet.FieldByName('AREA_CODE').AsString + '-' + DataSetBrokerQUERY_DT.DataSet.FieldByName('FLOW_TYPE').AsString + '-' + DataSetBrokerBC_DETAIL_DT.DataSet.FieldByName('PRIMARY_ID').AsString
else PRIMARY_IDS := PRIMARY_IDS + ',' + DataSetBrokerBC_DETAIL_DT.DataSet.FieldByName('PRIMARY_ID').AsString;
end;
DataSetBrokerBC_DETAIL_DT.DataSet.Next;
end;
if flag then
begin
funcURL := 'Biz:\FEE_MGT\BC_DETAIL_FILLER_FUNC.Func';
for i:= 0 to SystemCore.TSystemCore.FuncManager.RunningFuncCount - 1 do
begin
if SysUtils.UpperCase(SystemCore.TSystemCore.FuncManager.RunningFuncs.BizClassURL.BizURL.URL) = SysUtils.UpperCase(funcURL) then
begin
lFuncIsRunning := True; //运行 funcURL 对应的功能
break; //跳出循环
end
else
begin
lFuncIsRunning := False; //关闭其它功能
end;
end;
if lFuncIsRunning then
begin
JsDialogs.ShowMsg('您已经打开了该功能,请关闭后在执行该操作!', '提示');
SysUtils.Abort; //终止
end
else
begin //运行该功能,并传递参数''
SystemCore.TSystemCore.FuncManager.RunFunc(Context, '', funcURL, PRIMARY_IDS, nil, False);
end;
end;
end;
就是简单的功能跳转,从查询功能跳转到录入功能。而在查询功能下新建了数据语义策略,其中指定了部分字段为只读。在跳转到录入功能后,数据语义策略中的只读控制仍对录入功能下的数据字段有效。
改变查询功能的隔离级为功能,依然无法使录入功能下的字段不被只读。 |
|