小弟设计一程序,功能是查询,可在checkbox组件中选查询所依据的属性名,在随后的文本框中输入该属性的值,程序据该值查询。比如一个关于学生信息的表,可选择按学号、姓名、出生日期查询。
    我使用的是ADOTable,想通过在程序运行时修改filter属性来实现,但好像有点麻烦,各位有何高见,望不吝赐教,小弟先谢谢了!

解决方案 »

  1.   

    filter:=' '+checkbox.text+'='''+edit1.text+''' '大概是这个意思你看行不行
      

  2.   

    如果数据不是非常大,用adoquery比较方便,可以用SQL语句。不过每执行一次,都要关闭再打开一次。或者用ADOCOMMAND,也可以执行SQL语句,实现你的查询很容易。adoTable我没用过,你可以看一下,可能可以通过先关闭控件的连接,再设置filter属性,再打开也许可以。
      

  3.   

    小弟表达能力有限,难得各位兄台尽力看懂,倾力相助,谢谢!类似的东西小弟也写出来了,但是是在edit中输入值,然后查询,现在想用复选框,比如学生信息表,有学号、姓名、性别、所在专业、出生日期、入学日期等属性,可以选择按学号、姓名或所在专业查询,只需点击对应的复选框然后点“查询”按钮。用filter对只按一个属性值查询的情况好说,但对同时按两个或更多属性值查询的情况怎么办呢?望各兄台继续关注,不胜感激!
      

  4.   

    对于有多个字段的查询一般在onfilterrecord事件中写代码;
    当filtered属性设为true时,onfilterrecord属性将被触发
    在onfilterrecord事件中有一个参数accept;
    用这个事件过滤accept=true的记录将显示出来:
    所以再该事件中你可以这样写:
    with table1 do 
    begin
      accept:=fieldbyname['checkbox1.text'].value=... and fieldbyname['checkbox2.text'].value=..) //你可以自己去写了
    end;
      

  5.   

    小弟前段时间在外打工,刚刚有时间继续学习Delphi,问题解决掉了,用的是thh820630(空吻)的方法.不过这类问题以后要用Qurey控件解决了,毕竟Qurey功能强一点.谢谢大家,以后还请继续关注