程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> access裡面數據表地自動重新聯接

access裡面數據表地自動重新聯接

編輯:關於Access數據庫
Access做應用程序,往往做成"數據"和"程序"兩個數據庫,"數據"數據庫中只存放數據表,"程序"數據庫中存放所有的form,query,report,module等,通過表聯接"程序"數據庫可以訪問所有"數據"數據庫中的表。

  當我們的應用程序更換存儲位置的時候往往失去正確的表聯接,造成運行錯誤。下面的一段程序可以自動找回表聯接。在我的應用中"程序"數據庫名字是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

在程序啟動或者按鈕動作中調用即可。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved