一個使用asp和mdb的站點,某個mdb中使用了鏈接表,鏈接到當前目錄的另一個mdb中的表,這樣可以達到數據共享。
faq-it.org/delphi_win_sdk/問題來了,當將網站發布到網站的時候,因為網上空間路徑和我本機不同,所以鏈接表失敗,網頁當然也不能打開。
我覺得解決辦法有:
一種,在本機上創建與網上空間完全相同的目錄結構。但這很麻煩,特別是經常要換網站的話。
一種,如何讓鏈接表使用相對路徑,就是鏈接到當前目錄下的那個mdb文件?(對了,access很弱智,鏈接表記錄的是絕對路徑)。
還一種,如何通過編程(asp 或者本地vba)來實現對鏈接表的鏈接的修改?(又對了,access還是弱智,更新鏈接表我只能使用手工更新,一定要找到那個路徑下的mdb才行!可本地路徑和網上不一樣呀)
誰能告訴我如何實現上面的後兩種方法?
---------------------------------------------------------------
以下是我自己在用的adox代碼,只為了證明我說的access有此功能(說句不好聽的:這關access p事啊?這是ado模型該解決的問題。而且你也提錯地方了,提到asp那一塊更合適),做access編程的都應該看得懂,如果你看不懂我也只能說遺憾了。
Public Function NewLinkedExternalTableMdb()
Dim strTargetDB() As String
Dim strProviderString() As String
Dim strSourceTbl() As String
Dim strLinkTblName() As String
Dim catDB As ADOX.Catalog
Dim tblLink As ADOX.Table
Dim tmpLink As ADOX.Table
Dim i As Integer
Dim j As Integer
Set catDB = New ADOX.Catalog
catDB.ActiveConnection = CurrentProject.Connection
i = catDB.Tables.Count
ReDim strTargetDB(i)
ReDim strProviderString(i)
ReDim strSourceTbl(i)
ReDim strLinkTblName(i)
i = 1
For Each tmpLink In catDB.Tables
If tmpLink.Properties("Jet OLEDB:Create Link") Then
If Trim(tmpLink.Properties("Jet OLEDB:Remote Table Name")) <> "" Then
strLinkTblName(i) = tmpLink.Name
strTargetDB(i) = tmpLink.Properties("Jet OLEDB:Link Datasource")
strProviderString(i) = tmpLink.Properties("Jet OLEDB:Link Provider String")
strSourceTbl(i) = tmpLink.Properties("Jet OLEDB:Remote Table Name")
Do While InStr(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
End If
End If
Next
j = i - 1
For i = 1 To j
catDB.Tables.Delete strLinkTblName(i)
Set tblLink = New ADOX.Table
With tblLink
.Name = strLinkTblName(i)
Set .ParentCatalog = catDB
.Properties("Jet OLEDB:Create Link") = True
.Properties("Jet OLEDB:Link Datasource") = strTargetDB(i)
.Properties("Jet OLEDB:Link Provider String") = strProviderString(i)
.Properties("Jet OLEDB:Remote Table Name") = strSourceTbl(i)
End With
catDB.Tables.Append tblLink
Set tblLink = Nothing
Next
Set catDB = Nothing
End Function