//
   close;
   sql.Clear; //不要忘记

解决方案 »

  1.   

    可能少了SQL.clear
    64,65,66 说少了分号
      

  2.   

    LANBABA:
    “64 65 66”程序中当然是没有的,是我自己加上去的行号是为了提问题方便些。。
      

  3.   

    兄弟,多看看Delphi的帮助嘛
    TADOQuery是没有ParamByName属性和Prepare方法的
    只有Parameters属性和Prepared属性。
      

  4.   

    adoquery1.parameters.parambyname('publish').asstring:=memopublish.Text;
      

  5.   

    TO  Delphi_Li(Delphi Li) :
     sql.add('where(出版社=:'publish')');
    应该这样吗?
    TO softwing(无人喝彩):
     Parameters属性要替代PARAMBYNAME的作用,该怎么用啊,请指点。谢了!
      

  6.   

    with ADOQuerynormal do
       begin
       close;
       clear;
       sql.Add('select 书名,出版时间,作者');
       sql.Add('from 基本信息表');
       sql.add('where(出版社=:publish)');
       sql.Add('and(著作类型=:type1)');
       sql.add('and(藏书来源=:source)');
       parameters.ParseSQL(SQL.text,True);
       parameters.parambyname('publish').asstring:=memopublish.Text;
       parameters.parambyname('type').asstring:=memotype.Text;
       parameters.paranbyname('source').asstring:=memosource.Text;
       prepare;
       open;
       end;
      

  7.   

    用parameters参数很麻烦的,直接把参数值做为字符串拼装到Sql语句里就行,Debug的时候也方便.
      

  8.   

    是啊,用Format来拼装一个SQL最方便。或者把Sql语句放到数据库里头。
      

  9.   


     with ADOQuerynormal do
       begin
       close;
       sql.Add('select 书名,出版时间,作者');
       sql.Add('from 基本信息表');
       sql.add('where(出版社=:publish)');
       sql.Add('and(著作类型=:type1)');
       sql.add('and(藏书来源=:source)');
       prepare;
       Parameters.CreateParameter('publish', ftString, pdInput,0,emopublish.Text);
    Parameters.CreateParameter('type', ftString, pdInput,0,memotype.Text);
    Parameters.CreateParameter('source', ftString, pdInput,0,memosource.Text);
       open;
       end;