起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 798|回复: 28

【结】[问题]关于功能下的数据集策略只读问题

[复制链接]
发表于 2010-5-12 16:30:24 | 显示全部楼层 |阅读模式
在A功能数据集策略下设置了数据集只读字段,从A功能跳转到B功能,则B功能下的字段也被只读了,请问如何使B功能下的数据集字段不受影响?
我试着改变A功能的隔离级为功能,但是没有作用。
请教!
回复

使用道具 举报

发表于 2010-5-12 16:58:42 | 显示全部楼层
B功能是继承A功能的吗?
你是怎么从A功能跳转到B功能的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-12 18:19:42 | 显示全部楼层
B功能没有继承A,
直接写代码进行跳转的。
回复 支持 反对

使用道具 举报

发表于 2010-5-13 09:39:27 | 显示全部楼层
把代码贴出来看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 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;
就是简单的功能跳转,从查询功能跳转到录入功能。而在查询功能下新建了数据语义策略,其中指定了部分字段为只读。在跳转到录入功能后,数据语义策略中的只读控制仍对录入功能下的数据字段有效。
改变查询功能的隔离级为功能,依然无法使录入功能下的字段不被只读。
回复 支持 反对

使用道具 举报

发表于 2010-5-13 11:04:39 | 显示全部楼层
SystemCore.TSystemCore.FuncManager.RunFunc(Context.Parent, '', funcURL, PRIMARY_IDS, nil, False);
这样看看 呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-13 14:09:50 | 显示全部楼层
一样的,字段依然只读。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-13 14:33:21 | 显示全部楼层
求解!
回复 支持 反对

使用道具 举报

发表于 2010-5-13 14:56:19 | 显示全部楼层
单独运行功能B是否 是只读?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-13 16:40:55 | 显示全部楼层
单独运行B不是只读。非数据集指定的只读字段不只读。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-9 06:53 , Processed in 0.038927 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表