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

access中鏈接表的問題

編輯:關於ASP編程
一個使用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   
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved