当前位置: 首页 > 图文教程 > 数据库 > Access > access中数据表的自动重新联接

Access
如何给ODBC连接打开连接池
Access数据库与SQLserver2000的数据互导
如何在退出整个系统前提示用户
通过查询返回数据库对象的名称
Delphi中的Access技巧集
ACCESS中如何插入超级链接?
怎样用代码隐藏、最大化、最小化ACCESS的主窗口
操作系统环境 Environ 函数
ACCESS2000升迁向导“溢出”错误处理方法
如何在ACCESS中压缩当前数据库
在VB中用代码打印ACCESS报表
以指定工作组文件启动MDB文件
长期使用中型Access数据库的一点经验
显示数据库窗口的捷径
取得磁碟机之Volumn及Serial Number
ACCESS默认保存路径的修改方法
数据库设计范式
Access无需DSN文件快速连接SQL Server方法
用Access 2000进行班级管理
启动命令行选项

Access 中的 access中数据表的自动重新联接


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 35 ::
收藏到网摘: n/a

用access做应用程序,往往做成"数据"和"程序"两个数据库,"数据"数据库中只存放数据表,"程序"数据库中存放所有的form,query,report,module等,通过表联接"程序"数据库可以访问所有"数据"数据库中的表。

当我们的应用程序更换存储位置的时候往往失去正确的表联接,造成运行错误。下面的一段程序可以自动找回表联接。在我的应用中"程序"数据库名字是stockMgr.mdb,"数据"数据库名字是stock-Data.mdb
注意: 该程序仅限于"程序"和"数据"存放在同一个目录而且是对应单个"数据"文件的情况。

Function ReAttachTable()
Dim MyDB As Database, MyTbl As TableDef
Dim cpath As String
Dim datafiles As String, i As Integer

On Error Resume Next
Set MyDB = CurrentDb
cpath = trimFileName(CurrentDb.Name)
datafiles = "stock-data.mdb"
DoCmd.Hourglass True
For i = 0 To MyDB.TableDefs.Count - 1
Set MyTbl = MyDB.TableDefs(i)
If MyTbl.Attributes = DB_ATTACHEDTABLE And Left(MyTbl.Connect, 1) = ";" Then
MyTbl.Connect = ";DATABASE=" & cpath & datafiles
MyTbl.RefreshLink
If Err Then
If vbNo = MsgBox(Err.description & ",继续吗?", vbYesNo) Then Exit For
End If
End If
Next i
DoCmd.Hourglass False
msgbox "Tables relink finish."
End Function

'绝对路径中去掉文件名,返回路径
Function trimFileName(fullname As String) As String
Dim slen As Long, i As Long
slen = Len(fullname)
For i = slen To 1 Step -1
If Mid(fullname, i, 1) = "\" Then
Exit For
End If
Next
trimFileName = Left(fullname, i)
End Function

在程序启动或者按钮动作中调用即可