表ttable 
id        idcard(加密后的身份证号码),一个身份证加密后可能得到不同的idcard)
user1     610YSHXZSDGHTT3
user2     410HSKLDGSQWRER
user3     620DFGBYTJGHETX我在adoquery1.sql中想搜索idcard='XXXXX'未加密的。  (同一个身份证可以注册多个id)
这个要如何搜索?如果不能用sql语句实现的话,那在adoquery1.open以后有没办法在找到的记录中过滤掉不符合的,并显示到DBgrid里

解决方案 »

  1.   

    用adoquery1的filter过虑就可以了。
    adoquery1.filered:=false;
    adoquery1.filer:='idcard=''XXXXX''';
    adoquery1.filered:=true;
    应该能够达到你的要求
      

  2.   

    to:cqbonny(不是我不明白,这世界变化快) 
    好象不行,我把XXXX加密后可能不等于记录中的任何一条数据(一个身份证加密后可能得到不同的idcard)我只能把搜索到的数据,一条一条的还原,然后过滤。
      

  3.   

    我搜索61100394309,可能在库中有很多个,因为一个号码加密后可能不相同
    可能会有很多条数据,这个方法还要应用到另一个库,如果搜索出10000个符合条件的
    adoquery1.filer:=idcard 'x1' and 'x2' ...........x10000...不会吧filer撑爆炸吧?
      

  4.   

    建议你不用这种算法加密,干嘛要一对多呢123 经过单项加密后变成 AD3DF存到库里测试 XXX 经过单项加密后能否变成 AD3DF
    能过
    不能则不过
      

  5.   

    to 回复人: lencon() ( ) :当然有我要用的道理啊。除了临时表,还有什么方法?
      

  6.   

    过滤看样不可行,建议将原表加一列,ID原码字段
    先还原,后用adoquery1
    adoquery1.filer:='idcard=''XXXXX''';
    DBGRID显示时将ID原码字段隐藏因为'XXXXX'运算加密后出直接过滤,可能与表中还有不一致.
      

  7.   

    如考虑到加密还可以在ID原码字段中不显示原码,而显示单向运算加密码AAA这样用户输入的'XXXX'值再单向运算到AAA
    再通过ADOQUERY去过滤AAA就能得到所有的ID