記錄集的基本操作講解到此結(jié)束,下面再講些可能不太常用的或者屬性。 第一個(gè)方法:GetString(字符串類型,想獲取的行數(shù),字段分隔符,記錄分隔符,空值表達(dá)式) 最后一個(gè)參數(shù)沒(méi)仔細(xì)研究過(guò)。有時(shí)候,我們需要把所有符合條件的記錄合并成一個(gè)文本字符串,這時(shí)候,這個(gè)函數(shù)就派上用場(chǎng)了: - Sub GetStr1()
- Dim rst As New ADODB.Recordset
- Dim s As String
- rst.Open "select 企業(yè)代碼 from myTable2 where 違規(guī)月份='9月'", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
- s = rst.GetString(adClipString, , , ",")
- Debug.Print "9月違規(guī)的企業(yè)分別是:" & Left(s, Len(s) - 1)
- End Sub
復(fù)制代碼改成循環(huán)語(yǔ)句則是這樣:
- Sub GetStr2()
- Dim rst As New ADODB.Recordset
- Dim s As String
- rst.Open "select 企業(yè)代碼 from myTable2 where 違規(guī)月份='9月'", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
- Do Until rst.EOF
- s = s & "," & rst(0)
- rst.MoveNext
- Loop
- Debug.Print "9月違規(guī)的企業(yè)如下:" & Right(s, Len(s) - 1)
- End Sub
復(fù)制代碼 相比之下,孰優(yōu)孰劣自不待言!(dāng)然,更復(fù)雜的寫法是用GetRows方法: - Sub GetStr3()
- Dim rst As New ADODB.Recordset
- Dim s()
- Dim i As Long, j As Long
- Dim k As String
- rst.Open "select * from myTable2 where 服務(wù)代碼='10669967'", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
- s = rst.GetRows()
- For i = 0 To UBound(s, 2)’ UBound(s, 2)
- For j = 0 To UBound(s, 1)
- k = k & ":" & s(j, i)
- Next
- Next
- Debug.Print k
- End Sub
復(fù)制代碼
這是因?yàn)镚etRows返回的是一個(gè)二維數(shù)組。二維數(shù)組?這是神馬。俊烙(jì)有人會(huì)問(wèn)了。這里先簡(jiǎn)單普及下吧,有時(shí)間再發(fā)一些掃盲貼: 數(shù)組下限是默認(rèn)從0開始的。二維常數(shù)數(shù)組,通常是像下面這樣寫的: - Sub test()
- Dim arr(1, 2)’定義一個(gè)2列×3行的數(shù)組。如果希望從1開始,則改為:arr(1 to 2,1 to 3)
- arr(0, 0) = "1"
- arr(0, 1) = "2"
- arr(0, 2) = "3"
- arr(1, 0) = "4"
- arr(1, 1) = "5"
- arr(1, 2) = "6"
- Debug.Print “行數(shù)上限是:” & UBound(arr, 2) & ”列數(shù)下限是:” & LBound(arr,1)
- ‘最后一個(gè)參數(shù)表示的是維度。
- End Sub
復(fù)制代碼當(dāng)然,還有三維、四維數(shù)組等等,例如arr(0 to 1, 2 to 4, 3 to 5),但在Access里應(yīng)用不太廣泛。數(shù)組普及至此結(jié)束,下面回來(lái)看看GetRows的參數(shù): 第一個(gè)參數(shù):需要獲取的行數(shù),默認(rèn)為全部行數(shù)。 第二個(gè)參數(shù):起始行標(biāo), 第三個(gè)參數(shù):列標(biāo)。 第二、三個(gè)參數(shù)下標(biāo)均從0開始,可以理解嗎? 最后,我們來(lái)點(diǎn)更有意思的:保存記錄集和讀取本地記錄集文件。先貼代碼: - Sub SaveRecord()
- Dim rst As New ADODB.Recordset
- rst.Open "select * from mytable where 違規(guī)月份='1月'", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdText
- rst.Save "E:\myReordset.xml", adPersistXML
- rst.Close
- Set rst = Nothing
- End Sub
復(fù)制代碼就這么幾句,一個(gè)記錄集就以XML格式保存在E盤了。XML比較直觀,用記事本或者IE瀏覽器就能打開。是不是覺(jué)得安全性太低?,那我們改為ADTG格式試試: - rst.Save "E:\myReordset.adtg", adPersistADTG
復(fù)制代碼還能用記事本打開嗎?要不,看看Access能不能導(dǎo)入?好像也沒(méi)有這個(gè)格式…是不是有種鎖門準(zhǔn)備出去時(shí)才發(fā)現(xiàn)鑰匙落在房間里面的感覺(jué)呢?不過(guò)這次我們不用請(qǐng)鎖匠,用ADO來(lái)讀取就可以了。 - Sub ReadRecord()
- Dim rst As New ADODB.Recordset
- rst.Open "E:\myReordset.ADTG", , adOpenKeyset, adLockOptimistic, adCmdText
- Do Until rst.EOF
- Debug.Print rst(3)
- rst.MoveNext
- Loop
- End Sub
復(fù)制代碼跟前面比較,發(fā)現(xiàn)什么了嗎? 保存記錄集時(shí)仍需數(shù)據(jù)連接參數(shù),但讀取時(shí)卻不再需要了,這是最大的不同。另外,最后一個(gè)參數(shù)為可選參數(shù),可填可不填。 當(dāng)然,Recordset里還有很多有趣的屬性,但在Access里不是很常用,這里便稍稍提一下,有興趣的版友可以自行研究一下。 1、用AbsolutePosition屬性用于顯示當(dāng)前記錄的光標(biāo)位置,請(qǐng)參考盜夢(mèng)的實(shí)例。 2、用PageSize和PageCount屬性來(lái)分頁(yè),這常常應(yīng)用于網(wǎng)頁(yè)中。由于Access缺少Table類控件,我也不建議這樣做,不過(guò)還是做了個(gè)例子供大家參考。 3、用Filter屬性來(lái)篩選記錄集的一個(gè)子集。這個(gè)也應(yīng)用很少,因?yàn)檫@個(gè)子集既然可以能夠通過(guò)條件來(lái)篩選,那么,何不在開始時(shí)就設(shè)置條件呢? ADO講解到此暫告一個(gè)段落,后面如果不太忙的話,或許會(huì)再談?wù)劻魑募?/font>stream)。
【新手入門】之一:If分支語(yǔ)句
【新手入門】之二:分支語(yǔ)句總結(jié)
【新手入門】之三:循環(huán)語(yǔ)句For
【新手入門】之四:循環(huán)語(yǔ)句Do和死循環(huán)
【新手入門】之五:公共變量與傳址過(guò)程、傳值過(guò)程
【新手入門】之六:“悲歡離合總無(wú)情”——淺談Split和Join
【新手入門】之七:嵌套與并列——再談If流程問(wèn)題
【新手入門】之八:“連就連”——淺談“&”和“+”連接符的區(qū)別
【新手入門】之九:從百錢百雞談起——淺談“規(guī)劃求解”兼答lingjiang問(wèn)
【新手入門】之十:書到用時(shí)方恨少——自定義菜單(Access 2003)的制作
【新手入門】之十一:淺談ADO之序言
【新手入門】之十二:淺談ADO之Connection
【新手入門】之十三:淺談ADO之Conmmand(上)
【新手入門】之十四:淺談ADO之Command(下)
【新手入門】之十五:淺談ADO之Recordset(上)
【新手入門】之十六:淺談ADO之Recordset(下)
【新手入門】之十七:淺談列表框的使用
【新手入門】之十八:雙擊列表框修改數(shù)據(jù)
【新手入門】之十九:從“書與女友恕不外借”談起——淺談“Bookmark”的使用
【新手入門】之二十:“書與書簽”——bookmark屬性答疑
【新手入門】之二十一:記錄集的“凌遲”——逐條導(dǎo)出記錄集
【新手進(jìn)階】之一:基礎(chǔ)算法(一)
【新手進(jìn)階】之二:基礎(chǔ)算法(二)
【新手進(jìn)階】之三:基礎(chǔ)算法(三)
【新手進(jìn)階】之四:基礎(chǔ)算法(四)
【新手進(jìn)階】之五:排序搜索(一)
【新手進(jìn)階】之六:排序搜索(二)
【新手進(jìn)階】之七:遞歸算法
【新手進(jìn)階】之八:冒泡排序
【新手進(jìn)階】之九:淺談不綁定數(shù)據(jù)源操作記錄
【新手進(jìn)階】之十:工作日的計(jì)算
【新手進(jìn)階】之十一:“庖丁解!焙汀凹o(jì)昌學(xué)射”——淺談表格式文本數(shù)據(jù)的導(dǎo)入
【新手進(jìn)階】之十二:從四腳騰空的奔馬談起——原來(lái)界面可以這樣設(shè)計(jì)
【新手進(jìn)階】之十三:Outlook風(fēng)格導(dǎo)航界面
【新手進(jìn)階】之十四:倉(cāng)庫(kù)管理系統(tǒng)
|