在设计界面SQL.TEXT:=select * from TB_ConLoad_Con  
where CODE_VESSEL = :sCODE_VESSEL1 
and VOYAGE = :sVOYAGE1 
and CTN_NO in ( 
select CTN_NO from TB_ConLoad_Rel 
 WHERE CODE_VESSEL = :sCODE_VESSEL 
and VOYAGE = :sVOYAGE 
and BLNO = :sBLNO 
)
其中5个参数,在程序中赋值,而且追踪都是正确的,但是结果没有返回数据
在调试过程中,我把sql.text的赋值语句写到pas文件中,结果是正确的,代码如下:
if aq_con.Active then aq_con.Close;
 aq_con.SQL.Text:='select * from TB_ConLoad_Con where CODE_VESSEL ='+''''+CODE_VESSEL+''''+'and VOYAGE ='+''''+VOYAGE +''''+'and CTN_NO in (select CTN_NO from TB_ConLoad_Rel WHERE CODE_VESSEL ='+''''+CODE_VESSEL +''''+'and VOYAGE ='+''''+VOYAGE+''''+'and BLNO ='+''''+BLNO+''''+')';aq_con.Open;
我把sql换成参数时又是没有数据,代码如下:
  aq_con.Parameters.ParamByName('sCODE_VESSEL1').Value:=self.code_Vessel;
        aq_con.Parameters.ParamByName('sVOYAGE1').Value:=self.voyage;
         aq_con.Parameters.ParamByName('sCODE_VESSEL').Value:=self.code_Vessel;
          aq_con.Parameters.ParamByName('sVOYAGE').Value:=self.voyage;
         aq_con.Parameters.ParamByName('sBLNO').Value:=self.blno;
请问这是什么问题?
哪个大哥知道怎么追踪adoquery在open前和数据库实际操作的sql语句,不是显示参数的那种,比如说
'select * from a where b='123''其中b是参数

解决方案 »

  1.   

    看不出来什么错误,我记得我遇见过一次,是因为某一个参数的值是Null引起的
      

  2.   

    aq_con.Parameters这句之前的sql呢?
      

  3.   

    把SQL事件查看器开起来监视一下,看看在SQL服务端时执行的什么。
      

  4.   

    SQL查詢,要加isnull()查詢,如果你的字段有些是NULL的話。
      

  5.   

    把SQL语句 放到SQL的查询分析器中运行看看
      

  6.   

    问题是把参数写到sql语句中是正确的:
    if aq_con.Active then aq_con.Close;
     aq_con.SQL.Text:='select * from TB_ConLoad_Con where CODE_VESSEL ='+''''+CODE_VESSEL+''''+'and VOYAGE ='+''''+VOYAGE +''''+'and CTN_NO in (select CTN_NO from TB_ConLoad_Rel WHERE CODE_VESSEL ='+''''+CODE_VESSEL +''''+'and VOYAGE ='+''''+VOYAGE+''''+'and BLNO ='+''''+BLNO+''''+')';aq_con.Open;
    但是用参数就错了,首先可以排除掉sql语句没有错误,参数的值也没有错误,我的意思是:在用参数的过程中,是不是delphi在把参数组合成sql语句的时候出了问题,有没有办法追踪到adoquery在open之前于数据库操作的sql语句?
      

  7.   

    把MS SQL的事件查看器开起来监视一下,看看在SQL服务端时执行的什么就知道了。
      

  8.   

    用这种连接delphi好象有时候行有时候不行,改成不传参数应该没有问题的
      

  9.   

    不要傳參的。把SQL語句打出來,看是不是你要的語句有沒有錯,然後到SQL查詢分析器裡運行一下有沒有錯了。