乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      VBA數(shù)據(jù)庫解決方案第15講:利用VBA代碼對(duì)Recordset集合中的單個(gè)數(shù)據(jù)精確處理

       xfzxlgs 2022-06-20 發(fā)布于江西

      大家好,今天給繼續(xù)講解VBA數(shù)據(jù)庫解決方案的第15講:Recordset集合的單個(gè)數(shù)據(jù)精確處理,在前幾講中,我們講了對(duì)于Table的對(duì)象的添加和刪除。今天我們要講的內(nèi)容是Recordset集合的處理方案,這個(gè)處理和Table的處理是關(guān)系緊密的,在第10講中我們講了利用下面的語句實(shí)現(xiàn)Recordset集合內(nèi)容的可視化導(dǎo)出:Range("A2").CopyFromRecordsetrsADO,那么是否還有其他的辦法能精確的控制導(dǎo)出的內(nèi)容呢?

      比如我只需要其中幾個(gè)字段的記錄,該如何處理呢?這時(shí)我們需要對(duì)Recordset集合的詳細(xì)的數(shù)據(jù)處理了,也就是說要通過循環(huán)語句把每一個(gè)數(shù)據(jù)都要遍歷到。

       為了達(dá)到對(duì)Recordset集合數(shù)據(jù)的詳細(xì)處理,我們先看看記錄集的MoveFirs,MoveLast,MoveNext,MovePrevious系列的方法:

      1  MoveFirst方法

      作用是:將記錄指針移動(dòng)到記錄集中的第一條記錄。它以第一條記錄作為當(dāng)前記錄。

      注意:當(dāng)記錄集為空時(shí),請(qǐng)求MoveFirstMoveLast將產(chǎn)生一個(gè)錯(cuò)誤。

      2  MoveLast方法

      作用是:將記錄指針移動(dòng)到記錄集中的最后一條記錄。它以最后一條記錄作為當(dāng)前記錄。

      注意:當(dāng)記錄集為空時(shí),請(qǐng)求MoveFirstMoveLast將產(chǎn)生一個(gè)錯(cuò)誤。

      注意:如果記錄集對(duì)象不支持書簽或不能向后移動(dòng)指針,那么將產(chǎn)生錯(cuò)誤。

      3  MoveNext方法

      作用是:將記錄指針移動(dòng)到記錄集中的下一條記錄。它以下一條記錄作為當(dāng)前記錄。

      注意:當(dāng)當(dāng)前記錄指針位于最后一條記錄時(shí),如果你請(qǐng)求這個(gè)方法,將產(chǎn)生錯(cuò)誤。

      4  MovePrevious方法

      作用是:將記錄指針移動(dòng)到記錄集中的上一條記錄。它以上一條記錄作為當(dāng)前記錄。

      注意:如果記錄集對(duì)象不支持書簽或不能向后移動(dòng)指針,那么將產(chǎn)生錯(cuò)誤。.

      注意:當(dāng)當(dāng)前記錄為記錄集中第一條記錄時(shí),如果你請(qǐng)求該方法,那么它將產(chǎn)生一個(gè)錯(cuò)誤。

      由此我們還要判斷記錄集是否為首位還要判斷,這時(shí)是通過般需要通過Recordset對(duì)象的EOF屬性先進(jìn)行判斷游標(biāo)是否到了記錄尾。當(dāng)游標(biāo)到了記錄尾時(shí),EOF屬性會(huì)被設(shè)置為True。

      同理可以通過Recordset對(duì)象的BOF屬性先進(jìn)行判斷游標(biāo)是否到了記錄首。當(dāng)游標(biāo)到了記錄首時(shí),BOF屬性會(huì)被設(shè)置為True。

      今日要講的代碼就是利用上面的方法達(dá)到精準(zhǔn)控制記錄集導(dǎo)出,如下面的數(shù)據(jù)庫的數(shù)據(jù),我們要導(dǎo)出部門為“一廠”的職工目錄,該如何做到呢?

      圖片

      代碼如下:

      Sub mynzRSCT()

        Dim cnADO, rsADO As Object

         Dim strPath, strSQL As String

         Dim i As Integer

         Set cnADO = CreateObject("ADODB.Connection")

         Set rsADO = CreateObject("ADODB.RecordSet")

         strPath = ThisWorkbook.Path & "\mydata2.accdb"

         cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="& strPath

         strSQL = "SELECT * FROM 員工信息 WHERE 部門='一廠'"

         rsADO.Open strSQL, cnADO, 1, 3

         For i = 0 To rsADO.Fields.Count - 1

             Sheets("Sheet1").Cells(1, i + 1) = rsADO.Fields(i).Name

         Next i

         For i = 1 To rsADO.RecordCount

         For j = 0 To rsADO.Fields.Count - 1

           Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)

         Next j

         rsADO.MoveNext

         Next i

         rsADO.Close

         cnADO.Close

         Set rsADO = Nothing

         Set cnADO = Nothing

      End Sub

      代碼截圖:

      圖片

      代碼解析:

      1  SetcnADO = CreateObject("ADODB.Connection")

         Set rsADO = CreateObject("ADODB.RecordSet")

         strPath = ThisWorkbook.Path & "\mydata2.accdb"

      cnADO.Open"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath

      上述代碼先建立ADO RS 對(duì)象并打開

      2  strSQL= "SELECT * FROM 員工信息 WHERE 部門='一廠'"

      rsADO.OpenstrSQL, cnADO, 1, 3

      上述語句,建立一個(gè)SQL語句并打開

      3 For i = 0 To rsADO.Fields.Count - 1

             Sheets("Sheet1").Cells(1, i + 1) = rsADO.Fields(i).Name

      Next i

      表頭計(jì)入

      4  Fori = 1 To rsADO.RecordCount

          For j = 0 To rsADO.Fields.Count - 1

            Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)

          Next j

          rsADO.MoveNext

      Next i

      數(shù)據(jù)內(nèi)容計(jì)入,這個(gè)是今日內(nèi)容的重點(diǎn),這種方法的操作數(shù)據(jù)是一個(gè)一個(gè)計(jì)入的。對(duì)于記錄集的指針轉(zhuǎn)到下一個(gè)記錄一定要用rsADO.MoveNext 移動(dòng)記錄。

      5  rsADO.Close

         cnADO.Close

         Set rsADO = Nothing

         Set cnADO = Nothing

      關(guān)閉連接,釋放內(nèi)存。

      看下面的輸出結(jié)果:

      圖片

      通過記錄集的精準(zhǔn)控制,可以完成具體到每個(gè)數(shù)據(jù)的判斷,應(yīng)用是非常靈活的,

      今日內(nèi)容回向:

      1 MoveFirs,MoveLast,MoveNextMovePrevious 方法的意義是否理解呢?

      2  如何實(shí)現(xiàn)記錄的精確控制?

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多