问个初级的怪问题
用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也能得到正确的值,就是分开不行。
请问这会是什么问题?
问题点数:50、回复次数:20Top
1 楼lzheng2001(1加1)回复于 2005-06-01 21:01:10 得分 10
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
Top
2 楼hahahoo()回复于 2005-06-01 21:32:23 得分 0
没有用,这个messagebox我早就加了,只是没贴出来而已。问题是连messagebox也不弹出来Top
3 楼lzheng2001(1加1)回复于 2005-06-01 22:08:48 得分 5
不可能的,细心检查一下你的代码吧Top
4 楼hahahoo()回复于 2005-06-01 22:46:25 得分 0
我又重新改了一下函数中的代码用于测试。如下
long ll;
select top 1 iperiod into :ll from gl_mend using gtran_uf;
ll = 5;
messagebox( "test ",ll) ;
return ll
这样的代码运行的时候没有任何反应,包括信息框、返回结果或出错信息。
我把中间的select去掉,就没有问题了。这个到底是什么回事,就算数据连接有问题也报个错吧。Top
5 楼njupt_zhb(攒钱买飞机)回复于 2005-06-02 00:04:56 得分 5
比较奇怪了.
debug一下看看有没有执行这个函数里面.
messagebox不显示是因为参数为null.Top
6 楼princelily(百合)回复于 2005-06-02 07:50:48 得分 10
你自定义事务处理对象gtran_uf的时候,是这样定义的?
先在全局变量声明的地方声明了 transaction gtran_uf
然后在application的open事件中写:
gtran_uf = create transaction
gtran_uf.dbms = ……
……
一系列数据库连接信息?
我觉得是你定义的全局事务处理对象的问题。Top
7 楼princelily(百合)回复于 2005-06-02 07:53:10 得分 0
再有,用PB就要会用DEBUG功能,很强大的纠错工具。
你在st_1.text = string(getid())
前设置个端点,进入调试,看看,进入getid()函数后执行sql语句后,查看全局变量中的gtran_uf.sqlcode的值吧!你会有收获的。Top
8 楼lzheng2001(1加1)回复于 2005-06-02 08:45:56 得分 0
进入debug模式吧,看一下语句有没有运行! 楼主是玩C语主的吧,都已经习惯了用分号了Top
9 楼li_d_s(鄙视那些不懂Java却跑来乱骂的人,.NET没啥了不起)回复于 2005-06-02 09:39:00 得分 0
跟踪Top
10 楼j9dai(翔)(DoItNow)回复于 2005-06-02 10:44:33 得分 5
Debug吧Top
11 楼ghostagain(心情卡片)回复于 2005-06-02 11:59:30 得分 5
messagebox也不弹出来 如果你的LL是空的话就不会弹出来了Top
12 楼gwgok(gwg)回复于 2005-06-02 12:40:02 得分 5
什么鸟问题。Top
13 楼hahahoo()回复于 2005-06-02 17:02:41 得分 0
ll不可能为空,因为我在select后,又再次符值。同样我也认为不是全局变量的问题。因为把这段代码放到函数外面就没有问题。
debug模式也很奇怪,我不能设定这段代码的断点。Top
14 楼hahahoo()回复于 2005-06-02 17:17:09 得分 0
大家继续讨论,人人有分,分不够再加Top
15 楼lzheng2001(1加1)回复于 2005-06-02 17:23:35 得分 0
换台机器试试,我估计是你的调用的代码有问题,是否有个同名(相似)的函数! 检查其它PBL中是否有同名的函数!Top
16 楼hahahoo()回复于 2005-06-02 17:57:15 得分 0
没有,新建的项目,呵呵,要不换台机器试试看。Top
17 楼yzip(夏雨飞)回复于 2005-06-02 17:59:21 得分 5
1.判断SQLCODE= 0 ?
2.判断返回值isnull(ll_id)? 赋值为零或-1
Top
18 楼njupt_zhb(攒钱买飞机)回复于 2005-06-02 18:17:39 得分 0
sql语句是不能设断点滴....在它前面设.Top
19 楼hahahoo()回复于 2005-06-03 00:34:24 得分 0
还是奇怪的问题,我只要把这条select语句加上去,整个函数中的任何一行都不能设定断点,把这行select去掉就可以了。真见鬼了。Top
20 楼hahahoo()回复于 2005-06-03 00:46:08 得分 0
总算搞定了,为什么一定要设定Database profiles,在运行时创建一个transcation不行吗?Top




