當我們的應用程序更換存儲位置的時候往往失去正確的表聯接,造成運行錯誤。下面的一段程序可以自動找回表聯接。在我的應用中"程序"數據庫名字是stockMgr.mdb,"數據"數據庫名字是stock-Data.mdb
注重:該程序僅限於"程序"和"數據"存放在同一個目錄而且是對應單個"數據"文件的情況。
FunctionReAttachTable()
DimMyDBAsDatabase,MyTblAsTableDef
DimcpathAsString
DimdatafilesAsString,iAsInteger
OnErrorResumeNext
SetMyDB=CurrentDb
cpath=trimFileName(CurrentDb.Name)
datafiles="stock-data.mdb"
DoCmd.HourglassTrue
Fori=0ToMyDB.TableDefs.Count-1
SetMyTbl=MyDB.TableDefs(i)
IfMyTbl.Attributes=DB_ATTACHEDTABLEAndLeft(MyTbl.Connect,1)=";"Then
MyTbl.Connect=";DATABASE="&cpath&datafiles
MyTbl.RefreshLink
IfErrThen
IfvbNo=MsgBox(Err.description&",繼續嗎?",vbYesNo)ThenExitFor
EndIf
EndIf
Nexti
DoCmd.HourglassFalse
msgbox"Tablesrelinkfinish."
EndFunction
'絕對路徑中去掉文件名,返回路徑
FunctiontrimFileName(fullnameAsString)AsString
DimslenAsLong,iAsLong
slen=Len(fullname)
Fori=slenTo1Step-1
IfMid(fullname,i,1)=""Then
ExitFor
EndIf
Next
trimFileName=Left(fullname,i)
EndFunction
在程序啟動或者按鈕動作中調用即可。