我在写一个控件,用到了两个TDataSet控件,一个tbItem,一个tbSecure,其中tbItem(需要控制权限的表)的数据需要由tbSecure(权限表)中的数据来过滤,请问该如何做,如果用OnFilterRecord来过滤,每次更改或插入记录到tbItem表时,好象OnFilterRecord事件会把当前记录改变,这样就导致其它代码在保存数据时,会存错记录。请问有什么方法能过滤掉数据而不会导致当前记录的改变?
解决方案 »
- 关于截获系统消息的问题
- Incompatible types:‘String’ and ‘PAnsiChar’
- 请问如何将一个QUERY中的数据增加到另一个QUERY,不用FOR循环一条一条增加,有其他简单办法吗
- 郁闷死我了,老是打印失败,高手请进来看!
- 菜菜问题---自己建了一个access数据表,怎么引入---刚刚接触数据库,请各位不吝赐教
- 谁有在stringgrid中,当单元格改变后按tab,up,down时,单元格内容不变,按enter时改变的程序源码,急!!
- 在delphi 中如何 改变excel工作薄的标题?
- 请在网上有最好的适合中国人的delphi报表控件是什么
- 请问各位仁兄:怎么给自动添加的菜单添加子菜单?
- Sql server中nvarchar类型的数据通过在BDE中显示不出来?
- 用quickrep 自定义纸张打印的问题?
- vbscript在网页上调用delphi写的activeform的ocx控件出现的问题
tbItem.MataDataSource:=DataSource1;
-------------------------
表1
A B
1 11
2 22
3 33
4 44
------------------------
表2
C
1
3
4
---------------------------
现在我要表1中得到如下记录
表1
A B
1 11
3 33
4 44
-----------------------------
要求就是这样,用DataSet的OnFilterRecord可以这样写:
Accept := Table2.Locate('C',Table1.FieldByName('A').AsInteger,[]);
但这样会导致数据的滚动(也就是当前记录改变),在后面的代码修改字段时会出错(因为当前记录变了,修改的数据不是想修改的那条记录),请问用什么方法能过滤数据,得到以上结果,且保证当前记录不会改变。请高手帮忙了,分不够再开贴加。