起步软件技术论坛-X3

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

【搞定】给数据网格数据集重新分配条件,并过滤**

[复制链接]
发表于 2007-8-15 17:13:29 | 显示全部楼层
开玩笑吧!难道我那么做不对么?还有,我怎么获得DataLocateComboBox的关键字段的值
呵呵,我目前还没有心思跟你开这个玩笑。
平台上许多都是数据表现控件,例如表格文档、数据网格(DataGrid)、DataEid、DataTreeList等等,要访问、修改等字段的值,直接操作数据集就可以了。直接获取DataLocateComboBox对应数据源的值就可以了。 例如DataLocateComboBox连接的数据源是dsDataSet,关键字段为ZD1,那么就这么写
dsDataSet.DataSet.fieldbyname('ZD1').ASstring  这样就可以了
回复 支持 反对

使用道具 举报

发表于 2007-8-15 17:17:41 | 显示全部楼层
修改了SQLFilter如何让DataGride显示新的数据
给SQLFilter赋值后,只要打开开关,即SQLFiltered 设置为True,那么此时数据集已经执行这个过滤条件,把符合条件的数据过滤出来,

至于你说用DataGrid来表现,那么就把DataGrid的数据源设置为SQLFilter 过滤的数据集上就可以了

其实不需要把 close 和open 数据集的,只要打开开关就可以了,但这样做不会影响最终的表现数据,


SQLFilter 写法,参考 http://bbs.justep.com/forum.php?mod=viewthread&tid=590
回复 支持 反对

使用道具 举报

发表于 2007-8-15 17:41:17 | 显示全部楼层
5楼的监视里面按7楼的写,看一下赋值后的SQLFilter是什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 17:47:52 | 显示全部楼层
我一开始在数据集创建的时候,将其‘条件’部分写成‘1=0’然后,在窗体的’检索‘按钮中,修改数据集的SQLFilter,现在修改后,DataGrid没有显示数据啊!
另外在:在创建数据集的时候那个 sql属性是什么过滤?如果不是,那么在SQLFilter重新设置了之后 ,对 sql 的where 条件产生什么影响?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 17:53:16 | 显示全部楼层
procedure TJHSJ.BtnSearchClick(Sender: TObject);
var whereParam:string;

begin
    whereParam:=DataSetBrokerZhigong.DataSet.FieldByName(DataLocateComboBox1.KeyField).AsString;

     TSQLDataSet(DataSetBrokerFFZDJH.DataSet).Close;
     TSQLDataSet(DataSetBrokerFFZDJH.DataSet).SQLFilter:='ZG='''+whereParam+''''+' and JHBJ=1';
     TSQLDataSet(DataSetBrokerFFZDJH.DataSet).SQLFiltered:=true;
     TSQLDataSet(DataSetBrokerFFZDJH.DataSet).Open;

end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 17:54:19 | 显示全部楼层
回答13楼的问题:TSQLDataSet(DataSetBrokerFFZDJH.DataSet).SQLFilter 作为检视参数:过滤条件正确了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 18:02:34 | 显示全部楼层
现在过滤对,就是DataGrid没有数据
回复 支持 反对

使用道具 举报

发表于 2007-8-15 18:03:48 | 显示全部楼层
SQLFilter 原理是在原先的SQL的Where部分再and一下SQLFilter 的条件,
而你一开始在数据集创建的时候,将其‘条件’部分写成‘1=0’,这样无论怎样and 你后面传进去的条件(SQLFilter的设置),结果的数据肯定永远为哦,
如果你要取消这个‘1=0’,那么只能重新给这个数据集赋SQL了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-16 09:34:58 | 显示全部楼层
在窗体打开的时候我不想查出数据来,然后根据用户在界面上选择过滤条件,来刷新DataGrid中的数据,怎么办好?
回复 支持 反对

使用道具 举报

发表于 2007-8-16 09:44:15 | 显示全部楼层
最初由 atiger 发布
[B]SQLFilter 原理是在原先的SQL的Where部分再and一下SQLFilter 的条件,
而你一开始在数据集创建的时候,将其‘条件’部分写成‘1=0’,这样无论怎样and 你后面传进去的条件..

以下省略...... [/B]


已经写了,重现赋SQL,

或者默认设置数据集关闭,在窗体Show的时候,给数据集加上SQLFilter条件,例如1=0,这样后面给SQLFilter赋值就可以了,
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-14 19:51 , Processed in 0.040524 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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