国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Excel 2000訪問遠程數據的四種方法

2024-07-21 02:06:49
字體:
來源:轉載
供稿:網友
     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聲明和常量的定義。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张家川| 云霄县| 孟津县| 桦甸市| 清丰县| 清徐县| 昌乐县| 迭部县| 海南省| 黑水县| 永仁县| 南华县| 民权县| 许昌县| 兰坪| 同江市| 莆田市| 屏山县| 体育| 乃东县| 梅州市| 鲁山县| 甘德县| 宁德市| 芒康县| 奉化市| 武宣县| 太原市| 响水县| 庆元县| 广州市| 巴彦淖尔市| 柳林县| 乡宁县| 府谷县| 安达市| 新干县| 开平市| 荣成市| 炎陵县| 黄大仙区|