sxc:=trim(CB_search.Text);
    strsql:='select  信息内容 from 信息表 ';
 
     ADOQserch.Close;
    ADOQserch.SQL.Clear;
       ADOQserch.SQL.Add(strsql);
    ADOQserch.open;
    上面就没有问题?
这样的就有问题
 strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
非常差异  ?
如果这样 也可以
 strsql:='select top 10  信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
如果这样 就不可以了
 strsql:='select top 100  信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';

解决方案 »

  1.   

    我使用的是access的 ,看了很多相关的  都没有办法
      

  2.   

    字符串(包括数字,汉字,字母还有标点)是乱吗 该怎样判断例如:
    500輠寁枉鐉糁?丠洰枦鐉糁?
    @nE&J>这样的乱吗  怎么样判断他不是正常显示的,然后抛弃他,该怎样做
      

  3.   

    strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';ADOQserch.Close;
        ADOQserch.SQL.Clear;
           ADOQserch.SQL.Add(strsql);
        ADOQserch.open;
    没有等你 移动记录指针呢
    到 ADOQserch.open;  就提示  "内存益出"了啊
      

  4.   

    这些不是繁体  字 ,我是通过  一个机器接收近来信息,这个机器 有的时候信号不好 就有这样的乱吗,乱吗少 不影响什么 ,一多了  就导致迷糊查询出现“内存益出”的现象
    strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';ADOQserch.Close;
        ADOQserch.SQL.Clear;
           ADOQserch.SQL.Add(strsql);
        ADOQserch.open;
    到 ADOQserch.open;  就提示  "内存益出"了
    乱吗少的时候吧就没有这个问题,也不知道到底是为什么?如果strsql:='select 信息内容 from 信息表 ';这样写  里面乱吗在多 也没有问题???????????我使用的是access数据库 这个问题看来的归于 delphi 的ado 的问题了
    和acess没有任何关系 和乱吗  也应该没有关系的
    下面是我使用vb做的语句 ,他就没有问题
    Dim strsql As String
      Set zc = New ADODB.Recordset
      strsql = "select  tyu from 信息表 where tyu like '%" + Trim(CB_search.Text) + "%'"
       zc.Open strsql, conn, 3, 3
      Set DataGrid1.DataSource = zc
    诧异???????????  
      

  5.   

    还有 就是 在98系统下面没有问题  就是在2000和xp 下 面有问题
    strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';ADOQserch.Close;
        ADOQserch.SQL.Clear;
           ADOQserch.SQL.Add(strsql);
        ADOQserch.open;
    到 ADOQserch.open;  就提示  "内存益出"了
      

  6.   

    strsql:='select 信息内容 from 信息表 where 信息内容 like '+''''+'%'+trim(CB_search.Text)+'%'+'''';把sql语句改成这个试一下,还不行的话,把ADOQuery控件的Paramcheck属性设为false,这样问题应该解决了。
      

  7.   

    Access在执行对包含一些片假名字符的文本字段执行LIKE和instr的时候会有内存溢出错误,这些片假名如下
    static string[] strJArray={"ゴ","ガ","ギ","グ","ゲ","ザ","ジ","ズ","ヅ","デ","ド","ポ","ベ","プ","ビ","パ","ヴ","ボ","ペ","ブ","ピ","バ","ヂ","ダ","ゾ","ゼ"};
    你可以自己将数据进行base64/UTF8编码,也可以仅对这几个字符进行自定义编码来节省存储空间。
    我的自定义编码函数
    static string[] strEArray={"Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;"};
    //用于绕过Access片假名查询内存溢出BUG的编码函数
     static public string JEncode(string strToEncode)
    {
    for(int i=0;i<strJArray.Length;i++)
    {
    strToEncode.Replace(strJArray[i],strEArray[i]);
    }
     return strToEncode;
    }
    //用于绕过Access片假名查询内存溢出BUG的解码函数
     static public string JDecode(string strToDecode)
    {
    for(int i=0;i<strJArray.Length;i++)
    {
    strToDecode=strToDecode.Replace(strEArray[i],strJArray[i]);
    }
     return strToDecode;
    }
      

  8.   

    to wildhorsetlj(tianye`  你的这个我测试了,还是益出
    to jiangsheng  你的这个我的整理成 delphi 的测试一下  在给结果谢谢二位了
      

  9.   

    strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
    You need to encode all data in 信息表.信息内容.
      

  10.   

    to  jiangsheng你这样写strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
    什么意思。我的数据 在 “信息表“里面的 ”信息内容“这个字段里面我在总结一下我的测试结果::::::
      我使用的是access数据库 
    1:这些不是繁体  字 ,我是通过  一个机器接收近来信息,这个机器 有的时候信号不好 就有这样的乱吗,乱吗少 不影响什么 ,一多了  就导致迷糊查询出现“内存益出”的现象
    strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';ADOQserch.Close;
        ADOQserch.SQL.Clear;
           ADOQserch.SQL.Add(strsql);
        ADOQserch.open;
    到 ADOQserch.open;  就提示  "内存益出"了
    2:乱吗少的时候吧就没有这个问题,也不知道到底是为什么?3:如果strsql:='select 信息内容 from 信息表 ';这样写  里面乱吗在多 也没有问题???????????这个问题看来的归于 delphi 的ado 的问题了
    和acess没有任何关系 和乱吗  也应该没有关系的
    4:下面是我使用vb做的语句 ,他就没有问题
       Dim strsql As String
       Set zc = New ADODB.Recordset
       strsql = "select  tyu from 信息表 where tyu like '%" + Trim(CB_search.Text) + "%'"
       zc.Open strsql, conn, 3, 3
      Set DataGrid1.DataSource = zc
    诧异???????????  
    5:使用delphi的话在strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';  在系统为”2000“或者”xp “下面就会“益出”,在”98“下面执行,就没有这个问题
    6:字段名 有的说更改成”字母“的 ,我也更改了 ,还是一个样
      

  11.   

    如果记录不多的话,好象对备注型字段like没有什么问题
    记录一多,like就有问题了所以我在进行全文检索的时候,只有开个线程一条一条的检索并显示出来
      

  12.   

    to knife_s   我没有使用"备注"字段  信息内容 长度 都在100-200个字符之间的,
    请问  你是怎样检索的呢 
    strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';ADOQserch.Close;
        ADOQserch.SQL.Clear;
           ADOQserch.SQL.Add(strsql);
        ADOQserch.open;
    这样写 ,还没有等你"一条一条的检索"
    到 ADOQserch.open;  就提示  "内存益出"了
      

  13.   

    呵呵,我的检索方法比较有意思,每次只取一条记录,不用like牺牲了速度,但是不会报错,没有考虑去编码,那样数据库会增大三倍左右你可以参考一下这篇文章http://access911.net/fixhtm/71FAB11E12DCE9F3.htm
      

  14.   

    to  knife_s
    没有考虑去编码,那样数据库会增大三倍左右   什么意思?
      

  15.   

    建议使用WideString存取,这是Delphi标准实现不支持Unicode字符集的原因,你可以根据字符子集的范围对乱码,即非中文简体集进行判断免除;如果是项目的话,实施时,在OS中选择一下支持字符集就能解决;
      

  16.   

    呵呵  to centurybobo(大笨鸟  说什么呢啊