被无视的伊谢尔伦

雕栏玉砌应犹在,只是朱颜改

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  9 随笔 :: 0 文章 :: 6 评论 :: 0 Trackbacks

这几天拿到公司以前项目中的一个用C++Builder做的程序,在我机器上调试,结果提示出错:Operation not applicable

使用断点跟踪之后发现错误出在使用TQuery时执行open方法时,回追根源,得出以下反馈:

m_pqQuery -> SQL -> Add(  " Select * From Table1 Where Id = :PId  "  );
m_pqQuery
-> ParamByName(  " PId "  ) -> AsInteger      =  某个int变量;


执行完这句之后,按正常情况,参数PId应该被赋予了一个整形值,但是Debug跟踪显示其值还是跟未赋值前是同样表示的未知值。所以在执行open方法时出错了。

如果我不是用该方法,直接把SQL语句写死:

m_pqQuery -> SQL -> Add(  " Select * From Table1 Where Id = 0  "  );


运行正常

或者用

char  sql[ 80 ];
int  n  =  某整形变量 ;
sprintf(sql,
" Select * From Table1 Where Id = %d " ,n);
pqQuery
-> SQL -> Add(sql);


也运行正常

查了下,原来给参数赋值的方法并没有错误,编译也能通过,况且以前该程序肯定是能正常运行的。。真是奇怪为什么在我这里就赋不上值。。调试了很久也没能找到原因,只好作罢,为了顺利运行,只能改为sprintf和直接连接字符串的方式。
在这里记上一笔,希望以后能够找到原因。。。

posted on 2006-10-26 21:25 爱上青菜的包子 阅读(354) 评论(0)  编辑 收藏 引用 所属分类: C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理