ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 48493|回复: 90

[分享] excel vba+sql server 2000使用方法与总结

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-6-5 20:26 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:SQL应用
本帖最后由 EH2003 于 2011-12-28 23:43 编辑

最近由于工作原因对excel vba+sql server 2000进行了学习,现将学习心得总结如下:
一、安装前准备工作:
在安装SQL server2000确保windowsXP安装了iis5.1。(http://tbg1.blog.163.com/blog/static/222360792009108105650566/)
二、SQL server2000安装:
SQL server2000安装(http://www.bitscn.com/os/windows/200604/5180.html)
三、远程连接SQL Server 2000服务器的解决方案:
(1)、ping服务器IP能否ping通
观察远程SQL Server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。
(2) 在Dos或命令行下输入telnet 服务器IP 端口,看能否连通
如telnet 10.110.28.88 1433
通常端口值是1433,因为1433是SQL Server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。
如果这一步有问题,应该检查以下选项。
1.检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。
2.检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开 开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。

3.检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。

事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。

4.如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。

5.检查服务器是否在1433端口侦听。如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。如果没有,则通常需要给sql server 2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。

[ 本帖最后由 EH2003 于 2010-6-5 20:27 编辑 ]

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-6-5 20:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
四、excel与sql server服务器的连接:
在建立excel与sql server服务器的连接确保:工程--〉引用--〉选择“Microsoft ActiveX Data Objects 2.0(或者2.1-2.8)Library”
Public Sub 服务器连接测试()
    Dim cnn As New ADODB.Connection
    Dim cnnStr As String
    '建立与SQL Server数据库服务器的连接
  Set cnn = New ADODB.Connection
    cnn.ConnectionString = "Provider=SQLOLEDB; User ID=sa;Password =密码;Data Source=IP地址"
    cnn.Open
   On Error GoTo 0
    '判断数据库服务器连接是否成功
    If cnn.State = adStateOpen Then
        MsgBox "数据库服务器连接成功!", vbInformation, "连接服务器"
    Else
        MsgBox "数据库服务器连接失败!", vbInformation, "连接服务器"
    End If
    Set cnn = Nothing
End Sub

五、在服务器上建立数据库用表:
Public Sub 创建新的数据库及表()
    Dim cnn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sql As String, mydata As String, mytable As String
    mydata = "数据库名称"        '指定数据库名称
   
    '建立与SQL Server数据库服务器的连接
    Set cnn = New ADODB.Connection
    cnn.ConnectionString = "Provider=SQLOLEDB; User ID=sa;Password =123;password=密码;Data Source=IP地址"
    cnn.Open
    '判断数据库是否已经存在
    sql = "select name from sysdatabases where name='" & mydata & "'"
    Set rs = cnn.Execute(sql)
    If rs.BOF = False Or rs.EOF = False Then
        MsgBox "数据库<" & mydata & ">已经存在!请重新命名数据库!", vbCritical
        Exit Sub
    End If
    '执行SQL语句创建数据库
    sql = "create database " & mydata
    cnn.Execute sql
    MsgBox "数据库创建成功!", vbInformation, "创建数据库"
    '关闭与SQL Server数据库服务器的连接
    cnn.Close
    '建立与刚刚创建的SQL Server数据库的连接
    Set cnn = New ADODB.Connection
    cnn.ConnectionString = "Provider=SQLOLEDB;" _
        & "User ID=sa;" _
        & "Password =密码;" _
        & "Data Source=IP地址;" _
        & "Initial Catalog=" & mydata
    cnn.Open
    '执行SQL语句创建数据表
    sql = "create table 供货商信息" _
        & "(供货商编码 varchar(10) not null,供货商名称 varchar(40) not null," _
        & "通讯地址 varchar(30) not null,邮政编码 varchar(6) not null," _
        & "联系电话 varchar(14) not null,传真号码 varchar(14) not null," _
        & "联系人 varchar(10) not null,联系人电话 varchar(14) not null," _
        & "联系人Email varchar(50) not null,备注 varchar(50))"
    cnn.Execute sql
    sql = "create table 物资信息" _
        & "(物资类别 varchar(10) not null,物资编码 varchar(10) not null,物资名称 varchar(20) not null," _
        & "规格型号 varchar(10) not null,单位 varchar(10) not null)"
    cnn.Execute sql
    MsgBox "数据表创建成功!", vbInformation, "创建数据表"
   
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing
End Sub

[ 本帖最后由 EH2003 于 2010-6-5 20:57 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-6-5 20:28 | 显示全部楼层
六、总结
excel vba+sql server 2000与excel vba+access最大的区别是连接问题。以上的方法是解决连接与创建数据库和数据表问题。如果会用excel vba+access,只要解决连接问题,一切就OK了。现在附上我这个星期所做的仓库管理(网络版)的工作。

[ 本帖最后由 EH2003 于 2010-6-5 21:17 编辑 ]

仓库管理(网络版).rar

23.63 KB, 下载次数: 2549

TA的精华主题

TA的得分主题

发表于 2010-6-5 20:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
占位
占位
占位

TA的精华主题

TA的得分主题

发表于 2010-6-5 20:40 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-5 20:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-5 20:49 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-5 21:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-6 09:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-6 13:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 EH2003 于 2010-6-5 20:28 发表
六、总结
excel vba+sql server 2000与excel vba+access最大的区别是连接问题。以上的方法是解决连接与创建数据库和数据表问题。如果会用excel vba+access,只要解决连接问题,一切就OK了。现在附上我这个星期所做的 ...

谢谢分享!好东西呀!
有几个问题想请教一下,我们深圳办公室的几台电脑是通过一个路由器连接上网的,而其中一台电脑上安装了sql2000数据库。我现在的问题是:
1、用什么方法能找到装有sql2000数据库的电脑的ip号码呢?
2、在深圳办公室的另一台电脑上连接装有sql2000数据库的电脑的代码怎么写呢?
3、在外地(比如西安)的一台电脑上通过客户端连接深圳的那个数据库,这个连接代码怎么写呢?
不好意思,由于底子薄,很缺乏对网络知识的了解,问的问题有点多,还望您不吝赐教,非常的感谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 18:58 , Processed in 0.040285 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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