菜鸟求助,看下(100)

  • 主题发起人 主题发起人 heyang6257
  • 开始时间 开始时间
H

heyang6257

Unregistered / Unconfirmed
GUEST, unregistred user!
with ADOQuery2 do begin close; sql.Clear; sql.add('select * from Card_CG_Contract_MXB a where a.Col2,a.Col3,a.Col4,a.Col5,a.CardcontractID '); sql.add('in (select Col2,Col3,Col4,Col5,CardcontractID from Card_CG_Contract_MXB '); sql.Add('where CardcontractID='''+DBGridhead.DataSource.DataSet.fieldbyname('ID').AsString+''''); sql.add('group by Col2,Col3,Col4,Col5,CardcontractID having count(*)>1)'); open; end;麻烦大家帮忙看下着段怎么执行出错啊。。。
 
两个问题,一个是SQL语法问题,应该加括号:where (a.Col2,a.Col3,a.Col4,a.Col5,a.CardcontractID) in ....第二个,参数不要直接拼接到SQL中去,而是使用Parameter来赋值。
 
with ADOQuery2 do begin close; sql.Clear; sql.add('select * from Card_CG_Contract_MXB a where (a.Col2, a.Col3, a.Col4, a.Col5, a.CardcontractID )'); sql.add('in (select Col2,Col3,Col4,Col5,CardcontractID from Card_CG_Contract_MXB where CardcontractID=:b '); sql.add('group by Col2,Col3,Col4,Col5,CardcontractID having count(*)>1)'); Parameters.parambyname('b').datatype:=ftinteger; parameters.ParamByName('b').value:=DBGridhead.DataSource.DataSet.fieldbyname('ID').Asinteger; open;刚那位仁兄,报错说第一行附近‘,’处有语法错误。。这是怎么回事啊
 
执行前,看看 SQL.Text 的内容是什么,请仔细检查是否有语法错误
 
里面是select * from Card_CG_Contract_MXB where 1=2 其他部分也用的这个,就这部分出问题了。
 
把 SQL.Text 的内容放到一个 Memo 里,然后复制出来到查询分析器或PL/SQL中执行看看
 
后退
顶部