免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Excel VBA ADO SQL入門教程024:初識Recordset對象

……從來沒有想過對不對 我的眼中裝滿疲憊 面對自己總覺得好累……

1,嗯哼?

諸君好,又見面了。女生擁抱男生握手。

要不要先講個小笑話,活躍下氛圍?畢竟下面兩個段落都是僵硬的概念,乏味的很哩。

——不聽就算了。

打個響指,通過前面的章節(jié),我們已經(jīng)知道,查詢是SQL最頻繁也是最核心的語句;ADO對象與之相對應(yīng)的是記錄集的概念,所謂記錄集就是指從數(shù)據(jù)庫中檢索到的數(shù)據(jù)的集合,由記錄和字段兩個部分構(gòu)成。

通常有兩種方法創(chuàng)建查詢記錄集。

一種是我們前面講過的Connection對象的Execute方法。

Excel VBA ADO SQL入門教程022:Execute方法

另外一種就是我們今天要講的Recordset對象的Open方法。


2,一個例子

Recordset對象是ADO中最重要也是最常用的對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行操作的對象;功能強大,屬性、方法和事件眾多;不過……放輕松,事件我們基本用不上,屬性和方法經(jīng)常用到的也不多,且大都易于理解和操作。

下面演示如何使用VBA代碼引用Recordset對象,并創(chuàng)建一個記錄集。

假設(shè)有一張工作表,名為“數(shù)據(jù)表”,內(nèi)容如下圖所示:

現(xiàn)在需要在“查詢”表里查詢年齡大于18歲的人員明細(xì)。查詢結(jié)果如下:

示例代碼如下:

Sub CreateRecordset()
    Dim cnn As Object
    Dim rst As Object
    Dim strPath As String
    Dim strSQL As String
    Dim lngCount As Long
    Dim i As Integer
    Set cnn = CreateObject('ADODB.Connection')
    Set rst = CreateObject('ADODB.RecordSet')
    '----后期引用Recordset對象
    strPath = ThisWorkbook.FullName
    '----指定ADO連接的文件路徑(本工作簿)
    cnn.Open 'Provider=Microsoft.ACE.OLEDB.12.0;' _
        & 'Extended Properties=Excel 12.0;' _
        & 'Data Source=' & strPath
    strSQL = 'SELECT * FROM [數(shù)據(jù)表$] WHERE 年齡>18'
    '----SQL語句
    rst.Open strSQL, cnn, 1, 3
    '----使用Open方法建立記錄集
    Cells.ClearContents
    For i = 0 To rst.Fields.Count - 1
    '----遍歷讀取記錄集中的字段
        Cells(1, i 1) = rst.Fields(i).Name
    Next i
    Range('A2').CopyFromRecordset rst
    '----讀取記錄集中的記錄
    lngCount = rst.RecordCount
    '----記錄的數(shù)目
    MsgBox '共查詢到:' & lngCount & '條記錄。'
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
End Sub


3,Open方法

上述代碼首先使用Connection對象建立和代碼所在工作簿的連接,然后使用Recordset對象的Open方法創(chuàng)建查詢記錄集。

Open語法格式如下:

recordset.Open Source, ActiveConnection, CursorType, LockType, Options

示例語句如下:

rst.Open strSQL, cnn, 1, 3

參數(shù)Source是可選的,可以是Command對象、SQL語句、數(shù)據(jù)庫的表名等。對我們而言,通常就是SQL語句。

參數(shù)ActiveConnection是可選的,用于指定Connection對象變量名;字符串或包含ConnectionString的參數(shù)。對我們而言,通常也就是Connection對象。

參數(shù)CursorType是可選的,用于指定當(dāng)打開Recordset時提供者應(yīng)使用的游標(biāo)類型,其值可以是下表所列舉的常量之一。作為新手,固定使用AdOpenKeyset(值為1)即可。

參數(shù)LockType是可選的,用于確定提供者打開Recordset時應(yīng)該使用的鎖定類型,其值可以是下表所列舉的常量之一。如果需要對數(shù)據(jù)庫進(jìn)行修改、刪除、更新等操作,必須設(shè)定為AdLockOptimistic。作為新手,管他三七二十一,固定使用AdLockOptimistic(值為3)就好了。

參數(shù)Options是可選的,表示提供者如何計算Source參數(shù)(如果它代表的不是Command對象),或者從以前保存Recordset的文件中恢復(fù)Recordset。該參數(shù)可以是一個或多個CommandTypeEnum值或ExecuteOptionEnum值——這廝我們一般用不上,可以假裝生命中沒有它。

小貼士:

使用CreateObject函數(shù)后期綁定ADO類庫時,ADO對象的相關(guān)參數(shù)不能使用常量名稱,只能使用參數(shù)的值。例如,示例代碼中使用以下語句會造成程序運行錯誤。

rst.Open strSQL, cnn, AdOpenKeyset, AdLockOptimistic


4,F(xiàn)ields集合

上述代碼的以下部分將記錄集中的字段名寫入工作表。

For i = 0 To rst.Fields.Count - 1
    Cells(1, i 1) = rst.Fields(i).Name
Next i

rst.fields返回Recordset對象的Fields集合,該集合包含了和當(dāng)前記錄集有關(guān)的所有字段。

rst.Fields.Count返回字段的數(shù)量。

rst.Fields(0).Name表示記錄集的第1個字段的標(biāo)題名,也就是“編號”。

rst.Fields(0).Value表示記錄集第1個字段的當(dāng)前記錄,也就是100007……除了使用索引法,也可以使用rst.Fields('編號').Value來返回指定字段當(dāng)前的記錄。


5,RecordCount

rst.RecordCount返回Recordset對象中的記錄數(shù)目。通過它,我們可以判斷是否存在符合條件的查詢結(jié)果。

小貼士:

還記得嗎?在Connection的Execute那一節(jié),我們特別說明過,Execute方法返回的記錄集無法使用RecordCount屬性得到正確的結(jié)果,原因是……不記得了?那就倒帶重看吧。


6,CopyFromRecordset

以下代碼將記錄集中的記錄復(fù)制到工作表左上角為A2單元格的區(qū)域

Range('A2').CopyFromRecordset rst

CopyFromRecordset是Excel Range對象的方法,用于將記錄集中的記錄復(fù)制到單元格區(qū)域。我們之前的代碼常用它,但一直沒抓到機會詳細(xì)介紹,這兒一并說了。

其語法格式如下:

Range.CopyFromRecordset(Data,[MaxRows],[MaxColumns])

參數(shù)Data是必需的,表示復(fù)制到指定區(qū)域的Recordset對象。

參數(shù)MaxRows是可選的,表示復(fù)制到工作表的記錄個數(shù)上限。如果忽略該參數(shù),將復(fù)制所有記錄。比如,記錄集有10條記錄,我們只需要前5條,代碼如下:

Range('A2').CopyFromRecordset rst , 5

參數(shù)MaxColumns是可選的,表示復(fù)制到工作表的字段個數(shù)上限。如果忽略該參數(shù),將復(fù)制所有字段。

后面兩個可選的參數(shù),雖然有用,但實際用到的情況并不多,So——僅供了解先。

……

……

The End

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
第八講 從創(chuàng)建ADO對象,到打開記錄集
Visual C++ ADO數(shù)據(jù)庫編程入門
《Visual Basic 6.0項目教程(第3版)》項目8 創(chuàng)建數(shù)據(jù)庫應(yīng)用程序
他山之石——VBA數(shù)據(jù)庫操作
VBA|數(shù)據(jù)庫操作01:使用ADO訪問數(shù)據(jù)庫
VB和數(shù)據(jù)庫
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服