for  i:=1  to  tihao  do    
begin  
           adoquery8.Close;  
           adoquery8.SQL.Clear;  
           adoquery8.SQL.Add('select  count(answerinfo.所选答案)  as  sumofexam  from  answerinfo,rightanswer');  
           adoquery8.SQL.Add('where  answerinfo.科目=rightanswer.科目');  
           adoquery8.SQL.Add('and  answerinfo.科目='+''''+DBComboBox2.Text+''''+'');  
           adoquery8.sql.Add('and  answerinfo.考试时间=rightanswer.考试时间');  
           adoquery8.sql.Add('and  answerinfo.考试时间=#'+''+DBComboBox4.Text+''+'#');  
           adoquery8.SQL.Add('and  answerinfo.题号=rightanswer.题号');  
           adoquery8.sql.Add('and  answerinfo.所选答案=rightanswer.正确答案');  
           adoquery8.SQL.Add('and  answerinfo.题号:=i');  //这里出现问题  
           adoquery8.Open;  
end;                          
 
以上代码运行的后果是:  
       parameter对象被不正确地定义。提供了不一致或不完整的信息。  
如果屏蔽这一句adoquery8.SQL.Add('and  answerinfo.题号:=i');  ,运行是没有问题的。  
         
我现在就是想问问,我想动态设置SQL,以上方法错在哪里?应该要怎样修改?

解决方案 »

  1.   

    adoquery8.SQL.Add('and  answerinfo.题号=' = IntToStr(i));  //这里
      

  2.   

    不好意思,符号写错了:
    adoquery8.SQL.Add('and  answerinfo.题号=' + IntToStr(i));  //这里--------------------------------------
    看见了么,
    那支蛾子,
    正飞向太阳,
    那就是我!
    --------------------------------------
      

  3.   

    你加那个冒号干什么?
    SQL语法跟pascal语法又不一样。
      

  4.   

    上面老兄敲错一个+号吧?:)
    我一直跟我带 的那个师弟说一定要注意你现在是在写sql语句
    还是写delphi代码,类似的
    如果你要加where 考试时间=‘2002-02-02’一定要注意写成adoquery8.SQL.Add('and  answerinfo.考试时间='+'''2002-02-02''' );
     
      

  5.   

    adoquery8.SQL.Add('and  answerinfo.题号=:Th');  //这里出现问题  
    Parameters.ParamByName('Th).Value:=i;
      

  6.   

    这个是要计算一个班里某一道题答对的人数,现在要动态改变题号,代码如这一句:
    adoquery8.SQL.Add('and  answerinfo.题号:=i');
    但就是在这句出现问题。
    动态sql是这样设置的嘛?
    要怎样修改?
      

  7.   

    adoquery8.SQL.Add('and  answerinfo.题号=' = IntToStr(i));
      

  8.   

    to firetoucher(蹈火者) 
    你为什么那么急??
    to myself
      为什么比他还急?
      

  9.   

    adoquery8.SQL.Add('and  answerinfo.题号=' = IntToStr(i));
      

  10.   

    to  belllab(bell) :
    运行还是不通过,错误信息如下:
    adoquery8:parameter "题号" not found。
      

  11.   

    adoquery8.SQL.Add('and  answerinfo.题号:=i');  //这里出现问题  
    -------->改为adoquery8.sql.add(' and answerinfo.题号 = :i');
    adoquery8.Parameters.parambyname('i').asinteger := strtoint(edit1.text);
      

  12.   

    采纳 firetoucher(蹈火者) 
         yoic(我是一棵菠菜,菜,菜,菜,菜,菜,菜) 
         fhuibo(Sailor)
    等大哥的意见;belllab(bell)、 hhytsoft(雨中独行)两位大哥的意见在运行中还有点错误,可能我还没有领会。