Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5805|回复: 16

[已解决]vba代码调用网络数据库问题

[复制链接]
发表于 2013-6-18 13:00 | 显示全部楼层 |阅读模式
如何将这段代码里面的数据库位置改成网络的,网络地址:\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库\gkzp.mdb
Private Sub CommandButton6_Click()
    Dim cnn As Object, rs As Object, sql$, i&, m&, c As Range
    If Len(Range("b3").Value) = 0 Then MsgBox " 请在 B3 单元可输入要查询的机型", vbCritical + vbOKOnly: Exit Sub
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Set cnn = CreateObject("adodb.connection")
    Set rs = CreateObject("adodb.recordset")

    cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "\gkzp.mdb;Jet OLEDB:Database Password=263214685"

    sql = "select 班组,生产线,不良类型,不良位置,不良数量,生产日期,单机点数,总点数,不良总数,操作员,生产周期,产量,疵点率 from gkzp where 机型='" & [B3] & "'"
    rs.Open sql, cnn, 1, 3
    If rs.RecordCount > 0 Then
        If rs.RecordCount > 1 Then
            '            MsgBox Target.Value & "共有" & rs.RecordCount & "条记录", vbInformation
            For i = 1 To rs.RecordCount
                m = 0
                For Each c In Range("F3,J3,B4,F4,J4,L4,B5,F5,J5,L6,L5,J6,K8")
                    c.Value = rs.Fields(m).Value
                    m = m + 1
                Next

                If i < rs.RecordCount Then
                    If MsgBox("共有" & rs.RecordCount & "条记录,这是第" & i & "条记录,单击“是”显示下一条,单击“否”退出程序。", vbInformation + vbYesNo, [B3] & "共有" & rs.RecordCount & "条记录") = vbNo Then Exit For
                End If
                rs.MoveNext
            Next
        Else

            For Each c In Range("F3,J3,B4,F4,J4,L4,B5,F5,J5,L6,L5,J6,K8")
                c.Value = rs.Fields(m).Value
                m = m + 1
            Next
            MsgBox "获取成功!"  '提示可要可不要
        End If
    Else
        Range("F3,J3,B4,F4,J4,L4,B5,F5,J5,L6,L5,J6,K8") = ""
    End If
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    rs.Close
    Set rs = Nothing
    cnn.Close
    Set cnn = Nothing

End Sub

