起步软件技术论坛-X3

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

查找属性,如何动态设置过滤范围?**

[复制链接]
发表于 2008-8-28 16:00:14 | 显示全部楼层
//---------------
                     lBizField:=TBizDataSet(dsbgzxx.DataSet).FindBizField('gzms');
                      if lBizField <> nil then
                      begin
                          with   lBizField do
                          begin
                              LookupDef.kind:=  TLookupKind.lkDataValues;    //查找类型
                              LookupDef.ValidateKind   := TLookupValidateKind.vkMust;   //查找值范围
                              LookupDef.SQL.Text       := 'select GZBM, GZXX from  gzms  where gzcp= ' + sysutils.QuotedStr(vQuery.FieldByName('cplx').AsString);                          // 查找数据集的SQL 语句
                              LookupDef.KeyField       := 'GZBM' ;          //关键字段
                              LookupDef.DisplayField   := 'GZXX';  //显示字段
                              LookupDef.DropDownButton := True; //是否显示下拉
                          end;
                      end;
回复 支持 反对

使用道具 举报

发表于 2008-8-28 16:01:23 | 显示全部楼层
上面的是代码设置的。


在逻辑表中, 没有条件过滤。

select GZBM, GZXX from  gzms  order by gzxx
回复 支持 反对

使用道具 举报

发表于 2008-8-28 16:07:46 | 显示全部楼层
加上两句,试试
TSQLDataSet(Db1.DataSet).GetLookupData('actch').Refresh ;
TSQLDataSet(Db1.DataSet).LayoutChange ;
回复 支持 反对

使用道具 举报

发表于 2008-8-28 16:11:20 | 显示全部楼层
LayoutChange 一下 当前的数据集,TSQLDataSet(dsbRKDMX.Dataset).LayoutChange;
回复 支持 反对

使用道具 举报

发表于 2008-8-28 16:11:45 | 显示全部楼层
Db1.DataSet  ----  db1 是什么意思?

GetLookupData('actch').  -----  actch  又是什么意思?
回复 支持 反对

使用道具 举报

发表于 2008-8-28 16:14:12 | 显示全部楼层
你得根据你的数据集和字段名改一下才行:
TBizDataSet(dsbgzxx.DataSet).FindBizField('gzms');

TSQLDataSet(dsbgzxx.DataSet).GetLookupData('gzms').Refresh ;
TSQLDataSet(dsbgzxx.DataSet).LayoutChange ;
回复 支持 反对

使用道具 举报

发表于 2008-8-28 16:17:52 | 显示全部楼层
我试一下
回复 支持 反对

使用道具 举报

发表于 2008-8-28 16:26:10 | 显示全部楼层
还是一样的效果。


                  //---------------
                     lBizField:=TBizDataSet(dsbgzxx.DataSet).FindBizField('gzms');
                      if lBizField <> nil then
                      begin
                          with   lBizField do
                          begin
                              LookupDef.kind:=  TLookupKind.lkDataValues;    //查找类型
                              LookupDef.ValidateKind   := TLookupValidateKind.vkMust;   //查找值范围
                              LookupDef.SQL.Text       := 'select GZBM, GZXX from  gzms  where gzcp= ' + sysutils.QuotedStr(vQuery.FieldByName('cplx').AsString);                          // 查找数据集的SQL 语句
                              LookupDef.KeyField       := 'GZBM' ;          //关键字段
                              LookupDef.DisplayField   := 'GZXX';  //显示字段
                              LookupDef.DropDownButton := True; //是否显示下拉
                          end;
                      end;
                    TSQLDataSet(dsbgzxx.DataSet).GetLookupData('gzms').Refresh ;
                    TSQLDataSet(dsbgzxx.DataSet).LayoutChange ;


都是显示所有的数据
回复 支持 反对

使用道具 举报

发表于 2008-8-28 16:41:52 | 显示全部楼层
1、把 TBizDataSet(dsbgzxx.DataSet).FindBizField('gzms'); 修改为 TSQLDataSet(dsbgzxx.DataSet).FindBizField('gzms');

2、请问,你这个代码写到哪个事件上了,你放到一个不同的button按钮上试试。

3、你跟踪过代码吧?执行到重新给字段赋查找属性的值吧

如果上面都测试了,请问,你使用的版本号(Studio的版本号)是多少?2827是有这个缺陷,3002版本没有这个问题了
回复 支持 反对

使用道具 举报

发表于 2008-8-28 16:48:01 | 显示全部楼层
我放在同一个按钮下,但是,我更改了条件。


版本:3012

跟踪了。
LookupDef.SQL.Text       := 'select GZBM, GZXX from  gzms  where gzcp= ' + sysutils.QuotedStr(vQuery.FieldByName('cplx').AsString);      

这个值有变化。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-21 05:53 , Processed in 0.040709 second(s), 12 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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