台灣最大程式設計社群網站
線上人數
190
 
會員總數:246268
討論主題:189809
歡迎您免費加入會員
討論區列表 >> ASP >> 如何回傳Recordset
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何回傳Recordset
價值 : 20 QP  點閱數:1187 回應數:7
樓主

α
初學者
194 129
1248 178
發送站內信

請問我要如何在Function回傳Recordset,及如何使用?
我有一個Function如下

調用該方法的方式為

但執行時出現
Microsoft VBScript 執行階段錯誤 錯誤 '800a01a8'
此處需要物件 (

搜尋相關Tags的文章: [ 回傳值 ] , [ Recordset ] ,
本篇文章發表於2014-02-05 16:18
1樓
回應

香帥
檢舉此回應
請將兩個合併,不要用function
因第8行
Set Rs = Nothing
Rs 已經清空該物件已經成Nothing狀態
合併後程式碼如下

改這樣再試看看
本篇文章回覆於2014-02-05 17:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

α
檢舉此回應
謝謝香帥,我知道因為Rs被清空導致的錯誤了。
但是能不能不合併兩個Function,
因為這樣在每一頁(或每個存取動作)時變成要寫一次
Set DataConn = Server.CreateObject("ADODB.Connection")
DataConn.Open Application("DataSource")
Set Rs = Server.CreateObject("ADODB.RecordSet")
...

感覺上不太好用,有沒有什麼方法可以修正?
本篇文章回覆於2014-02-06 16:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

老頑童
捐贈 VP 給 老頑童 檢舉此回應
把Function堛7, 8, 9行拿掉,不做Close等動作應該就可以了

但,由於沒做Close動作,無法保證系統會不會自動釋放資料庫連線

若未釋放,時間久了有可能會出現類似"資料庫被獨佔開啟"之類的錯誤
本篇文章回覆於2014-02-07 10:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

香帥
檢舉此回應
若要用函數,請改為以下程式碼

測試網址在
http://ap.a168a.com/blueshop/recordset_func/rsfun.asp
本篇文章回覆於2014-02-07 19:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
最有價值解答

香帥
檢舉此回應
剛看您1樓的程式碼,DataConn也忘了關掉,因此修正
3樓,藉由byref傳出來關掉,這樣更正確
程式碼如下

測試網址在
http://ap.a168a.com/blueshop/recordset_func/rsfun4ok.asp
本篇文章回覆於2014-02-07 20:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

香帥
檢舉此回應
更正5樓文字
修正3樓改為修正4樓
本篇文章回覆於2014-02-07 20:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

α
檢舉此回應
謝謝香帥、老頑童
這樣的Function看起來好像和直接寫差不多,那我就只能直接寫,不然就真的只能讓資料庫自行close了。
本篇文章回覆於2014-02-10 13:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.