会员登录 - 用户注册 - 网站地图 Office中国(office-cn.net),专业Office论坛
当前位置:主页 > 技巧 > Excel技巧 > 编程 > 正文

在EXCEL2000中用直接从数据库取数据的方法二种

时间:2004-09-25 15:40 来源:本站原创 作者:tanjh 阅读:

一些EXCEL爱好者喜欢引用ADO或DAO库去访问数据库中的数据,这就需要EXCEL使用者具备一定的VBA常识与数据库基础。现与不喜欢编程的EXCEL高级用户分享两种不用编程从数据库取数的方法:

一、加载ODBC宏(OFFICE2000光盘有提供)后您就可以使用该函数了。语法及示例详参《OFFICE2000帮助文档》,全篇如下:

连接到外部数据源并运行工作表中的查询。然后,函数 SQL.REQUEST 以数组形式返回结果,而不必运行宏。如果该函数不存在,就必须安装 Microsoft Excel 的 QDBC 加载宏(XLODBC.XLA)。

语法

SQL.REQUEST(connection_string,output_ref,driver_prompt,query_text,col_names_logical)

Connection_string   提供信息,如数据源名称、用户标识和口令等。这些信息对于连接数据源的驱动程序是必需的,同时它们必须满足驱动程序的格式要求。下表给出用于 3 个不同驱动程序的 3 个连接串的示例。

驱动器 连接串
dBASE DSN=NWind;PWD=test
SQL Server DSN=MyServer;UID=dbayer; PWD=123;Database=Pubs
ORACLE DNS=My Oracle Data Source;DBQ=MYSER VER;UID=JohnS;PWD=Sesame

  • 在试图连接到数据源之前,必须定义在 connection_string 中使用的数据源名称(DSN)。

  • 可以以数组或字符串的形式输入 connection_string。但如果 connection_string 超过 250 个字符,必须按数组的形式输入。

  • 如果函数 SQL.REQUEST 不能使用 connection_string 访问数据源,则返回错误值 #N/A。

Output_ref   对用于存放完整的连接字符串的单元格的引用。如果在工作表中输入函数 SQL.REQUEST,可以忽略 output_ref。

  • 当需要函数 SQL.REQUEST 返回完整的连接串时,可以使用 output_ref(此种情况下,必须在宏表中输入函数 SQL.REQUEST)。

  • 如果省略 output_ref,函数 SQL.REQUEST 不能返回完整的连接串。

Driver_prompt   指定驱动程序对话框的显示时机以及可用的选项。可以使用下表中所描述的数字来描述 driver_prompt。如果省略 driver_prompt,函数 SQL.REQUEST 默认为 2 。

Driver_prompt 说明
1 一直显示驱动程序对话框。
2 只有在连接串和数据源说明提供的信息不够充分,以致不能完成连接时,才显示驱动程序对话框。所有对话框选项都可使用。
3 只有在连接串和数据源说明提供的信息不够充分,以致不能完成连接时,才显示驱动程序对话框。如果未指明对话框选项是必需的,这些选项是暗的,不能使用。
4 不显示对话框。如果连接不成功,则返回错误值。

Query_text   需要在数据源中执行的 SQL 语句。

  • 如果函数 SQL.REQUEST 不能在指定的数据源中执行 query_text,则返回错误值 #N/A 。

  • 可以将引用连接到 query_text 上来更新查询。在下面的例子中,每次 $A$3 改变,函数 SQL.REQUEST 使用新的数值来更新查询。

    "SELECT Name FROM Customers WHERE Balance > "&$A$3&"".

    Microsoft Excel 将串长度限制在 255 个字符内。如果 query_text 超过此长度,请在垂直单元格区域中输入查询并使用整个区域作为 query_text。所有单元格的值连接在一起,形成完整的 SQL 语句。

Column_names_logical   指明是否将列名作为结果的第一行返回。如果要将列名作为结果的第一行返回,请将该参数设置为 TRUE。如果不需要将列名返回,则用 FALSE。如果省略 column_names_logical,则函数 SQL.REQUEST 不返回列名。

返回值

  • 如果此函数完成了它的所有功能,则返回查询结果数组或受查询影响的行数。

  • 如果函数 SQL.REQUEST 不能使用 connection_string 访问数据源,则返回错误值 #N/A。

说明

  • 函数 SQL.REQUEST 可以以数组的形式输入。如果以数组形式输入函数 SQL.REQUEST,该函数将返回一个恰好填充选定区域的数组。

  • 如果单元格区域大于结果集,函数 SQL.REQUEST 向返回的数组添加空单元格,直至增加到所需要的大小。

  • 如果结果集大于以数组形式选定的输入区域,函数 SQL.REQUEST 返回整个数组。

  • 函数 SQL.REQUEST 参数的次序与 Visual Basic for Application 中函数 SQLRequest 的参数次序不同。

示例

假设需要对名为 DBASE4 的 DBASE 数据库进行查询。如果在单元格中输入下列公式,将会返回查询结果数组,其中第一行是列名:

SQL.REQUEST("DSN=NWind;DBQ=c:\msquery;FIL=dBASE4", c15, 2, 
"Select Custmr_ID, Due_Date from Orders WHERE order_Amt>100", TRUE)
二、用“数据”菜单上的“获取外部数据”-“新建数据库查询”向导获取数据库数据。
用该向导取得数据后,以后该工作表的数据以后会随数据动态更新(在不移动数据源文件的前提下)。
注意:请仔细设置外部数据表的属性,会有更多收获。
 

(责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价: