Excel 2000訪問遠端資料的四種方法

來源:互聯網
上載者:User
excel|訪問|資料      Excel 2000作為一個試算表軟體,它不僅有強大的資料處理能力,而且它的報表功能也是十分強大。因而常常用Excel 2000去調用Access、SQL Server、Oracle、DB2等資料庫軟體建立的大型資料庫的內容。使用者可以在工作表中對這些資料進行篩選、排序、查詢、編輯和列印報表,十分方便,這也是大多數人都熟悉的。但如何去調用這資料呢?本人在這裡提供4種方法。
    下面四種方法必須要先建立一個資料來源,我們以SQL Server7.0內的樣本資料庫pubs為例。在控制台/ODBC資料來源/系統DSN,單擊增加按紐,選取SQL Server驅動程式,建立一個與pubs資料庫連接的叫pubs名稱資料來源。
           方法一:
    在Excel 2000中,選擇 資料/擷取外部資料/建立資料庫查詢,然後按嚮導的提示一步一步做,最後將資料返回Excel 2000中就行了
    這種方法是大家常用的,也是最方便的。但這種方法只能對遠端資料進行查詢,不能對遠端資料進行增加和修改。
    方法二:
    這種方法需要VBA編程(方法三、方法四也一樣),在Visual Basic編程中,我們經常用ADO來訪問資料。ADO是Microsoft提供的針對各種各樣資料來源的新型進階編程介面。它支援大多資料庫操作,在Excel 2000中應用ADO來訪問資料,是十分理想的方法。看看下面一個執行個體:
    Sub opendb()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    cn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=pubs"
    rs.Open "select * from authors", cn
     Range("a1").CopyFromRecordset rs
     Rs.close
    cn.Close
    End Sub
    宏中第一、二句定義了一個ADO 的Connection對象和一個Recordset對象,第三、四句建立了一個ADO 的Connection對象和一個Recordset對象。第五句串連到前面我們建立的資料來源pubs資料庫。第六句是ADO 的Recordset對象執行一條SQL裡select語句。在這也可以執行insert,update等等SQL語句的。第七句是將rs裡的記錄返回當前表裡。第八、九句是關閉串連。運行前要在Excel 2000工具/引用中引用ADO的庫檔案。
           在Excel 2000中應用ADO對象,不僅可以對資料庫進行查詢,而且可以作增加,修改資料庫的記錄,甚至可以調用SQL SERVER7.0的預存程序,加強Excel 2000對資料庫處理能力。
    方法三:
    Excel 2000的功能是十分強大的,它內建了一個ODBC載入宏,我們在Excel 2000中引用這個宏檔案xlodbc.xla,就可以通過下面的方法去訪問我們建立的資料來源了
    Sub opendb()
        Dim id as integer
        id = SQLOpen(“DSN=pubs”)
        SQLExecQuery id, “select * from authors”
        Set output = Worksheets("Sheet1").Range("A1")
        SQLRetrieve id, output, , ,
        True SQLClose id       
    End sub
    第二句是調用xlodbc.xla宏中的SQLOpen函數建立一個對資料庫pubs串連,第三句是SQLExecQuery函數執行了一條select語句,id是由 SQLOpen 函數返回的唯一串連標識,第四句是SQLRetrieve函數將SQLExecQuery函數執行的查詢的結果返回到Excel 2000中。
           這種編程方法可以說來的容易,用得方便。也是一種好的訪問遠端資料方法。
    方法四:
    這種方法是使用API方法,下面是一個執行個體
        '分配環境控制代碼
    res = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HENV, hEnv) 
    '設定環境屬性
        res = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3, 0)
        '分配資料庫連接控制代碼
        res = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, hSvr)
    '串連到資料來源
    sConnect=“DSN=pubs;DATABASE=pubs“
    res=SQLDriverConnect(hSvr,ByVal,0&,sConnect,Len(sConnect),sConnOut, Len(sConnOut), _ nConnOutLen, 0)
    sSql =“select * from authors“
    res = SQLExecDirect(hSel, sSql, Len(sSql))
    '將記錄返回當前表裡
    res=SQLNumResultCols(hSel, Nc)
    Do While (SQLFetch(hSel) <> SQL_NO_DATA_FOUND)
    J=j+1
    FOR I=1 TO Nc
       res = SQLGetData(hSel, I, SQL_C_CHAR, tmp, 512, pl)
       Cells(j, i) =tmp
    Next I
    Loop
    '釋放資料庫連接控制代碼
          res = SQLAllocHandle(SQL_HANDLE_STMT, hSvr, hSel)
    '釋放資料庫連接控制代碼
          ret = SQLFreeHandle(SQL_HANDLE_ENV, hEnv)
    這種方法比較複雜,調試也比較困難,但運行速度快,在進行大量查詢資料和自己在API調用方面比較熟時,可以用這個方法。在用上面的執行個體時,要做API聲明和常量的定義。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.