ADOQuery_sbcx.SQL.Text:=' SELECT  yqmc,count(*) FROM [zhxt].[dbo].[sbgl] where left([yqmc],i)='''+Adoquery2.FieldByName('yqmc').value+'''   group by yqmc
 如以上语句,i  是一个变量, 这样直接写是错误的,请问应该如何 表达这个i 变量。是 ‘’+i+‘’  ?? 好像这样也是错误的

解决方案 »

  1.   

    不建议用拼接SQL语句,改用Format函数
    ADOQuery_sbcx.SQL.Text:=Format('SELECT  yqmc,count(*) FROM [zhxt].[dbo].[sbgl] where left([yqmc],%d)= %s group by yqmc',[i,QuotedStr(Adoquery2.FieldByName('yqmc').AsString)]);
      

  2.   

    字符串用QuotedStr,看上去顺眼多了
     ADOQuery_sbcx.SQL.Text:=' SELECT  yqmc,count(*) FROM [zhxt].[dbo].[sbgl] where left([yqmc],i)='+
                                                        QuotedStr(Adoquery2.FieldByName('yqmc').value)+
                                                        '  group by yqmc'
      

  3.   

    ADOQuery_sbcx.SQL.Text:=' SELECT  yqmc,count(*) FROM [zhxt].[dbo].[sbgl] where left([yqmc],‘+inttostr(i)+')='''+Adoquery2.FieldByName('yqmc').value+'''   group by yqmc
      

  4.   

     ADOQuery_sbcx.SQL.Text:=' SELECT  yqmc,count(*) FROM [zhxt].[dbo].[sbgl] ’ + 
                                                       ’ where left([yqmc],'+InttoStr(i) + ')='  + 
                                                       QuotedStr(Adoquery2.FieldByName('yqmc').AsString)+' group by yqmc'