设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[表] 如何自动更新链接表

[复制链接]
跳转到指定楼层
1#
发表于 2013-1-23 21:51:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   在ACCESS中 想通过加入一个按钮 自动进行链接表更新 请问需要怎么弄 有没有宏可以实现这个功能的 谢谢各位大神了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2013-1-24 08:06:32 | 只看该作者
宏我没用过..模块是在用的.可以参考下.

这个是用链接表方式的重链模块

Public Function CheckLinks() As Boolean
' 检查到后台数据库的链接;如果链接存在且正确的话,返回 True 。
   
    Dim dbs As Database, rst As Recordset
   
    Set dbs = CurrentDb

    ' 打开链接表查看表链接信息是否正确。
    On Error Resume Next
    Set rst = dbs.OpenRecordset(CheckTableName)
    rst.Close

    ' 如果没有错误,返回 True 。
    If Err = 0 Then
        CheckLinks = True
    Else
        CheckLinks = False
    End If
   
End Function

Private Function RefreshLinks(strFileName As String) As Boolean
' 刷新到提供表的数据库的链接。如果成功的话返回 True 。

    Dim dbs As Database
    Dim tdf As TableDef

    ' 循环处理此数据库的所有表。
    Set dbs = CurrentDb
    For Each tdf In dbs.TableDefs
        ' 如果表有一个连接串,那么该表是一个链接表。
        If Len(tdf.connect) > 0 Then
            tdf.connect = ";DATABASE=" & strFileName & "WD=" & TablePassword
            Err = 0
            On Error Resume Next
            tdf.RefreshLink         ' 重新链接该表。
            If Err <> 0 Then
                RefreshLinks = False
                Exit Function
            End If
        End If
    Next tdf

    RefreshLinks = True        ' 完成重链接。
   
End Function

Public Function RelinkTables() As Boolean
' 尝试刷新连到“后台数据库”数据库的链接。
' 如果成功,返回 True 。

    Dim strFileName As String
    Dim intError As Integer
    Dim strError As String
   
    Const conMaxTables = 8
    Const conNonExistentTable = 3011
    Const conNotNorthwind = 3078
    Const conNwindNotFound = 3024
    Const conAccessDenied = 3051
    Const conReadOnlyDatabase = 3027
   
    If chonglianjie = False Then
        ' 不能找到“后台数据库”,所以显示打开文件对话框。
        MsgBox "系统检测到数据表:“" & conBackAppTitle & "”链接异常!" & vbCr & _
                "您必须重新定位:“" & conBackAppTitle & "”数据库才能正常使用……", vbExclamation, Title
    End If
    strFileName = GetFileName(3, 1, "取消", CurrentProject.Path & "\Data\data.mdb")
   
    If Dir(strFileName) <> conBackAppTitle Or strFileName = "取消" Then
        strError = "抱歉, 您必须重新定位:“" & conBackAppTitle & "”数据库才能正常使用……"
        GoTo Exit_Failed
    End If

    ' 修复链接。
    If RefreshLinks(strFileName) Then
        RelinkTables = True
        Exit Function
    End If
   
    ' 如果失败, 显示一个错误消息。
    Select Case Err
    Case conNonExistentTable, conNotNorthwind
        strError = "文件 '" & strFileName & "' 不包含所要求的数据库表。"
    Case Err = conNwindNotFound
        strError = "直到您定位了“" & conBackAppTitle & "”数据库,您才能正常使用……"
    Case Err = conAccessDenied
        strError = "因为 " & strFileName & " 是只读的或只读共享的,您不能打开它。"
    Case Err = conReadOnlyDatabase
        strError = "因为本程序是只读的或只读共享的,您不能重新链接表。"
    Case Else
        strError = Err.Description
    End Select
   
Exit_Failed:
    If strFileName <> "取消" Then MsgBox strError, vbCritical, Title
    RelinkTables = False
   
End Function


3#
发表于 2013-1-24 11:03:59 | 只看该作者
记得红尘的通用系统里面就有这么一个模块,楼主可以下载来研究下。
4#
发表于 2013-1-24 20:44:30 | 只看该作者
更新连接表如何办到的啊
























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

本版积分规则

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

GMT+8, 2024-5-14 13:33 , Processed in 0.096541 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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