我在写一个控件,用到了两个TDataSet控件,一个tbItem,一个tbSecure,其中tbItem(需要控制权限的表)的数据需要由tbSecure(权限表)中的数据来过滤,请问该如何做,如果用OnFilterRecord来过滤,每次更改或插入记录到tbItem表时,好象OnFilterRecord事件会把当前记录改变,这样就导致其它代码在保存数据时,会存错记录。请问有什么方法能过滤掉数据而不会导致当前记录的改变?

解决方案 »

  1.   

    DataSource1.DataSet:=tbSecure;
    tbItem.MataDataSource:=DataSource1;
      

  2.   

    to:wycg_cnh20(伤心郁闷中) 我不是想要主从表,只是要过滤数据。比如表1有A,B两个字段,表2有C字段。表内容如下:
    -------------------------
    表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,[]);
    但这样会导致数据的滚动(也就是当前记录改变),在后面的代码修改字段时会出错(因为当前记录变了,修改的数据不是想修改的那条记录),请问用什么方法能过滤数据,得到以上结果,且保证当前记录不会改变。请高手帮忙了,分不够再开贴加。