语句如下:
 AdoQuery1.SQL.Add('Select 图书编号,书名,作者,类名,出版社,定价 From 图书信息 A,图书类别 B');
 AdoQuery1.SQL.Add('Where (A.书名 Like :书名) and A.类别=B.类别');
 AdoQuery1.Parameters.ParamByName('书名').Value:='%'+Edit1.Text+'%';
其中数据库中有书名为:‘sds’,和‘ABC’的书。当在Delphi6下运行我做的程序时,输入‘s’,能够查到
纪录‘sds’,而输入‘A’时却没有纪录,是何原因?但是在查询分析器内可以正常。

解决方案 »

  1.   

    if (EdtRegion.Text<>'') then
        SqlParam:=SqlParam+' and Region like ''%'+EdtRegion.Text+'%''';
      

  2.   

    我想可能不是你的sql语句出错. 我注意到你是从两张表中通过关联得到数据的. A.类别=B.类别
    我想你可能需要检查一下 书名为 'ABC' 的那条记录的类别在 图书类别 表 中是否有相同类别的记录存. :)
      

  3.   

    (1)Select 图书编号,书名,作者,类名,出版社,定价 From 图书信息 A,图书类别 B Where A.类别=B.类别
       是不是符合Where A.类别=B.类别条件的数据集中没有ABC这条记录??(2)Edit1.Text中输入ABC之前有空格??   Trim(Edit1.Text).
      

  4.   

    AdoQuery1.Parameters.ParamByName('书名').Value:=''''+'%'+Edit1.Text+'%'+'''';
      

  5.   

    赞成楼上的解释!在图书信息表 A中有含有A的书名,但也许在图书类别 B没有和A类别相关的数据
      

  6.   

    Select 图书编号,书名,作者,类名,出版社,定价 From 图书信息 A,图书类别 B Where A.书名 Like ''%'+Edit1.Text+'%''' and A.类别=B.类别'
      

  7.   

    我想可能不是你的sql语句出错. 我注意到你是从两张表中通过关联得到数据的. A.类别=B.类别
    我想你可能需要检查一下 书名为 'ABC' 的那条记录的类别在 图书类别 表 中是否有相同类别的记录存. :)
    ---------------------------------------------
    同意,你的A.类别=B.类别是什么意思?你的表的结构是怎么定义的?以及你要实现的功能是什么?
      

  8.   

    猜测:参数截断问题.
    用事件探查器看看ADO提交到SQLSERVER的SQL语句,其中的参数是否被截断了
      

  9.   

    但是在查询分析器内可以正常。//////////////////////////////////楼主都说了,在查询分析器内是正常的!看看楼上几位的回答!我想问一下楼主,你用的啥数据库,Access or MS SQL Server ?
      

  10.   

    >>楼主都说了,在查询分析器内是正常的!看看楼上几位的回答!>>我想问一下楼主,你用的啥数据库,Access or MS SQL Server ?质疑别人的回答.....不过
    ACCESS好象没有查询分析器吧?
      

  11.   

    质疑别人的回答.....不过
    ACCESS好象没有查询分析器吧?////////////////////////////笑话!
      

  12.   

    BigAngell(风雨英雄)质疑别人的回答.....不过
    ACCESS好象没有查询分析器吧?////////////////////////////笑话!-----------------------------------
    据我所知,ACCESS只有一个查询设计器,SQL SERVER倒是有个查询分析器,难道我用的OFFICE 2003不够新?您用的ACCESS2005或者更高版本?还带了个查询分析器?请指教...
      

  13.   

    楼主你用的是sqlserver吧,仔细查查ABC的数据类型,如果是nvarchar的话,最好改成varchar再44
      

  14.   

    AdoQuery1.SQL.Add('Where (A.书名 Like :书名) and A.类别=B.类别');里面括号去了
    感觉还是sql的问题,应该是那儿写错了..