起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1675|回复: 1

如何动态改变数据集中业务字段的查找属性

[复制链接]
发表于 2004-4-6 11:48:29 | 显示全部楼层 |阅读模式
如,当“物品编码表”中“物品”字段的查找范围根据某个参数值的变化而变化。

例如,当参数值为1时,“物品”的查找属性中的数据需要用语句“select bh,mc from dm where type='C'”;当参数值2时,“物品”的查找属性中的数据需要用语句“select bh,mc from dm where type='P'”。类似这样的需求,实现步骤如下:

1、定义一个业务参数;

2、在业务信息层的这个数据集中增加一个“数据字段”(字段B);

3、在数据集的“用户数据字段”中,定义该字段的查找,条件的设置指到那个前面定义的参数上;

4、在数据集的OnFieldChange  或者 OnFieldChange  事件中实现,代码参考如下:


lUserDataField :=
  (InfoBroker.Info as TDTGGSJDCZFW).FIELD_BZSJJ1_XM;
//TDTGGSJDCZFW 业务信息的实际的类名,FIELD_BZSJJ1_XM 是用户数据字段
lParam := JUSTEPCOMMONUNIT.TJUSTEPCOMMONUNIT.GetParam(Self.Context,
  'Biz:\BUSINESSFAQ\DICT\YWCSZ.ParamGroup', 'DTGGSJFW');
lParam.Value:=Edit1.Text;  // 给参数赋值
lUserDataField.DataSet.GetLookupData(lUserDataField.ID).LayoutChange ;  
回复

使用道具 举报

发表于 2004-8-16 19:39:07 | 显示全部楼层

动态改变字段的查找属性(数据集)

代码:
  DataSetBroker1.DataSet.Open;
  TSQLDataSet(DataSetBroker1.DataSet).BizFieldByName('W7').LookupDef.SQL.Text =
    TSQLDataSet(DataSetBroker1.DataSet).GetLookupData('W7').LookupDef.SQL.Text +
    ' where FID LIKE &[Biz:\SYSTEM\ORGPARAMS.PARAMGROUP\DEPTID.Param]+''%'''+
    ' and FID <> &[Biz:\SYSTEM\ORGPARAMS.PARAMGROUP\DEPTID.Param]';
  TSQLDataSet(DataSetBroker1.DataSet).GetLookupData('W7').Refresh;

说明:
  1、DataSetBroker1.DataSet.Open ,如果你不再数据集中增添新的数据字段,就必须在赋值SQL语句前打开数据集,不然就不能得到你所需要的效果。

  2、必须使用TSQLDataSet(DataSetBroker1.DataSet).BizFieldByName('W7').LookupDef.SQL.Text 而不是TSQLDataSet(DataSetBroker1.DataSet).GetLookupData('W7').LookupDef.SQL.Text这句进行查找数据集的动态改变。
  原因: BizFieldByName('W7').是Business本身定义的扩展属性,支持查找属性的修改,GetLookupData('W7').是Delphi提供的数据集查找的结果,是静态的,改变也没有用的。
3、在修改了BizField的属性以后,必须重新打开数据集才可以起作用。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 05:38 , Processed in 0.037377 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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