起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 538|回复: 10

【结贴】请问 手动设置了某个字段的查找属性;运用待代码关闭查找属性。怎么办?

[复制链接]
发表于 2009-12-8 18:26:13 | 显示全部楼层 |阅读模式
TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.Kind :=TLookupKind.lkNone;
TBIZDATASET(DataSetBrokerZONE.DataSet).LayoutChange;
不要这种方式;
要把ookupDef.InnerSQLList.Expressions 信息全部清掉;
变成这个种的没有手动设置查找属性的字段:
  object FIELD_ZDYSJJ2_ZONE_4: TUserDataField
    ID = 'ZONE_4'
    DisplayName = #21306#22495'4'
    DataType = dtString
    DataTypeAttribute.Size = 32
    EditStyleID = 'String'
    AutoFillDef.Trigger = [ftOnInsert, ftOnEdit, ftOnDataChange]
    StoredProps = {417474726962757465730D0A4175746F46696C6C4465660D0A446973706C6179
      4E616D650D0A456C656D656E740D0A4C6F6F6B75704465660D0A}
回复

使用道具 举报

发表于 2009-12-9 09:25:14 | 显示全部楼层
没有太理解楼主的意思,
你的意思是说仅仅设置一下Kind ,不要清空其他的属性吗?如果是,不行。
要不你创建一个临时字段,把这个字段的值移到临时字段上,不要显示原先的字段,保存的时候把临时字段的值再赋值到这个字段上。我觉得还是清空属性更方便哦

如果不是我描述的,楼主具体说说啥意思吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-10 09:47:50 | 显示全部楼层

就是把数据集复制到记事本中看到有(现在没有设置查找属性)但是LookupDef的信息还是存

如:TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1。LookupDef.CleanupInstance;但是它不起作用?请问还有方法吗?
回复 支持 反对

使用道具 举报

发表于 2009-12-10 09:55:59 | 显示全部楼层
你看看 数据集 的 字段编辑器 属性中是否加载了该字段呢?如果有,你选中这个字段,看看字段属性呢,应该是定义了查找属性的,要不不会出来的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-10 10:13:24 | 显示全部楼层

怎样清理掉原先的查找属性。

就是手动设置了查找属性,在代码中想关闭手动设置的查找属性,再用代码设置新的查找属性。怎样清理掉原先的查找属性。
(原先的查找属性要用到)
就是 如:在设计阶段设置了业务查找,但是在代码中设置了数据查找。或者反之。怎样清理掉原先的手动设置的查找属性。
回复 支持 反对

使用道具 举报

发表于 2009-12-10 11:06:58 | 显示全部楼层
1、请问楼主现在使用的是哪个版本?就是Studio的版本号是多少?
2、你的意思是,在设计期间设置好查找数据,在运行期间要修改查找属性,是吧。如果是,你是说现在修改查找属性不起作用,是吗?如果是,也请把你的代码都贴出来,我们看看吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-10 12:04:46 | 显示全部楼层

回复

版本:3.0.6.2800
在手动设置为业务查找,有过滤条件。
procedure TTBS.FormDocCreate(Sender: TObject);
begin

   TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.Kind := TLookupKind.lkNone;
   TBIZDATASET(DataSetBrokerZONE.DataSet).LayoutChange;

   TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.Kind := TLookupKind.lkDataValues;
   TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.DropDownButton := True;
   TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.DataBase.URL := 'Biz:\PUBLIC_DB\BFOA_DB.DATABASE';
   TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.SQL.Text := 'SELECT USERID,USERNAME,FUN_GET_JOB_NAME(JOB_NO) from SYS_USER WHERE STATUS=1 AND NVL(ID_CODE,'' '')<>''X'' AND JOB_NO>=100000 AND DEPT_NO=9 ORDER BY USERID';
   TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.KeyField := 'USERID';
   TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.DisplayField := 'USERNAME';
   TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.ViewID:='GridView';
   TYWXX(InfoBroker.Info).FIELD_ZDYSJJ2_ZONE_1.LookupDef.ViewProperties.Add('object TGridViewDesigener'+' VisibleColumns.Strings = ('+' '+#39+'USERID'+#39+' '+#39+'USERNAME'+#39+ ') '+'Options=[goInputFilter,goPartialMatch] end');
   TBIZDATASET(DataSetBrokerZONE.DataSet).LayoutChange;
   DataSetBrokerZONE.DataSet.Open;

end;
我知道要清理过滤条件。但是我想有没有一种方法清除原先设置的查找属性。再代码设置。
回复 支持 反对

使用道具 举报

发表于 2009-12-10 12:50:44 | 显示全部楼层
LayoutChange 以后不需要执行数据集open动作。

不需要清楚原先的查找属性,直接修改就可以了。

到现在我还是不明白出于啥原因要清除原先的查找属性,是因为设置新的以后,原先的查找数据还在,即原先的和新的一起出现在查找数据中?还是因为设置新的查找属性,没有起作用,显示的还是原先的查找属性。

另外,你的代码有问题,应该是BizFieldByName,可以用“LookupDef”在bbs上搜索
http://bbs.justep.com/forum.php?mod=viewthread&tid=508
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-10 13:38:40 | 显示全部楼层

按照你说的我重新做了后,出现

符号 "A" 没有定义?(A为原查找属性中过滤条件的值)
请问怎么办?不清理原先的查找属性不行的.
回复 支持 反对

使用道具 举报

发表于 2009-12-10 14:05:43 | 显示全部楼层
如果以前定义过数据查找,在代码中重新定义数据查找的时候有缺陷,
楼主可以定义一个业务查找,然后动态改变也一下查找业务数据集的sql语句看看呢?
http://bbs.justep.com/forum.php?mod=viewthread&tid=30173
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 15:09 , Processed in 0.042152 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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