分享

Excel中如何调用SQL数据

 Dead n Gone 2010-12-01

通过参阅Excel帮助文档,我们可以发现一个很有用的外部函数SQL.REQUEST;http://office.microsoft.com/zh-cn/excel/HP052092672052.aspx?pid=CH062528302052(关于外部函数SQL.REQUEST的资料)
但是这个函数Excel不能直接调用,需要加载两个文件,XLODBC.XLA与XLODBC32.DLL。从Office2003的安装光盘找到XLODBC.XLA与XLODBC32.DLL两个文件复制到C:\Documents and Settings\Administrator\Application Data\Microsoft\AddIns文件夹中,(见图1),然后进入Excel文件中点工具菜单-加载宏-浏览-点击刚刚复制的文件-确定(宏安全等级为中)。(图2,3)另外,要注意的是要配置数据库,我最初没有配置好数据库,导致得不到想要的结果!在控制面板里面的数据源里面设置好你的系统DNS;(不明白的话,自己可以去查阅一些文档资料,或者看我的截图吧!)(图4)
现在外部环境已经构建好了,我们来看看SQL数据库
SQL服务器ip=192.168.1.1(这里加上装载自己数据库计算机的ip)(刚才配置数据源的IP)
用户名=sa
密码=1(这里加上自己数据库的密码)
数据库名字=test,(这里加上自己数据库的名字)
test.dbo.t_sal=数据库test中的一个表的名字(我查询的是t_sal表)
t_sal.salary=数据库test中表t_sal 的一个字段,即工资额(这个是我们要查询后返回的字段)
t_sal.id=数据库test中表t_sal的一个字段,即编码(我们要查询的就是这个字段,如这个是工号,我想查工号为2001的人工资,名字等资料)(图5)
假如我们在Excel单元格A3中输入编号要在c3得到工资,即在c3内输入如下公式:=SQL.REQUEST("DSN=192.168.1.1;UID=saWD=1;Database=test",,2,"SELECT t_sal.salary FROM test.dbo.t_sal
WHERE t_sal.id='"&A3&"'",FALSE)
假如我们在Excel单元格A3中输入编号要在b3得到姓名,即在b3内输入如下公式:=SQL.REQUEST("DSN=192.168.1.1;UID=saWD=1;Database=test",,2,"SELECT t_sal.name FROM test.dbo.t_sal
WHERE t_sal.id='"&A3&"'",FALSE)
……
……
依此类推,修改你要查询的字段,(图6)

 ERPSERVER供应商信息调用示例:拷贝设置好ODBC,添加ERPSERVER DSN

=SQL.REQUEST("DSN=ERPSERVER;UID=jserp;PWD=jserp;database=dberp3",,2,
"select gys_mc from gys where gys_gysid='"&B4&"'")


全文完……
图1:
 
图2:
 
图3:
 
 
图4:
 
图5:
 
图6:
 
图7:
 
 
 
 
 
SQL.REQUEST;http://office.microsoft.com/zh-cn/excel/HP052092672052.aspx?pid=CH062528302052(关于外部函数SQL.REQUEST的资料)

本主题中的部分内容可能不适用于某些语言。

与外部数据源连接,从工作表运行查询,然后 SQL.REQUEST 将查询结果以数组的形式返回,而无需进行宏编程。如果没有此函数,则必须安装 Microsoft Excel ODBC 加载项程序 (加载项:为 Microsoft Office 提供自定义命令或自定义功能的补充程序。) (XLODBC.XLA)。 您可从 Microsoft Office 网站安装加载项。

语法

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

Connection_string     提供信息,如数据源名称、用户 ID 和密码等。这些信息对于连接数据源的驱动程序是必需的,同时它们必须满足驱动程序的格式要求。下表给出用于 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,SQL.REQUEST 函数使用 2 作为默认值。

Driver_prompt 说明
1 一直显示驱动程序对话框。
2 只有在连接字符串和数据源说明所提供的信息不足以完成连接时,才显示驱动程序对话框。所有对话框选项都可用。
3 只有在连接字符串和数据源说明所提供的信息不足以完成连接时,才显示驱动程序对话框。如果未指明对话框选项是必需的,这些选项变灰,不能使用。
4 不显示对话框。如果连接不成功,则返回错误值。
  • 如果 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)
      

在DELPHI中怎样把SQL SERVER查询出来的数据导入EXCEL,WORD,TXT文件

用DexExpress Grid,即将此Grid连到数据上,然后再通过它的导出功能来另存为Excel,Html,Text,XMl

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多