各位高手看下这段代码有什么问题?  with aQuery do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * From SelectObj Where RoomID=:A');
      Params.ParamByName('A').AsString:=aBFID;
      ExecSQL;
    end;aBFID为一个String变量,值为:'001',有一个好惨的事。如果这样:    SQL.Add('Select * From SelectObj Where RoomID="'+aBFID+'"');运行到这一行时会报,"参数不足,期待是1" 这个错。
而如果用上面说的那种方法,却查不到指定的结果。怎么办?这是什么问题?不是ADO是BDE的QUERY,我用的是DELPHI7+ACCESS 2000 请高手帮忙,谢谢!

解决方案 »

  1.   

    上面写错了,不是ExecSQL, 是 Open
      

  2.   

    除了楼上的说法外还有:
    SQL.Add('Select * From SelectObj Where RoomID="'+aBFID+'"');
    改成:
    SQL.Add('Select * From SelectObj Where RoomID='+''''+aBFID+'''');
      

  3.   

    1. 如果要返回数据集用open,反之用execsql
      

  4.   

    with aQuery do
        begin
          Close;
          SQL.Clear;
          SQL.Add(format('Select * From SelectObj Where RoomID=%s',[dataasstring]));
          Open;
        end;
      

  5.   

    进行update,insert,delete等操作才用execsql,select操作用open;
      

  6.   

    哦,试了一下,BDE的可以。ADOQUERY不行。我知道open和execsql的区别的,上面是我COPY错了
      

  7.   

    在窗体设计器中打开aQuery的Parameters属性,清空所有设计期加的参数
      

  8.   

    aBFID:=
     
     with aQuery do
        begin
          Close;
          SQL.Clear;
          SQL.Add('Select * From SelectObj Where RoomID=:A');
          ParamByName('A').AsString:=aBFID;
          IF Not Prapared then Prepare; 
          Open;
        end;
      

  9.   

    你的参数的写法是没有错误的,而另一种有错误
     aquery.sql.add('select * from selectobj where roomid='''+abfid+'''') 
    不要用双引号,而要用两个单引号,至于你用参数的方法查询不出来数据,估计你查错了,
    或者查询条件写错了 
    而且提醒你select 要用open;而其他比如insert,update,delete的时候是用execsql
      

  10.   

    aquery.sql.add('select * from selectobj where roomid='+#39|+abfid+#39)