起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: roice

【结帖】[请求] 3000版本的文档关联方式兼容老版本已经保存的文档吗?**

[复制链接]
发表于 2008-5-20 10:41:53 | 显示全部楼层
平台支持实现的
回复 支持 反对

使用道具 举报

发表于 2008-5-20 10:52:05 | 显示全部楼层
8 楼的解决方案能与我原方案 兼容吗!
回复 支持 反对

使用道具 举报

发表于 2008-5-20 10:58:43 | 显示全部楼层
楼主是怎么实现的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-20 11:18:10 | 显示全部楼层
功能的一段代码:
constructor TMainForm.Create(Acontext:Tcontext);
var
  lDealPerson: string;
begin
  inherited;
  (dvDoc.Doc as TRELEVANCYDOC).FuncURL := 'Biz:OPERATIONOASPACEOfficeCheck.Func';
  TDISPATCHMOVEINFO.LoadDoc(dvDoc, dsbMaster.DataSet.FieldByName('FGUID').AsString, TDocAccessKind.akEdit);
  (dvAttach.Doc as TRELEVANCYDOC).FuncURL := 'Biz:OPERATIONOASPACEOfficeCheck.Func';
  TDISPATCHMOVEINFO.LoadAttach(dvAttach, dsbMaster.DataSet.FieldByName('FGUID').AsString, TDocAccessKind.akEdit);
  lDealPerson := TContextUtils.GetOperator(Acontext).ID;

  if not dsbDetail1.DataSet.Active then
    dsbDetail1.DataSet.open;
  if not dsbDetail1.DataSet.Locate('FDealPerson;FDealStep',Variants.VarArrayOf([lDealPerson,'处室审核意见']),[]) then
    dsbDetail1.DataSet.Append;

  dsbMaster.DataSet.FieldByName('FDateLimit').ReadOnly := True;
  dsbMaster.DataSet.Edit;
  dsbMaster.DataSet.FieldByName('EOfficeCheck').asString := lDealPerson;
  dsbMaster.DataSet.FieldByName('EOfficeCheckDate').AsDateTime := DateUtils.Today() ;
  dsbMaster.DataSet.Post;
end;

在关联定义里,定义两个组织机构权限设置的定义,用FGUID 和FFLAG 来区分:

28版本文档关联方式.jpg

109.02 KB, 下载次数: 300

回复 支持 反对

使用道具 举报

发表于 2008-5-20 11:31:19 | 显示全部楼层
楼主,楼上的代码和定义,应该出不来4楼效果的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-20 11:37:32 | 显示全部楼层
1楼的正文就是目前已经实现的,现在想要将文档关联方式改为新版本的,效果如3楼。
回复 支持 反对

使用道具 举报

发表于 2008-5-20 14:12:13 | 显示全部楼层
正在试验...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-22 13:55:44 | 显示全部楼层
请问有结果了吗?
回复 支持 反对

使用道具 举报

发表于 2008-5-22 14:42:00 | 显示全部楼层
保存还有点问题,请稍候。
回复 支持 反对

使用道具 举报

发表于 2008-5-22 17:54:58 | 显示全部楼层
楼主,原来的方法无法实现你所要求的效果.
建议使用以下方法:

1.在"业务模型\协同系统\文档\关联\文档关联信息\文档关联网格"中增加:

  Private
    FCustomFilter: String;
    procedure SetDocRelevancyFilter(AFilter: String);
    ......

  public  
    property CustomFilter: String read FCustomFilter write setDocRelevancyFilter;
    ......
  
procedure TRelevancyGrid.SetDocRelevancyFilter(AFilter: String);  //实现不同的显示框过滤
begin
  if FCustomFilter <> AFilter then
  begin
    FCustomFilter := AFilter;
    DataSetDocRelevancy.SQLFilter := '标记字段名' + FCustomFilter;
    DataSetDocRelevancy.SQLFiltered := true;
  end;
end;

procedure TRelevancyGrid.NewDocFromLocal(const AOSFileName: string);  //修改原过程,于用保存标记(“从我的电脑引入”菜单)
begin
    ...
    DataSetDocRelevancy.FieldByName('FFILESTATE').AsInteger := TDOCRELEVANCYINFO2.FileState_New;   //原代码
    DataSetDocRelevancy.FieldByName('FLBJ').AsString := FCustomFilter;  //增加的代码
    DataSetDocRelevancy.Post;   //原代码
    ...
end;

procedure TRelevancyGrid.NewDoc(const AFileName: string;
  AFileAttribute: TFileAttribute);//修改原过程,于用保存标记(“新建文档”菜单)
begin
  ……
    DataSetDocRelevancy.FieldByName('FSUBDIRNAME').AsString := SubDirName; //原代码
    DataSetDocRelevancy.FieldByName('FLBJ').AsString := FCustomFilter;  //增加的代码
    DataSetDocRelevancy.Post; //原代码
  ……
end;

注:目前的方案直支持“从我的电话引入”和“新建文档”两个菜单,如果需要使用其他菜单,如:“从知识中心引入”,还需要修改对应的方法:
DataSetDocRelevancy.FieldByName('FLBJ').AsString := FCustomFilter;  //增加此句


2.在主窗体加入新的DocView及InfoBroker,设置与原文件档关联网络相同;
   注意DocView的InfoBroker属性要对应新的InfoBroker.

3.将两个InfoBroker控件AutoKind属性设置为akPrivate

4.在主窗体中的项目管理中引入文档关联网格

5.在窗体Create事件中调用文件关联网格中新加的属性, 设置过滤条件:

   DOCRELEVANCYINFO2.TRELEVANCYGRID(DocView1.Doc).CustomFilter := '标记值';

注:可以找一个文件中没有用到的字段做为标记字段,也可自已建一个标记字段(注意检查一下数据表的更新选项,重新生成一下插入语句)
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-26 03:22 , Processed in 0.043379 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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