Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

代码刷新链接表为什么总是提示密码错误?后台数据库为sql server2005

bjllk  发表于:2014-08-03 00:22:17  
复制

刷新链接表.rar

 

Top
bjllk 发表于:2014-08-03 09:13:49

代码如下:

Private Sub Command9_Click()
    Err = 0
    On Error Resume Next
    Dim wrkODBC As Workspace
    Dim conPubs As Connection
    Dim mydb As Database, mytable As TableDef
    Dim i As Integer, j As Integer
    Dim connectstr As String
    DoCmd.Hourglass True
    DoCmd.SetWarnings False
    Set mydb = DBEngine.Workspaces(0).Databases(0)
    Dim passdb As String, ww As Integer
    Dim f As Integer, g As Integer
    connectstr = "ODBC;DSN=" & Me.dsn & ";"
    connectstr = connectstr & "UID=" & Me.dbuser_id & ";"
    connectstr = connectstr & "PWD=" & Me.dbpass_id & ";"
    Set wrkODBC = CreateWorkspace("NewODBCWorkspace", "", "", dbUseODBC)
    Set conPubs = wrkODBC.OpenConnection("sam_user", dbDriverNoPrompt, , connectstr)
    If Err <> 0 Then GoTo dbuser_sam_err
    On Error GoTo dbuser_conn_err
    i = mydb.TableDefs.Count     'tables count
    For j = 0 To i - 1
        Set mytable = mydb.TableDefs(j)
        If mytable.Attributes = DB_ATTACHEDODBC Or mytable.Attributes = DB_ATTACHEDODBC + DB_ATTACHSAVEPWD Then
            mytable.Connect = connectstr
            mytable.RefreshLink
        End If
    Next
    On Error Resume Next

    DoCmd.Hourglass False
    MsgBox "数据表连接完成!", , "刷新"
    Err = 0
    Exit Sub

dbuser_sam_err:
    DoCmd.Hourglass False
    MsgBox "数据库用户,口令错误,重新登录!", , "刷新"
    Err = 0
    Exit Sub

dbuser_conn_err:
    DoCmd.Hourglass False
    MsgBox Error$(Err), 16, "刷新"
    Err = 0
    Exit Sub
End Sub

提示错误如下:



在水一方 发表于:2014-08-04 11:28:35

同问。

补充说明一下,楼主的后台是SqlServer,这段代码在access和Oracle做后台数据库时就没有问题,估计还是SqlServer的权限问题。



cspa 发表于:2014-08-04 17:12:42

   ODBC连接字串似乎应长这样:

 strConnect = "ODBC;DRIVER=SQL Server" & _
                 ";SERVER=192.168.6.128" & _
                 ";DATABASE=BSX" & _
                 ";UID=sa" & _
                 ";PWD=123"

 

你的connectstr中多了DSN,没有DRIVER=,SERVER=和DATABASE=,三项,

跟踪代码,错误显示为ODBC连接失败,好像不是权限和用户名、密码等问题,而是连接字串不正确问题。



bjllk 发表于:2014-08-04 17:29:53

谢谢老师回复,但同还是提示出错,把Error GoTo注释掉后显示为连接数据库失败,如图示:

 



总记录:4篇  页次:1/1 9 1 :