仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 818|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之Excel 2000会见远程数据的四种办法

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:36:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
mysqld进程在一个写入当中被杀死;计算机的意外关闭(例如,如果计算机掉电);一个硬件错误。excel|会见|数据Excel2000作为一个电子表格软件,它不但有壮大的数据处置才能,并且它的报表功效也是非常壮大。因此经常用Excel2000往挪用Access、SQLServer、Oracle、DB2等数据库软件创建的年夜型数据库的内容。用户能够在事情表中对这些数据举行选择、排序、查询、编纂和打印报表,非常便利,这也是年夜多半人都熟习的。但怎样往挪用这数据呢?自己在这里供应4种办法。
上面四种办法必需要先创立一个数据源,我们以SQLServer7.0内的样本数据库pubs为例。在把持面板/ODBC数据源/体系DSN,单击增添按纽,拔取SQLServer驱动程序,创建一个与pubs数据库毗连的叫pubs称号数据源。
办法一:
在Excel2000中,选择数据/猎取内部数据/新建数据库查询,然后按导游的提醒一步一步做,最初将数据前往Excel2000中就好了
这类办法是人人经常使用的,也是最便利的。但这类办法只能对远程数据举行查询,不克不及对远程数据举行增添和修正。
办法二:
这类办法必要VBA编程(办法3、办法四也一样),在VisualBasic编程中,我们常常用ADO来会见数据。ADO是Microsoft供应的针对林林总总数据源的新型初级编程接口。它撑持年夜多半据库操纵,在Excel2000中使用ADO来会见数据,是非常幻想的办法。看看上面一个实例:
Subopendb()
DimcnAsADODB.Connection
DimrsAsADODB.Recordset
Setcn=NewADODB.Connection
Setrs=NewADODB.Recordset
cn.Open"Provider=MSDASQL.1;PersistSecurityInfo=False;DataSource=pubs"
rs.Open"select*fromauthors",cn
Range("a1").CopyFromRecordsetrs
Rs.close
cn.Close
EndSub
宏中第1、二句界说了一个ADO的Connection工具和一个Recordset工具,第3、四句创立了一个ADO的Connection工具和一个Recordset工具。第五句毗连到后面我们创建的数据源pubs数据库。第六句是ADO的Recordset工具实行一条SQL里select语句。在这也能够实行insert,update等等SQL语句的。第七句是将rs里的纪录前往以后内外。第8、九句是封闭毗连。运转前要在Excel2000工具/援用中援用ADO的库文件。
在Excel2000中使用ADO工具,不但能够对数据库举行查询,并且能够作增添,修正数据库的纪录,乃至能够挪用SQLSERVER7.0的存储历程,增强Excel2000对数据库处置才能。
办法三:
Excel2000的功效是非常壮大的,它自带了一个ODBC加载宏,我们在Excel2000中援用这个宏文件xlodbc.xla,就能够经由过程上面的办法往会见我们创建的数据源了
Subopendb()
Dimidasinteger
id=SQLOpen(“DSN=pubs”)
SQLExecQueryid,“select*fromauthors”
Setoutput=Worksheets("Sheet1").Range("A1")
SQLRetrieveid,output,,,
TrueSQLCloseid
Endsub
第二句是挪用xlodbc.xla宏中的SQLOpen函数创建一个对数据库pubs毗连,第三句是SQLExecQuery函数实行了一条select语句,id是由SQLOpen函数前往的独一毗连标识,第四句是SQLRetrieve函数将SQLExecQuery函数实行的查询的了局前往到Excel2000中。
这类编程办法能够说来的简单,用得便利。也是一种好的会见远程数据办法。
办法四:
这类办法是利用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*fromauthors“
res=SQLExecDirect(hSel,sSql,Len(sSql))
将纪录前往以后内外
res=SQLNumResultCols(hSel,Nc)
DoWhile(SQLFetch(hSel)SQL_NO_DATA_FOUND)
J=j+1
FORI=1TONc
res=SQLGetData(hSel,I,SQL_C_CHAR,tmp,512,pl)
Cells(j,i)=tmp
NextI
Loop
开释数据库毗连句柄
res=SQLAllocHandle(SQL_HANDLE_STMT,hSvr,hSel)
开释数据库毗连句柄
ret=SQLFreeHandle(SQL_HANDLE_ENV,hEnv)
这类办法对照庞大,调试也对照坚苦,但运转速率快,在举行大批查询数据和本人在API挪用方面对照熟时,能够用这个办法。在用下面的实例时,要做API声明和常量的界说。刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、root帐户设置密码
分手快乐 该用户已被删除
沙发
发表于 2015-1-19 18:05:38 | 只看该作者
以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
若天明 该用户已被删除
板凳
发表于 2015-1-24 16:28:21 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
山那边是海 该用户已被删除
地板
发表于 2015-2-2 10:46:09 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-7 18:06:23 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
老尸 该用户已被删除
6#
发表于 2015-2-22 20:14:18 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
若相依 该用户已被删除
7#
发表于 2015-3-7 02:12:56 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
爱飞 该用户已被删除
8#
发表于 2015-3-14 08:22:08 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
小魔女 该用户已被删除
9#
发表于 2015-3-21 01:32:50 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表