数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Excel 2000访问远程数据的四种方法

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

     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声明和常量的定义。



相关文章

相关软件