设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2979|回复: 6
打印 上一主题 下一主题

[Access本身] 连接后台数据表问题,怎样连接带密码的后台数据

[复制链接]
跳转到指定楼层
1#
发表于 2011-5-25 10:47:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在网上找到的后台连接方法,连后台没有密码的数据库正常,现在想改成可以连接带密码的后台数据,请大家帮改一改



以下连接函数代码

Public Function CheckLinks() As Boolean
' 检查到后台数据库的链接;如果链接存在且正确的话,返回 True 。
Dim dbs As Database, rst As DAO.Recordset
Set dbs = CurrentDb()
' 打开链接表查看表链接信息是否正确。
On Error Resume Next
Set rst = dbs.OpenRecordset("职务表") '只须查找其中一个表即可
rst.Close
' 如果没有错误,返回 True 。
If Err = 0 Then
CheckLinks = True
Else
CheckLinks = False
End If
End Function

以下是连接窗体的代码


If CheckLinks = False Then '如果后台数据库链接错误,则重新链接后台数据库
                Dim tabDef As TableDef
                Dim FileName
                Dim box As String
               
                FileName = Application.CurrentProject.path & "\home.m__"
                If Dir(FileName) = "" Then
                 box = MsgBox("没找到数据端,请确定本系统已正确安装到你的电脑中", vbAbortRetryIgnore + vbQuestion, "^-^ 提醒!")
                If box = vbIgnore Then
                i = i + 4
                Me.Label14.Caption = "链接数据端失败"
                   Me.Label20.Visible = True
                    Me.Label20.Caption = "×"
                    Me.Label20.ForeColor = 255
                ElseIf box = vbAbort Then
                  DoCmd.Close
                  Else
                    i = i - 79
                End If
                Else
                For Each tabDef In CurrentDb.TableDefs
                If Len(tabDef.Connect) > 0 Then


                  tabDef.Connect = ";DATABASE=" & FileName & ""     
                   我想应该是这个句,怎样改成带密码的?

                tabDef.RefreshLink
                End If
                Next
                Me.Label14.Caption = "链接数据端成功"
                    Me.Label20.Visible = True
                    Me.Label20.Caption = "√"
                End If
                Else
                Me.Label14.Caption = "链接数据端成功"
                    Me.Label20.Visible = True
                    Me.Label20.Caption = "√"
                End If
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-5-25 11:22:13 | 只看该作者
本帖最后由 roych 于 2011-5-25 11:40 编辑

这是俺根据一个前辈的代码,自己做的重定位链接表,供参考(详细请看代码注释,如果无法执行的话,请重新引用Office库)。

关键在于打开数据库时应该是带密码的,而不是LZ所以为的那样。
dim dbs as dao.database
set dbs = OpenDatabase(Me.Txt_Path.Value, False, False, ";PWD=" & MyPwd)
  1. Private Sub Cmd_LnkTbl_Click()
  2. '定义后台数据库、后台链接表、后台路径以及链接表密码。
  3. Dim dbs As Database
  4. Dim Tdf As TableDef
  5. Dim MyPath As String
  6. Dim MyFile As String
  7. Dim MyPwd As String

  8. '错误处理
  9. On Error GoTo err1
  10. '初始化,表示未链接或者链接失败。
  11. LnkTbl = False
  12. '删除当前数据库的所有链接表。
  13. Set dbs = CurrentDb
  14. For Each Tdf In CurrentDb.TableDefs
  15. If Len(Tdf.Connect) > 0 Then
  16. DoCmd.DeleteObject acTable, Tdf.Name
  17. End If
  18. Next Tdf
  19. dbs.Close
  20. '显示打开对话框以获取后台路径(需要引用Office库才能执行)
  21. Set fd = Application.FileDialog(msoFileDialogFilePicker)
  22. With fd
  23. .Filters.Clear
  24. .Filters.Add "Access数据库(*.mdb)", "*.mdb"
  25. .Title = "请浏览文件"
  26. .ButtonName = "打开"
  27. .InitialView = msoFileDialogViewDetails
  28. If .Show = -1 Then
  29. '获取链接表地址和密码。
  30. Me.Txt_Path.Value = CStr(fd.SelectedItems.Item(1))
  31. '
  32. MyPwd = "后台数据库密码"
  33. '打开带密码的数据库。
  34. Set dbs = OpenDatabase(Me.Txt_Path.Value, False, False, ";PWD=" & MyPwd)
  35. For Each Tdf In dbs.TableDefs
  36. '如果是非隐藏的本地表就链接(隐藏表会包含系统对象表)。
  37. If Len(Tdf.Connect) = 0 And Tdf.Attributes = 0 Then
  38. DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Txt_Path.Value, acTable, Tdf.Name, Tdf.Name, False
  39. End If
  40. Next Tdf
  41. dbs.Close
  42. Set dbs = Nothing
  43. LnkTbl = True
  44. Exit Sub
  45. Else
  46. Debug.Print "用户取消"
  47. End If
  48. End With
  49. err1:
  50. LnkTbl = False
  51. MsgBox Err.Description, vbExclamation, "错误!"
  52. End Sub
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

