ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA连接局域网内SQL数据库出错

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-8-21 09:53 | 显示全部楼层 |阅读模式
各位老师好,


     如题,想用VBA写代码连接局域网内数据库,在本机上测试没有问题,但是别人电脑点开附件所示excel的VBA代码连接时,会报错(如图片)。
说的是“服务器主体XXX无法再当前安全的上下文下访问XXXX”,并且发现这个服务器主体名称就是所在电脑的登录名。
      实在是弄不明白了,请各位路过的老师们帮帮忙、谢谢啦!
0821_2.jpg

Excel连接SQL测试Excelhome.rar

17.63 KB, 下载次数: 6

附件

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-21 09:55 | 显示全部楼层
PS:已参照帖子:如何在sqlserver建立新用户并关联相应的数据库https://jingyan.baidu.com/article/154b46315f97ae28cb8f4156.html进行了访问用户的添加和密码设置

TA的精华主题

TA的得分主题

发表于 2017-8-21 10:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
一般用IP地址访问,另外,sql server的TCP/IP协议是不是没有开了?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-21 10:10 | 显示全部楼层
笑着...两年过去 发表于 2017-8-21 10:05
一般用IP地址访问,另外,sql server的TCP/IP协议是不是没有开了?

是用的IP地址访问的,TCP/IP协议已开

TA的精华主题

TA的得分主题

发表于 2017-8-21 12:12 | 显示全部楼层
寒江隐居客 发表于 2017-8-21 10:10
是用的IP地址访问的,TCP/IP协议已开

代码截图来看

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-21 12:59 | 显示全部楼层

Private Sub Configpostcode()



Dim i As Integer, j As Integer, sht As Worksheet, para 'i,j为整数变量;sht 为excel工作表对象变量,指向某一工作表




Dim cn As Object '定义数据链接对象 ,保存连接数据库信息

Dim rs As Object '定义记录集对象,保存数据表

Set cn = CreateObject("ADODB.Connection") '创建数据链接对象

Set rs = CreateObject("ADODB.RecordSet") '创建记录集对象





'Dim cn As New ADODB.Connection '定义数据链接对象 ,保存连接数据库信息;请先添加ADO引用

'Dim rs As New ADODB.Recordset '定义记录集对象,保存数据表

Dim strCn As String, strSQL As String '字符串变量


strCn = "Provider=SQLOLEDB;Initial Catalog=" & "master" & ";User ID=" & "yue.wang" & ";Password=" & "xzy123" & ";Data Source=" & "10.234.207.32,1433" & ";Integrated Security=SSPI;Persist Security Info=True;" '定义数据库链接字符串



strSQL = "SELECT [POSTCODE] FROM [中国邮编].[dbo].[t3] where City_CH = '上海'" '定义SQL查询命令字符串
cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn

rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中



Dim MAB As String
MAB = Empty
Do While Not rs.EOF
'MAB = MAB & rs("POSTCODE").Value
MAB = MAB & rs.Fields("POSTCODE")
MAB = MAB & ","
rs.MoveNext
Loop

Sheets("字符串").Range("A1") = MAB

rs.Close '关闭记录集,至此,程序将把某数据表的字段1和字段2保存在excel工作表sheet1的第1、2列,行数等于数据表的记录数

Set rs = Nothing
cn.Close
Set cn = Nothing

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-21 13:00 | 显示全部楼层

老师,附件里边有的。我刚刚把代码也重新给您发了一遍!

TA的精华主题

TA的得分主题

发表于 2017-8-21 14:04 | 显示全部楼层
ye.wang这个用户没有访问“中国邮编”这个数据库的权限吧,用换sa,或者把用户ye.wang映射到中国邮编这个库上

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-21 14:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
笑着...两年过去 发表于 2017-8-21 14:04
ye.wang这个用户没有访问“中国邮编”这个数据库的权限吧,用换sa,或者把用户ye.wang映射到中国邮编这个库 ...

我之前已参照帖子:如何在sqlserver建立新用户并关联相应的数据库https://jingyan.baidu.com/article/154b46315f97ae28cb8f4156.html进行了访问用户的添加和密码设置。不知道是不是您所说的“把用户ye.wang映射到中国邮编这个库上”?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 17:48 , Processed in 0.045729 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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