我的表的字段名称是未知的,而且个数也是未知的。但是都是数字型字段。我现在要实现这样一个目的。
搜索出所有同时包含数字1和3的记录。1有可能存在所有的字段,3也可能存在所有字段。我用的是adoquery 。我的表可能有上百个字段。怎么实现??谢谢各位了。

解决方案 »

  1.   

    是 sql server吗?如果是可以用存储过程处理是没有问题的
      

  2.   

    直接从系统表中抓出字段,然后动态生成sql   就可以了
      

  3.   

    那就用adotable 先取出所有的字段然后动态生成一个含有所有的字段的为where语句的 sql,传到adoquery里面去执行
      

  4.   

    我的想法是用循环语句生成sql语句,但是or和and不好控制
      

  5.   

    adoquery1.sql:='select * from tablename';
    adoquery1.open;
    sql:='';
    for i:=0 to adoquery1.fieldcount-1 do 
    begin
    if sql<>'' then
       sql:=sql+'+'
    sql:=sql+adoquery1.fields[i].fieldname
    end;sql:=' select * from tablename where '''+'1'+' indexof('+sql+') and '''+'3'+''' indexof ('+sql+')';  判断字符串位置函数给忘了,你找一下
      

  6.   

    我不想用adotable,我知道adoquery是可以获取字段名的。。adoquery.field(i).fieldname就是获取字段名的。
      

  7.   

    主要就是字符串位置判断就OK了!不知道access  里面是哪个
      

  8.   

    linzhisong(無聊) 你这个方法可以吗??如果可以的话那太感谢你了。我等会试试,如果正确的话就揭贴。。:)
      

  9.   

    那个就是一个字符在另一个字符串里的位置,sorry, 我也不知道是什么我只是 拿 indexof  代替一下,access里面的查找字符串位置我不知道
      

  10.   

    查找1在很多字段名称出现??是不是写错了?是不是value哦。。
      

  11.   

    那这个函数是什么??我对access也不懂的。。
      

  12.   

    我知道了  你用likesql:=' select * from tablename where ('+sql+') like %1% and ('+sql+') like %3%'
      

  13.   

    用like恐怕不行。我说1,3只是举个例子而已。。因为我的1,3只是从某一个数组中读出来的。这些数据是不确定的。如果出现11,111呢??
      

  14.   

    数字型的,有问题, 可能后面要再加个字符才行,转化成字符串sql:=sql+adoquery1.fields[i].fieldname+  ''''+''''
      

  15.   

    sql:=' select * from tablename where ('+sql+') like %''+  字符串1+'''% and ('+sql+') like %'''+字符串2+'''%'一样的啊!
      

  16.   

    晕!几百个字段的表!我在sql server都不敢轻易建超过30的....
    由于access的功能太弱,所以我只能想到
    1 用临时表
    2 用游标
    3 读出表后在delphi前台判断
    但似乎都是循环箝套,而且几百个字段,的确不能保证效率,所以只提出方案想法,抛砖引玉,不知哪位有高见