ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

vba 连接本地SQL错误

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-26 17:10 | 显示全部楼层 |阅读模式
用VBA连接SQL数据库写入数据并处理,但是代码无法连接数据库,提示错误不能连接(红色字体处报错)。但是用客户端又能访问,系统是WIN10.相关代码及系统配置如图,找了两天了没有找到原因,请各位大神帮忙指点指点,谢谢!

Sub 读取数据并写入()
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False '关闭屏幕
Application.DisplayAlerts = False
Dim ss As Workbook
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i, k As Long
Dim bt, nm As String
With Application.FileDialog(msoFileDialogOpen) '打开对话框对象
    .AllowMultiSelect = True '多选文件
    If .Show = -1 Then '打开操作
       MsgBox "被选定导入的文件共 " & .SelectedItems.Count & " 个 !", , "导入数据"
       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
       For i = 1 To .SelectedItems.Count '从选定的第1个文件循环到选定的最后一个文件
           x = InStrRev(.SelectedItems(i), "\") '计算具有路径的文件名中最后一个分隔符\的位置
           y = Len(.SelectedItems(i)) '计算具有路径的文件名长度
           TQ = Right(.SelectedItems(i), y - x) '提取文件名称(含拓展名)
           Set ss = Workbooks.Open(.SelectedItems(i), , ReadOnly)  '打开文件并赋值给变量ss
             mc = ss.Name '打开的文件名称
                   With Workbooks(mc).Sheets("sheet")
                     hs = Application.WorksheetFunction.Max(.Range("a1048576").End(xlUp).Row(), 2) '加max函数是为了防止复制标题行
                    sz = .Range(Cells(2, 1).Address & ":" & Cells(hs, 15).Address) '
                  End With
              cnn.Open "Provider=sqloledb;Server=LAPTOP-BETRGNKJ\SQLEXPRESS;Database=zhtc;Integrated Security=SSPI;Persist Security Info=False;"
              rs.Open "进出记录", cnn, adOpenDynamic, adLockPessimistic
              For k = 1 To UBound(sz, 1)
              On Error Resume Next      '以为关键字,即判断数据添加重复,则退出工程
             With rs
            .AddNew
            .Fields("停车场名称").Value = sz(k, 1) '
            .Fields("停车位").Value = sz(k, 2)
            .Fields("进场时间").Value = sz(k, 3)
            .Fields("出场时间").Value = sz(k, 6)
            .Fields("停车时长").Value = sz(k, 9)
            .Fields("应付金额").Value = sz(k, 10)
            .Fields("车牌号").Value = sz(k, 11)
            .Fields("状态").Value = sz(k, 15)
            .Update
             End With
           Next k
         rs.Close
         cnn.Close
        Erase sz '清空数组SZ1释放内存
        Next i
        Else
        MsgBox "没有指定打开的文件!", , "导入数据"
    End If
End With
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True '屏幕刷新
End Sub


微信图片_20230326170158.png
微信图片_20230326170207.png
微信图片_20230326170332222.png

TA的精华主题

TA的得分主题

发表于 2023-3-26 18:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个错误可能是由于你的计算机无法连接到SQL Server引起的。请确认你的SQL Server是否正在运行并且已经启用了TCP/IP协议。还需要确保连接字符串的服务器名称和实例名正确,数据库名称也正确。如果你使用的是Windows身份验证,那么需要确保连接字符串中的Integrated Security属性已设置为SSPI或True。如果仍然无法解决问题,你可以尝试使用SQL Server身份验证,但需要确保你有正确的用户名和密码。

TA的精华主题

TA的得分主题

发表于 2023-3-26 18:43 来自手机 | 显示全部楼层
sz = .Range(Cells(2, 1).Address & ":" & Cells(hs, 15).Address) '这里的cells之前是不是应该有个点?
没有附件,靠蒙的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-26 22:33 | 显示全部楼层
约定的童话 发表于 2023-3-26 18:35
这个错误可能是由于你的计算机无法连接到SQL Server引起的。请确认你的SQL Server是否正在运行并且已经启用 ...

C:\Users\asus\Desktop\微信图片_20230326170332222 查看了配置的,还是连不上

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-26 22:34 | 显示全部楼层
excel玉米 发表于 2023-3-26 18:43
sz = .Range(Cells(2, 1).Address & ":" & Cells(hs, 15).Address) '这里的cells之前是不是应该有个点?
...

这个和数据库连接不影响吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-26 22:35 | 显示全部楼层
约定的童话 发表于 2023-3-26 18:35
这个错误可能是由于你的计算机无法连接到SQL Server引起的。请确认你的SQL Server是否正在运行并且已经启用 ...

查看了TCP/IP协议 ,是启用状态
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-29 16:21 , Processed in 0.030983 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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