3#
发表于 2011-5-25 12:49:37 | 只看该作者
本帖最后由 鱼儿游游 于 2011-5-25 12:56 编辑

帮你写了一个过程,看看能不能帮到你,LZ。

Sub LinkTable(strMDBFileName As String, strUserName As String, strPassword As String, strSourceTableName As String)
'
' strMDBFileName ...... 后台数据库名(MBD)
' strUserName ......... 打开数据库的用户名
' strPassword ......... 打开数据库的密码
' strSourceTableName ..要建立连接的数据表名(在后台数据库中)
'
' 作者:鱼儿游游
' 时间:2011.05.25
'
   Dim strConnect          As String      '连接字串
   Dim dbs                 As Object      'Database
   Dim tdf                 As Object      'DAO.TableDef
   Dim strLocalTableName   As String      '连接表的名称
   
    '定义连接字串
   strConnect = "MS Access" & _
                 ";DATABASE=" & strMDBFileName & _
                 ";UID=" & strUserName & _
                 ";pWD=" & strPassword
   Set dbs = CurrentDb
   strLocalTableName = strSourceTableName
   '删除原来的链接表
   dbs.TableDefs.Delete strLocalTableName
   '重新创建链接表
   Set tdf = dbs.CreateTableDef(strLocalTableName)
   tdf.Connect = strConnect
   tdf.SourceTableName = strSourceTableName
   dbs.TableDefs.Append tdf
   Set tdf = Nothing
   Set dbs = Nothing
   
End Sub
4#
 楼主| 发表于 2011-5-25 15:22:37 | 只看该作者
能不能改我的代码

点击这里给我发消息

5#
发表于 2011-5-25 16:08:41 | 只看该作者
本帖最后由 t小宝 于 2011-5-25 16:09 编辑

tabDef.Connect = ";DATABASE=" & FileName & "pWD=" & 密码
6#
发表于 2011-5-25 17:25:58 | 只看该作者
t小宝 发表于 2011-5-25 16:08
tabDef.Connect = ";DATABASE=" & FileName & "pWD=" & 密码

貌似PWD前面应该加分号~~

点评

回想了一下,本来是有的,但是发表后变成一个符号,后来改成小写,忘记加分号了  发表于 2011-5-25 18:34
7#
 楼主| 发表于 2011-5-25 19:42:14 | 只看该作者

tabDef.Connect = ";DATABASE=" & FileName & ";pWD=" & 密码
tabDef.RefreshLink    这句出错



没加密码之前是正常的

tabDef.Connect = ";DATABASE=" & FileName & "“
tabDef.RefreshLink

再帮我看看,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-15 20:40 , Processed in 0.090419 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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