这两天用C++Builder时碰到一点问题,关于TQuary的

这两天用C++Builder时碰到一点问题,关于TQuary的

这几天拿到公司以前项目中的一个用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和直接连接字符串的方式。
在这里记上一笔,希望以后能够找到原因。。。

你可能感兴趣的:(这两天用C++Builder时碰到一点问题,关于TQuary的)