同事在問pb9能不能做到call sp時,畫面的progress bar也給跑一下,不然還以為當掉了呢.這個問題,回想起來,在pb6時,就好像沒有sp呼叫時asynchronous的功能,於是就在畫面上show個正在處理中的static text,只不過整個handle都被帶走了,user只能等等等,等sp結束傳回值來.
也好長一段時間沒看pb,我的knowledeg都只停留在pb6,所以花了一些時間在sybase forums上找了一下,發現好像可以做,回頭再看了一下pb help,照著上面的step做了一遍,就是失敗加失敗.惱了一會後,拜google之賜,看到了一個可能的解法,再回去測了一下,嘿嘿,竟然給做到了,看來pb要加把勁了,寫了一個不work的sample help.
我簡化後的步驟如下,
1. 先建二個non visual object,分別為nvo_callback 及nvo_send
2.宣告nvo_send為instance variable, 在這只要先宣告一個就好,不要參考help上的做法
nvo_send invo_send
3. 在原本呼叫sp的event或function中取取得nvo_send reference,
SharedObjectRegister( "nvo_send", "myshare" )
SharedObjectGet( "myshare", invo_send )
4. 在 nvo_send 中自訂一個user evnet, 例如 ue_send ,帶不帶參數都可以,看需要囉,要注意,這里只能帶non visual的型態參數.
5. 在nvo_callback自訂一個user event, 例ue_callback, 將sp的呼叫寫到這個event中
記得,最好在這個event中,自訂一個sp專屬的transaction object,
Transaction ltr_callback
ltr_callback = CREATE Transaction
DECLARE proc_name PROCEDURE FOR sp_proceduer USING ltr_callback;
Execute proc_name ;
FETCH proc_name INTO :ll_return ;
CLOSE proc_name;
.....
6. 在nvo_send ue_send event 中,
nvo_callback lnvo_calback
lnvo_calback = CREATE nvo_callback
lnvo_calback.Post Event ue_callback ( as_sender, as_logtime )
用trigger event或post event 好像都可
結論是, step 3的二個動作,一旦取得了reference後, 就可以做到非同步的呼叫了,
和help sample不同的是, 要在ue_send 才宣告nvo_callback, 這是在newsgroup找答案時得到的靈感.
星期日, 5月 14, 2006
訂閱:
張貼留言 (Atom)
實在不會也不能做人
在親人面前、在同事面前、在客戶面前,八面玲瓏,說得體話,做得體事對我來說真的好難。 最近有種被打趴的感覺 ,因為身心靈都生病了。 11月初確診出關咳了二個多月都跨年咳了,怎麼我還沒咳血? 在公司有同事,在家有親戚,在工作地有客戶,好想𥁞情的咳,但礙於異樣的眼光(多半是自已的疑神...
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQhhVMnvEI3qWN_cTxPtXgAzgkP2JR-3iJtgqmh-MCY51tSHJeyJvQEKxjJ9VOB1QzCK3qRsahdvZYVv10rIgqHJ2mzsSnnq8P-1bQhdkkgYYQ-ZZ_LGa8UeqNdBtkeqGaRChWQ0pqzkFKR8QR4BU4UYWKg_-CE0_HAYuRXB1gdZKia4g-RL0h/w300-h400/LINE_ALBUM_2023816%E7%B4%A0%E5%8F%AF%E6%B3%B0%E6%AD%B7%E5%8F%B2%E5%85%AC%E5%9C%92_230909_2.jpg)
-
My classmate Chung Wen loves it very very much. We lead two different lives Just like two lines that never cross And here we are together St...
-
原本期待iphone升上ios4.3後就可以分享無線訊號給ipad 試了一下,才發現二個裝置都要同時升上ios4.3才能完成這個願望. 因為ipad是wifi版本,而且又JB了.也不太可能昇級. 直到看到這篇討論 在你的 iPad/iPod Touch上安装 iTether...
-
我的妹妹,小唄,剛過了三歲的生日(2002/4/28),那天我和余珊分別買了玩具,零食,牛肉,青菜外加二瓶ICE為她慶生,她...HIGH的咧 把她的碗裝滿了牛肉,花椰菜,餅乾和澳洲來的羊肉捲,準備讓她吃個飽.在我和余珊還有這個PARTY唯一邀請的小朋友-嘟嘟,我們三個 一...
2 則留言:
為何不將Execute proc_name放在nvo_send.ue_send()
直接在主執行緒中 nvo_send.post ue_send() ?
張貼留言