hur.cn - 华软网

 热门搜索

问个初级的怪问题

  作者:未知    来源:网络    更新时间:2018/3/3
PB6.51做一个东西
写了一个函数getid()如下

long ll

select top 1 id
into :ll
from lists
using gtran;

return ll

其中gtran是全局的transcation
在一个window中的按钮事件如下

st_1.text = string(getid())

运行后没有任何反应,如果让getid()直接返回一个数字st_1中能得到正确的值,把getid中的内容直接写道按钮的事件中st_1也能得到正确的值,就是分开不行。

请问这会是什么问题?
------华软网友回答------
select top 1 id
into :ll
from lists
using gtran;
//加上这句测试一下
if gtran.sqlcode <> 0 then 
   messagebox("test",gtran.sqlerrtext)
else
   messagebox("test",ll)
end if

------华软网友回复------
没有用,这个messagebox我早就加了,只是没贴出来而已。问题是连messagebox也不弹出来
------华软网友回复------
不可能的,细心检查一下你的代码
------华软网友回复------
我又重新改了一下函数中的代码用于测试。如下

long ll;

select top 1 iperiod into :ll from gl_mend using gtran_uf;

ll = 5;

     messagebox(  "test  ",ll) ; 

return ll

这样的代码运行的时候没有任何反应,包括信息框、返回结果或出错信息。
我把中间的select去掉,就没有问题了。这个到底是什么回事,就算数据连接有问题也报个错吧。
------华软网友回复------
比较奇怪了.
debug一下看看有没有执行这个函数里面.
messagebox不显示是因为参数为null.
------华软网友回复------
你自定义事务处理对象gtran_uf的时候,是这样定义的?
先在全局变量声明的地方声明了 transaction gtran_uf
然后在application的open事件中写:
gtran_uf = create transaction
gtran_uf.dbms = ……
……
一系列数据库连接信息?
我觉得是你定义的全局事务处理对象的问题。
------华软网友回复------
再有,用PB就要会用DEBUG功能,很强大的纠错工具
你在st_1.text = string(getid())
前设置个端点,进入调试,看看,进入getid()函数后执行sql语句后,查看全局变量中的gtran_uf.sqlcode的值吧!你会有收获的。
------华软网友回复------
进入debug模式吧,看一下语句有没有运行! 楼主是玩C语主的吧,都已经习惯了用分号了
------华软网友回复------
跟踪
------华软网友回复------
Debug吧
------华软网友回复------
messagebox也不弹出来   如果你的LL是空的话就不会弹出来了
------华软网友回复------
什么鸟问题。
------华软网友回复------
ll不可能为空,因为我在select后,又再次符值。同样我也认为不是全局变量的问题。因为把这段代码放到函数外面就没有问题。
debug模式也很奇怪,我不能设定这段代码的断点。
------华软网友回复------
大家继续讨论,人人有分,分不够再加
------华软网友回复------
换台机器试试,我估计是你的调用的代码有问题,是否有个同名(相似)的函数! 检查其它PBL中是否有同名的函数!
------华软网友回复------
没有,新建的项目,呵呵,要不换台机器试试看。
------华软网友回复------
1.判断SQLCODE= 0  ?
2.判断返回值isnull(ll_id)? 赋值为零或-1


------华软网友回复------
sql语句是不能设断点滴....在它前面设.
------华软网友回复------
还是奇怪的问题,我只要把这条select语句加上去,整个函数中的任何一行都不能设定断点,把这行select去掉就可以了。真见鬼了。
------华软网友回复------
总算搞定了,为什么一定要设定Database profiles,在运行时创建一个transcation不行吗?      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。