最佳答案
2013-6-18 13:03
  1. Private Sub CommandButton6_Click()
  2.     Dim cnn As Object, rs As Object, sql$, i&, m&, c As Range
  3.     Dim strDatabase$

  4.     If Len(Range("b3").Value) = 0 Then MsgBox " 请在 B3 单元可输入要查询的机型", vbCritical + vbOKOnly: Exit Sub
  5.     strDatabase = "\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库"
  6.     Application.ScreenUpdating = False
  7.     Application.DisplayAlerts = False
  8.     Application.EnableEvents = False
  9.     Set cnn = CreateObject("adodb.connection")
  10.     Set rs = CreateObject("adodb.recordset")

  11.     cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & strDatabase & "gkzp.mdb;Jet OLEDB:Database Password=263214685"

  12.     sql = "select 班组,生产线,不良类型,不良位置,不良数量,生产日期,单机点数,总点数,不良总数,操作员,生产周期,产量,疵点率 from gkzp where 机型='" & [B3] & "'"
  13.     rs.Open sql, cnn, 1, 3
  14.     If rs.RecordCount > 0 Then
  15.         If rs.RecordCount > 1 Then
  16.             '            MsgBox Target.Value & "共有" & rs.RecordCount & "条记录", vbInformation
  17.             For i = 1 To rs.RecordCount
  18.                 m = 0
  19.                 For Each c In Range("F3,J3,B4,F4,J4,L4,B5,F5,J5,L6,L5,J6,K8")
  20.                     c.Value = rs.Fields(m).Value
  21.                     m = m + 1
  22.                 Next

  23.                 If i < rs.RecordCount Then
  24.                     If MsgBox("共有" & rs.RecordCount & "条记录,这是第" & i & "条记录,单击“是”显示下一条,单击“否”退出程序。", vbInformation + vbYesNo, [B3] & "共有" & rs.RecordCount & "条记录") = vbNo Then Exit For
  25.                 End If
  26.                 rs.MoveNext
  27.             Next
  28.         Else

  29.             For Each c In Range("F3,J3,B4,F4,J4,L4,B5,F5,J5,L6,L5,J6,K8")
  30.                 c.Value = rs.Fields(m).Value
  31.                 m = m + 1
  32.             Next
  33.             MsgBox "获取成功!"  '提示可要可不要
  34.         End If
  35.     Else
  36.         Range("F3,J3,B4,F4,J4,L4,B5,F5,J5,L6,L5,J6,K8") = ""
  37.     End If
  38.     Application.ScreenUpdating = True
  39.     Application.DisplayAlerts = True
  40.     Application.EnableEvents = True
  41.     rs.Close
  42.     Set rs = Nothing
  43.     cnn.Close
  44.     Set cnn = Nothing

  45. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-6-18 13:03 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton6_Click()
  2.     Dim cnn As Object, rs As Object, sql$, i&, m&, c As Range
  3.     Dim strDatabase$

  4.     If Len(Range("b3").Value) = 0 Then MsgBox " 请在 B3 单元可输入要查询的机型", vbCritical + vbOKOnly: Exit Sub
  5.     strDatabase = "\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库"
  6.     Application.ScreenUpdating = False
  7.     Application.DisplayAlerts = False
  8.     Application.EnableEvents = False
  9.     Set cnn = CreateObject("adodb.connection")
  10.     Set rs = CreateObject("adodb.recordset")

  11.     cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & strDatabase & "gkzp.mdb;Jet OLEDB:Database Password=263214685"

  12.     sql = "select 班组,生产线,不良类型,不良位置,不良数量,生产日期,单机点数,总点数,不良总数,操作员,生产周期,产量,疵点率 from gkzp where 机型='" & [B3] & "'"
  13.     rs.Open sql, cnn, 1, 3
  14.     If rs.RecordCount > 0 Then
  15.         If rs.RecordCount > 1 Then
  16.             '            MsgBox Target.Value & "共有" & rs.RecordCount & "条记录", vbInformation
  17.             For i = 1 To rs.RecordCount
  18.                 m = 0
  19.                 For Each c In Range("F3,J3,B4,F4,J4,L4,B5,F5,J5,L6,L5,J6,K8")
  20.                     c.Value = rs.Fields(m).Value
  21.                     m = m + 1
  22.                 Next

  23.                 If i < rs.RecordCount Then
  24.                     If MsgBox("共有" & rs.RecordCount & "条记录,这是第" & i & "条记录,单击“是”显示下一条,单击“否”退出程序。", vbInformation + vbYesNo, [B3] & "共有" & rs.RecordCount & "条记录") = vbNo Then Exit For
  25.                 End If
  26.                 rs.MoveNext
  27.             Next
  28.         Else

  29.             For Each c In Range("F3,J3,B4,F4,J4,L4,B5,F5,J5,L6,L5,J6,K8")
  30.                 c.Value = rs.Fields(m).Value
  31.                 m = m + 1
  32.             Next
  33.             MsgBox "获取成功!"  '提示可要可不要
  34.         End If
  35.     Else
  36.         Range("F3,J3,B4,F4,J4,L4,B5,F5,J5,L6,L5,J6,K8") = ""
  37.     End If
  38.     Application.ScreenUpdating = True
  39.     Application.DisplayAlerts = True
  40.     Application.EnableEvents = True
  41.     rs.Close
  42.     Set rs = Nothing
  43.     cnn.Close
  44.     Set cnn = Nothing

  45. End Sub
复制代码
回复

使用道具 举报

发表于 2013-6-18 13:04 | 显示全部楼层
就定义了一个变量存储网络路径,
然后替换掉原有的THISWORKBOOK.PATH
回复

使用道具 举报

 楼主| 发表于 2013-6-18 13:15 | 显示全部楼层
好像不行啊,提示运行时错误‘-2147217865 (80040e37)’:
自动化(Automation)错误
回复

使用道具 举报

发表于 2013-6-18 13:23 | 显示全部楼层
网络连接是否正常,你打开共享里的文件是否正常?
回复

使用道具 举报

发表于 2013-6-18 13:24 | 显示全部楼层
strDatabase = "\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库\"
改成
strDatabase = "'\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库\"

cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & strDatabase & "gkzp.mdb;Jet OLEDB:Database Password=263214685"
改成
cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & strDatabase & "gkzp.mdb';Jet OLEDB:Database Password=263214685"
回复

使用道具 举报

发表于 2013-6-18 13:25 | 显示全部楼层
msgbox dir("\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库\gkzp.mdb")
或者先用这个测试,可以检测文件。
回复

使用道具 举报

 楼主| 发表于 2013-6-18 13:35 | 显示全部楼层

msgbox dir("\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库\gkzp.mdb")用这有弹出 GKZP.mdb

strDatabase = "\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库\"
改成
strDatabase = "'\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库\"

cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & strDatabase & "gkzp.mdb;Jet OLEDB:Database Password=263214685"
改成
cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & strDatabase & "gkzp.mdb';Jet OLEDB:Database Password=263214685"
之后变成数据库引擎找不到输入和查询 gkzp 请确认是否存在
回复

使用道具 举报

发表于 2013-6-18 13:58 | 显示全部楼层
strDatabase = "\\10.127.10.234\中转文件\贴片回流焊数据\QC报表数据库\gkzp.mdb“
cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & strDatabase & ";Jet OLEDB:Database Password=263214685"

错误码是多少来着。
回复

使用道具 举报

发表于 2013-6-18 13:58 | 显示全部楼层
你留个QQ,我远程瞧瞧吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 06:29 , Processed in 0.407623 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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