联系使用Excel和SQL |
当今,许多公司都使用SQL Server来处理关于产品、服务和支持方面的数据――所有那些你能够想象得到的数据。通常,安装有SQL Server的公司都同时安装有非常庞大和贵重的软件应用程序,这些应用程序是用来从数据库中插入和查找数据用的。当这些应用程序能够确实起到一些作用的时候,并且这些程序需要在不同的情况下将数据导入到SQL Server的环境下,如何生成报表就成了一个问题。 作者提示 这篇文章是基于两个软件的――SQL Server 和 Excel。这篇文章会帮助你了解如何将这两个软件天衣无缝地衔接起来,来进行数据的输出。通过这种方法,你所提供的报表和信息将帮助他们更有效地进行工作,并且可以减少用户们求助公司DBA的频率。 为了明确表达这篇文章的目的,我将使用SQL Server 2000的Evaluation版和Office XP。你至少需要安装微软的SQL Server 的运行版本和微软的Excel或者Office。我将使用Northwind数据库,它是在SQL Server标准版和企业版中都包含有的数据库。这个数据库对于微软的Access也是适用的 一些小的先决条件 大多的办公环境都使用微软的Office产品,所以安装Excel应该不成问题。然而,安装SQL Server则要花费一个大代价,并且,如果你的公司并没有交付SQL Server的使用费用,并且也没有意愿要交付SQL Server的使用费用,这或许是一件麻烦的事情,但是,不要担心。微软创建了一个桌面版本,可以免费下载使用。它可以支持更高版本的数据,但是不提供所有有关设计数据库方面的工具。 在SQL Server中获取数据在你收集完适量的信息之后,就可以开始对这些数据进行处理了。通过我的经验,我发现创建一个Excel报表的最好的方式就是在Microsoft Query Analyzer 中创建这个报表,或者使用Office自带的一些工具,如Microsoft Query,测试它们的有效性,而不完全依赖与它的向导。 在Orders表格中,包括顺序的ID信息和customer ID。这两个ID信息应该被看作是你选择信息的一个方法。当你不需要显示Orders 表格中的任何信息的时候,你必须做一个pit stop,来获取order ID 。一旦这通过一个简单的连接语句实现了,你就可以选择按照每个顾客购买数量的顺序排放,通过其他的连接语句,还可以按购买日期排列。 这些表格按照同样的列进行连接。例如,Customers 和 Orders表格是按照customer ID来进行连接操作的: 如何在Excel中使用它 现在,我将会从Excel的角度看这条查询语句。在Excel中,选择Data ->Import External Data ->Select New Database Query。当你选择了New Database Query 菜单选项的时候,你将看到如图B所示的界面,它会让你选择一个DSN。 如果没有创建一个SQL Server的DSN怎么办?简单地选择界面中右侧的OK按钮,选择默认的信息。#p#DSN, DNS, ODBC:这些是什么意思?
当你使用Excel连接到SQL Server上的时候,你就创建了一个开放数据库连接(Open Database Connectivity (ODBC) )连接到数据库上。这些连接和数据源姓名(Data Source Names (DSNs))相关,有时也被误写为DNS,做为在英特网上使用的区域名。 选择界面右侧的OK按钮。你将会看到打开了一个创建新的数据源的向导,如图C所示: 你可以自己定义DSN的姓名,并且选择你连接的数据源类型。在这种情况下,点击下拉菜单,选择最后一个数据源(SQL Server),然后点击Connect按钮。
在SQL Server登陆界面中,你需要指定你的SQL Server 2000服务器机器的名字,同时还要输入登陆密码,以允许你的DSN成功地连接到SQL Server上。如果你的数据库服务器使用的是Windows的帐号和密码授权,选中Use Trusted Connection的复选框,然后点击OK。这种连接方式在图D中显示出来: 如果你的SQL Server使用SQL来进行登陆的,或者用户帐号是在SQL Server中创建的,那么,你就需要考虑来创建一个只读的SQL登陆帐号给其它的程序使用。如果你已经创建了一个帐号了,键入登陆名和密码,然后点击OK。
如果你需要确保你的数据源在如图D进行登陆的时候,总是能够连接到合适的数据库中去,你可以点击Options按钮,并且选择默认的数据库。在这种情况下,数据库就会是Northwind。然后点击OK,并且进行向导的下一个步骤。当这个步骤不是必须的时候,它可能会使得这个过程更容易一些。图E显示了如何进行选择。 接下来向导会使用你给定的确认信息建立数据库的连接,并且会询问你是否希望给这个DSN指定一个表格,如图C中显示的一样。你用不着填写这些信息。因为你的查询将使用到多个表格,所以没有必要去指定特定的一个表格。保存用户名和密码,如果你创建了一个SQL的登陆信息作为只读用的,那么将它们(用户名和密码)作为DSN的一部分保存起来是一个比较好的主意;这样,你在进行报表处理的时候,就不需要特地填充用户名和密码了。
一旦你填充了所有的必要部分,点击OK按钮。这时就会返回到你选择A数据源的界面,但是这一次,在你的列表中就会显示有你所创建的新的DSN信息。选择你所创建的DSN信息,并且点击OK按钮。 在下一个界面中,你就会见到如图F所示的查询向导。在这里,你可以展开表格前面的“+”号,通过高亮化你希望选择的列来选择默认的数据库中表格的某几列(如果你事前选择了一个数据库)。选择中间的单箭头来将该列导入到列表中去。 在你选择完你想要使用的列,点击Next。你将会要求填写输出集。当你在填写这些输出集合的时候,你实际上就是在建立查询语句中的WHERE的功能。如果你只希望看到order ID等于三的结果,那么你就按照图G来进行配置。
当你填充好你希望的输出结果之后,点击Next,告知查询向导你所希望的结果存储方式。这个界面显示了你在每个下拉菜单中所选择的列。如果你选择了一列,那么结果就会按照你选择的每一列存放。 当你确实将数据结果返回到Excel中的时候,也许是通过向导,或者是通过Microsoft Query 。你都将被要求选择一个存放数据的空间。如果你打算包括报表的标题,那么你就可以适当的多留出一点空间,并且从大约第六行的开始存放数据。如果你选择在Microsoft Query 中查看查询信息并且进行进一步的修改,工具条上的图标显示为一个带有箭头的门,这个按钮是将数据返回到Excel中的一个功能键。
偶尔奏效的一种办法 当你使用一个更复杂的查询的时候,就如同我在上面举的这个例子,不是使用向导,而使用Query Analyzer (上文已经显示过)或者Microsoft Query来进行这个查询,就会变得简单得多。为了完成这个工作,在向导要求的时候就随便选择一列。接下来点击Next三次,并且选择在Microsoft Query 中查看数据或者修改查询。点击Finish,那么你就会看见你在Microsoft Query 中所选择的记录。在Microsoft Query窗口的最上端高亮化那个以图形显示的数据库表格。然后选择Table->Remove Table。点击工具栏上的SQL按钮,手动输入你的查询语句或者粘贴上最初的查询代码,点击OK按钮。 当准备这个报表的时候,向那些可能会提供一些信息的用户们了解一些情况。也许它开始是为了满足Phil的报表需要,但是,时间久了以后,通过少量的工作,就可以创建一个关于顾客个人的报表。 |