小弟第一次在VB区提问,VB大哥帮忙.
因为公司部分MRP是Access作后台数据库, 现在要对某一数据库里面的
所有用ODBC连接表进刷新, Access是连接到工作组的, 每次刷新总是
出现ACCESS登陆密码,有什么去掉.  Dim Wksp As Workspace
    Dim DB As Database
    Set Wksp = CreateWorkspace("test", txtMdbUID.Text, txtMdbPassword.Text, dbUseJet)
   '上面的代码用 wksp.OpenDataBase(FileName)出现"无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。" 但是我根本没有打开Access程序, 用户名\密码都正确
    'Set Wksp = CreateWorkspace("test", "Admin", "", dbUseJet) 
    Set DB = Wksp.OpenDatabase(FileName)
    '以下的代码没有问题
sttt = "ODBC;DSN=" & wooldns & ";SERVER=" & servername & ";UID=" & UNameStr & ";PWD=" & Upass & ";WSID=ZW1;DATABASE=" & wooldb & ""
    Set TblDf = DBEngine(0).Databases(0).TableDefs
    Y = TblDf.Count
    pb1.Value = 0
    pb1.Min = 0
    pb1.Max = Y - 1
    For X = 0 To Y - 1
        st = TblDf(X).Connect
       If Left(st, 4) = "ODBC" Then
            TblDf(X).Connect = sttt
            TblDf(X).RefreshLink
       Else
          If Left(st, 9) = ";DATABASE" Then
             TblDf(X).Connect = ";DATABASE=" & App.Path & "\temp.mdb"
             TblDf(X).RefreshLink
          End If
       End If
       pb1.Value = X
    Next
    DB.Close
    Wksp.Close
Exit SubErrMsg:
    Debug.Print Err.Description
    DB.Close
    Wksp.Close

解决方案 »

  1.   


    sttt = "ODBC;DSN=" & wooldns & ";SERVER=" & servername & ";UID=" & UNameStr & ";PWD=" & Upass & ";WSID=ZW1;DATABASE=" & wooldb & ""在后边加上这个试试User ID=许仙;Mode=Share Deny None;Jet OLEDB:System database=C:\windows\system32\system.mdw
      

  2.   

    晕了 错了 连文件那么加可以 ODBC得设 ODBC里面 跟我一步一步走双击你的数据源 bbbb  点高级 登陆名称 密码 为 工作组 里的用户信息系统数据库 指向你的 mdw文件 注意 建mdw文件的属性的隐藏取消 
    我测试了 OK
      

  3.   

    我的Access数据库已经连接到了工作组即mdw文件, 并且与那个 mdw文件绑定了用其它的
    工组文件就会出现没有权限打开该数据库.
      

  4.   

    '以下可以但是每次都会出 ACCESS登陆对话框, 真是晕了
    On Error Resume Next
        Dim res As DAO.Recordset
        Dim LocalInfo As DAO.Recordset
        Dim servername As String
        Dim wooldns As String
        Dim wooldb As String
        Dim sttt, UNameStr, Upass As String
        
        Dim TblDf As TableDefs
        Dim Y As Integer
        Dim X As Integer
        Dim st As String
        
        Dim AccApp As New Access.Application
      
        AccApp.OpenCurrentDatabase FileName
        '以下是更新 LocalInfo表
        Set res = CurrentDb.OpenRecordset("Select * From LocaInfo")
        res.MoveFirst
        res.Edit
        res("LOCAPATH").Value = App.Path
        res("SERVER").Value = txtServer.Text
        res("Database").Value = txtDataBase.Text
        res("ODBC").Value = txtDSN.Text
        res("UserName").Value = txtSqlUID.Text
        res("UserPass").Value = txtSqlPassword.Text
        res.Update
        res.Close
        '以下是刷新LinkTable
        Set LocalInfo = CurrentDb().OpenRecordset("locainfo")
        servername = LocalInfo!server
        wooldns = LocalInfo!odbc
        wooldb = LocalInfo!Database
        UNameStr = LocalInfo!UserName
        If IsNull(LocalInfo!userpass) Or LocalInfo!userpass = "" Then
            Upass = ""
        Else
            Upass = LocalInfo!userpass
        End If
        LocalInfo.Close
        
        sttt = "ODBC;DSN=" & wooldns & ";SERVER=" & servername & ";UID=" & UNameStr & ";PWD=" & Upass & ";WSID=ZW1;DATABASE=" & wooldb & ""
        Set TblDf = DBEngine(0).Databases(0).TableDefs
        Y = TblDf.Count
        pb1.Value = 0
        pb1.Min = 0
        pb1.Max = Y - 1
        For X = 0 To Y - 1
            st = TblDf(X).Connect
           If Left(st, 4) = "ODBC" Then
                TblDf(X).Connect = sttt
                TblDf(X).RefreshLink
           Else
              If Left(st, 9) = ";DATABASE" Then
                 TblDf(X).Connect = ";DATABASE=" & App.Path & "\temp.mdb"
                 TblDf(X).RefreshLink
              End If
           End If
           pb1.Value = X
        Next
        AccApp.Quit acQuitSaveAll
        AccApp.CloseCurrentDatabase
        Set AccApp = Nothing
        
    Exit SubErrMsg:
        Debug.Print Err.Description
        AccApp.CloseCurrentDatabase
        Set AccApp = Nothing