关于PB游标的问题,高手帮忙!!!!!!!!
我在PB中使用游标,由于是在循环中使用,所以系统会无法再定义和使用相同的游标名,如果是直接简单的把它用close关掉也不行。
有没有高手教我怎么删除这个游呀?在线等待到8点左右,经测试成功马上给分。
问题点数:0、回复次数:19Top
1 楼klbt(快乐白兔)回复于 2003-07-04 20:12:06 得分 0
贴出代码吧。
不提倡使用游标,建议使用数据窗口。Top
2 楼bapi(扒皮)回复于 2003-07-04 20:49:57 得分 0
在PB中,DataStore是游标的最佳替代者,易用性远超游标,而且DataStore本身还拥有众多的方法,游标我只在后台使用,前台基本不用,建议你换成DataStoreTop
3 楼fengzeng(风之子)回复于 2003-07-04 20:54:53 得分 0
建议尽量避免在前台使用游标,要么用存储过程,要么换成DataStore,这样执行效率要快的多!Top
4 楼sun992(大不了)回复于 2003-07-04 20:57:27 得分 0
那位哥哥贴出一例来呀我就是用游的了Top
5 楼cyactiveboy((冷酷有情))回复于 2003-07-04 21:52:15 得分 0
destory 游标名 试试吧
Top
6 楼brightstar(反恐精英)回复于 2003-07-05 08:28:56 得分 0
客户端游标使用其一是速度慢,其二是不方便(需要定义大量的变量),其三是异常处理比较困难,比如受其他事务和回滚的影响。
建议换DATASTORE,还可以把复杂的SQL封在DATAWINDOW对象里了。
每大循环一次DESTORY一次游标,下次循环开始的时候在创建游标,不用改名字。Top
7 楼Awang_126(王小虎)回复于 2003-07-05 08:43:42 得分 0
同意楼上的说法Top
8 楼pangxcai(阿才)回复于 2003-07-05 09:13:37 得分 0
说法:游标、存储过程、数据存储在处理相应的问题时都有很好用处。只是各自的优点不同而已,在试具体情况可以灵活应用,我开始在处理一些问题时应用游标、动态游标很顺手,在一些小的应用程序中可以暂不考虑效率问题,准确正确的处理问题才是根本了,数据存储我也经常使用,也不错,是数据窗口的完美替代者,但它是隐性的,对于存储过程用的不多了,它主要是应用于比较特殊的地方,需要对数据库和应用有很好的把握才可以使用了。处理问题的方法和思路很多,灵活一点。Top
9 楼quqiujie(紫炎)回复于 2003-07-05 09:40:33 得分 0
强烈建议在前台还是不要使用游标,会大大影响执行得效率!
非得使用游标的话,你可以每次循环DESTORY一次游标,下次循环开始的时候再创建游标
Top
10 楼thinkinger(只剩浪漫)回复于 2003-07-05 09:49:12 得分 0
实际上PB中是没有destroy游标这样的语句的,只能close cursor。
上面兄弟用数据存储对象的方法很好啊,楼主应该采纳!Top
11 楼aiaiok(小东子~我不入地欲,谁入地域?)回复于 2003-07-07 09:14:35 得分 0
嗯谢谢大家的意见,至于上面所说了DESTORY这个语句我试过了,不能运行,应该和楼上说的一样,PB游标中应该没有这个语句。那能不能请大家给出一个DATASTORE的例子呀,能有两个表关联,每个表取两、三个字段就行了。
请尽量写得详细些,谢谢了!!!Top
12 楼tchatcha(沧桑,孤独,浪漫,但执着!)回复于 2003-07-07 09:16:14 得分 0
贴出代码Top
13 楼tchatcha(沧桑,孤独,浪漫,但执着!)回复于 2003-07-07 09:19:39 得分 0
DATASTORE的例子
DATASTORE ldst_try1
long ll_count,i
ldst_try1 = create DATASTORE
ldst_try1.dataobject = 'd_try1'//建一个数据窗口对象
ldst_try1.settransobject(sqlca)
ldst_try1.retrieve()
ll_count =ldst_try1.rowcount()
for i =1 to ll_count()
中间自己写,与数据窗口控件一样
nextTop
14 楼aiaiok(小东子~我不入地欲,谁入地域?)回复于 2003-07-07 09:36:37 得分 0
那如果我的数据窗口对象中的列是动态的,也就是说我的窗口对象也是动态生成的,这个动态生成数据窗口对象的方法是什么啊?生成后,的相关语句要怎么写啊?麻烦你啦大哥。Top
15 楼chengjian(程剑)回复于 2003-07-08 14:09:43 得分 0
查询以下两个函数:
SQLCA.SyntaxFromSQL()
DW.Create()Top
16 楼dada1979(达达)回复于 2003-07-09 09:29:56 得分 0
先关闭游标,在销毁游标
CLOSE cursorname;
DEALLOCATE cursorname;Top
17 楼baoqiangwang(我是一只小小鸟)回复于 2003-07-11 09:11:38 得分 0
我建议你不要用油标
做一个存储过程即datastore
先把数据检索到datastore中然后
for i=1 to datastore.rowcount()
取值到相应的地方去
next
Top
18 楼wooaoo(永远不放弃)回复于 2003-07-12 18:31:34 得分 0
我也在for循环里使用过,好想没什么问题阿
贴出代码看看Top
19 楼txchen(上上签)回复于 2003-07-12 20:38:28 得分 0
最好不要用游标,PB的数据窗口不是很方便吗?Top



