access中链接表的问题
2018-09-06 11:33
一个使用asp和mdb的站点,某个mdb中使用了链接表,链接到当前目录的另一个mdb中的表,这样可以达到数据共享。
我觉得解决办法有:
一种,在本机上创建与网上空间完全相同的目录结构。但这很麻烦,特别是经常要换网站的话。
一种,如何让链接表使用相对路径,就是链接到当前目录下的那个mdb文件?(对了,access很弱智,链接表记录的是绝对路径)。
还一种,如何通过编程(asp或者本地vba)来实现对链接表的链接的修改?(又对了,access还是弱智,更新链接表我只能使用手工更新,一定要找到那个路径下的mdb才行!可本地路径和网上不一样呀)
谁能告诉我如何实现上面的后两种方法?
---------------------------------------------------------------
以下是我自己在用的adox代码,只为了证明我说的access有此功能(说句不好听的:这关accessp事啊?这是ado模型该解决的问题。而且你也提错地方了,提到asp那一块更合适),做access编程的都应该看得懂,如果你看不懂我也只能说遗憾了。
PublicFunctionNewLinkedExternalTableMdb()
DimstrTargetDB()AsString
DimstrProviderString()AsString
DimstrSourceTbl()AsString
DimstrLinkTblName()AsString
DimcatDBAsADOX.Catalog
DimtblLinkAsADOX.Table
DimtmpLinkAsADOX.Table
DimiAsInteger
DimjAsInteger
SetcatDB=NewADOX.Catalog
i=catDB.Tables.Count
ReDimstrTargetDB(i)
ReDimstrProviderString(i)
ReDimstrSourceTbl(i)
ReDimstrLinkTblName(i)
i=1
ForEachtmpLinkIncatDB.Tables
IftmpLink.Properties(JetOLEDB:CreateLink)Then
IfTrim(tmpLink.Properties(JetOLEDB:RemoteTableName))<>Then
strTargetDB(i)=tmpLink.Properties(JetOLEDB:LinkDatasource)
strProviderString(i)=tmpLink.Properties(JetOLEDB:LinkProviderString)
strSourceTbl(i)=tmpLink.Properties(JetOLEDB:RemoteTableName)
DoWhileInStr(1,strTargetDB(i),/)<>0
strTargetDB(i)=Mid(strTargetDB(i),InStr(1,strTargetDB(i),/)+1,Len(strTargetDB(i)))
Loop
strTargetDB(i)=CurrentProject.Path&/&strTargetDB(i)
i=i+1
EndIf
EndIf
Next
j=i-1
Fori=1Toj
catDB.Tables.DeletestrLinkTblName(i)
SettblLink=NewADOX.Table
WithtblLink
.Name=strLinkTblName(i)
Set.ParentCatalog=catDB
.Properties(JetOLEDB:CreateLink)=True
.Properties(JetOLEDB:LinkDatasource)=strTargetDB(i)
.Properties(JetOLEDB:LinkProviderString)=strProviderString(i)
.Properties(JetOLEDB:RemoteTableName)=strSourceTbl(i)
EndWith
catDB.Tables.AppendtblLink
SettblLink=Nothing
Next
SetcatDB=Nothing
EndFunction