Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

返回列表 發(fā)新帖
查看: 9529|回復(fù): 9
打印 上一主題 下一主題

[ADO/DAO] ADO調(diào)用存儲(chǔ)過(guò)程之后 RecordCount=-1 解決辦法

[復(fù)制鏈接]

點(diǎn)擊這里給我發(fā)消息

跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2014-11-12 13:22:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 盜夢(mèng) 于 2014-11-12 14:12 編輯

問(wèn)題描述:
       今天 roych斑竹 發(fā)了一些有關(guān)ADO的貼。其中有用Command調(diào)用存儲(chǔ)過(guò)程的示例。
我嘗試了一下?梢苑祷赜涗浖。
       不過(guò),這個(gè)記錄集有些不一樣:RecordCount=-1。而且使用rs.MoveLast方法也會(huì)報(bào)錯(cuò)。好像是沒(méi)有游標(biāo)導(dǎo)致的。
       我再把這個(gè)記錄集賦給一個(gè)子窗體,就報(bào)錯(cuò)了。
      

解決方法:
       再通過(guò)Command對(duì)象打開(kāi)一次記錄集即可。        
  1. Dim rs As New ADODB.Recordset
  2. Dim Cmd As New ADODB.Command
  3.         
  4. Cmd.ActiveConnection = Conn '設(shè)置連接
  5. Cmd.CommandText = "execute 存儲(chǔ)過(guò)程名 '參數(shù)1','參數(shù)2'"

  6. 'Set rs = Cmd.Execute  '此操作,不能獲取記錄集的RecordCount的值,永遠(yuǎn)只能返回-1
  7. '方法二:用Cmd打開(kāi)記錄集
  8. Cmd.Execute
  9. rs.Open Cmd, , adOpenKeyset, adOpenKeyset    '此方法可以獲取 RecordCount
復(fù)制代碼

        這樣處理之后,可以返回RecordCount,也可以將記錄集賦給子窗體
        PS:這里也引出一個(gè)東西。我們打開(kāi)記錄集Open方法,還可以通過(guò)Command對(duì)象打開(kāi)

注:roych斑竹的貼:【新手進(jìn)階】之十八:淺談ADO之Command(下)
       http://m.mzhfr.cn/thread-119044-1-1.html


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x

評(píng)分

參與人數(shù) 1經(jīng)驗(yàn) +12 收起 理由
tmtony + 12

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2014-11-12 13:56:35 | 只看該作者
謝謝關(guān)注,當(dāng)時(shí)只測(cè)試了單個(gè)數(shù)值條件的存儲(chǔ)過(guò)程。誠(chéng)如你所說(shuō),確實(shí)不能使用RecordCount屬性。不打開(kāi)記錄集的時(shí)候,我們還是可以用MoveNext方法,以及EOF屬性來(lái)執(zhí)行循環(huán)的。
  1. Sub showpro()
  2. Dim rst As New ADODB.Recordset
  3. Dim cmd As New ADODB.Command
  4. cmd.ActiveConnection = CurrentProject.Connection
  5. cmd.CommandText = "execute mypro 1"
  6. Set rst = cmd.Execute
  7. Do Until rst.EOF
  8. Debug.Print rst(1)
  9.     rst.MoveNext
  10. Loop
  11. End Sub
復(fù)制代碼
3#
發(fā)表于 2014-11-12 14:00:59 來(lái)自手機(jī) | 只看該作者
想問(wèn)一下樓主,這個(gè)測(cè)試是怎么做,在哪里做?需要在窗體建立command按鍵然后在里面寫(xiě)代碼,是這個(gè)過(guò)程嗎?

點(diǎn)擊這里給我發(fā)消息

4#
 樓主| 發(fā)表于 2014-11-12 14:10:37 | 只看該作者
cfedf 發(fā)表于 2014-11-12 14:00
想問(wèn)一下樓主,這個(gè)測(cè)試是怎么做,在哪里做?需要在窗體建立command按鍵然后在里面寫(xiě)代碼,是這個(gè)過(guò)程嗎?
...

除了弄按鈕,還需要在SQL數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)存儲(chǔ)過(guò)程以供測(cè)試

點(diǎn)擊這里給我發(fā)消息

5#
 樓主| 發(fā)表于 2014-11-12 14:11:09 | 只看該作者
roych 發(fā)表于 2014-11-12 13:56
謝謝關(guān)注,當(dāng)時(shí)只測(cè)試了單個(gè)數(shù)值條件的存儲(chǔ)過(guò)程。誠(chéng)如你所說(shuō),確實(shí)不能使用RecordCount屬性。不打開(kāi)記錄集 ...

主要是想把記錄集賦給子窗體,才會(huì)發(fā)現(xiàn)這個(gè)錯(cuò)誤
6#
發(fā)表于 2014-11-12 14:18:32 | 只看該作者
盜夢(mèng) 發(fā)表于 2014-11-12 14:11
主要是想把記錄集賦給子窗體,才會(huì)發(fā)現(xiàn)這個(gè)錯(cuò)誤

當(dāng)時(shí)以access來(lái)測(cè)試,而且只是用單值,沒(méi)考慮那么周全。不管怎么說(shuō),發(fā)現(xiàn)問(wèn)題,一起研究下對(duì)大家都是有幫助的。
7#
發(fā)表于 2014-11-12 14:20:28 | 只看該作者
cfedf 發(fā)表于 2014-11-12 14:00
想問(wèn)一下樓主,這個(gè)測(cè)試是怎么做,在哪里做?需要在窗體建立command按鍵然后在里面寫(xiě)代碼,是這個(gè)過(guò)程嗎?
...

也可以在模塊里建立,然后Call它。

點(diǎn)擊這里給我發(fā)消息

8#
 樓主| 發(fā)表于 2014-11-12 14:22:13 | 只看該作者
roych 發(fā)表于 2014-11-12 14:18
當(dāng)時(shí)以access來(lái)測(cè)試,而且只是用單值,沒(méi)考慮那么周全。不管怎么說(shuō),發(fā)現(xiàn)問(wèn)題,一起研究下對(duì)大家都是 ...

研究了一個(gè)上午。應(yīng)該是游標(biāo)的問(wèn)題

點(diǎn)擊這里給我發(fā)消息

9#
發(fā)表于 2014-11-12 15:09:52 | 只看該作者
你定義連接的游標(biāo)試試

呵呵

點(diǎn)擊這里給我發(fā)消息

10#
 樓主| 發(fā)表于 2014-11-12 15:24:05 | 只看該作者
zhuyiwen 發(fā)表于 2014-11-12 15:09
你定義連接的游標(biāo)試試

呵呵

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 08:26 , Processed in 0.124041 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表