当前位置: 代码迷 >> PB >> 查询有关问题。
  详细解决方案

查询有关问题。

热度:33   发布时间:2016-04-29 08:29:38.0
查询问题。。。
在SQL查询分析器中用:
select sum(total) from invoice where date_build>'2011-09-01' and date_build<='2011-09-30'
得到total的合计数为100

在PB中
long tot_total
tot_total=0
select sum(total) into :tot_total from invoice where date_build>'2011-09-01' and date_build<='2011-09-30';

得到的tot_total的合计数为0
即select ...这个语句根本不执行!!!不知道为什么?
以前这程序都正常运行的,但这个月,查询到这语句不执行!得到的结果都是0,怪!


------解决方案--------------------
用事件探查器跟踪一下
------解决方案--------------------
是用的默认事务吗,把事务名叫上试试~
------解决方案--------------------
忘了在查询后检测一下 sqlcode 和 sqlerrtext ?
------解决方案--------------------
代码里面写SQL,最好把事物对象写上(即使是默认的),还有就是必须要检测返回值。如:
select ...into...form ...where....
using ....//(默认是sqlca)这个就是事务对象
要检查的就是sqlca.code至于他得值信息,自己查。。
------解决方案--------------------
从语句上来看,没有错误.

我认为你在使用语句前,可能没有连接上数据库,或是连接到别的库中去了.
------解决方案--------------------
有错误。你没检查。内嵌的into语句,如果语法错误,执行错误或者记录为空时,不会有返回值或者返回一个系统默认值,或保持初始值。我记得我写一个语句返回服务器时间,以便检查客户端的时间差,结果语句有问题,返回1900-1-1这样的。。
------解决方案--------------------
探讨
代码里面写SQL,最好把事物对象写上(即使是默认的),还有就是必须要检测返回值。如:
select ...into...form ...where....
using ....//(默认是sqlca)这个就是事务对象
要检查的就是sqlca.code至于他得值信息,自己查。。

------解决方案--------------------
C/C++ code
long tot_totaltot_total=0select sum(total) into :tot_total from invoice where date_build>'2011-09-01' and date_build<='2011-09-30' using sqlca;if sqlca.code = -1 then   MessageBox("SQL error", SQLCA.SQLErrText)elseif sqlca.code = 100 then   MessageBox("SQL", 'No records found')end if
  相关解决方案