2013-10-15 40 views
1

我的用戶正在使用已分離爲前端(DB.accdb)和後端(DB_be.accdb)的Access數據庫。由於他們偶爾需要移動這些文件,我寫了一個函數在啓動時重新鏈接表。到後端的舊鏈接仍在前端但無法訪問,無法更新它們

現在,不知何故,他們設法打破文件,我真的不知道如何。當爲表格調用RefreshLink函數時,總會有運行時錯誤(實際上有不同的錯誤)。

例如,錯誤3022:

您請求對錶的改變沒有成功,因爲它們將在索引,主鍵或關係中創建重複的值。更改字段或包含重複數據字段的數據,刪除索引或重新定義索引以允許重複項,然後再試一次

我以獨佔方式打開前端,刪除表和手動重新鏈接它們。但是在他們的名字後面加上1:someTable - >someTable1。似乎表格已經存在?也許他們仍然在系統表中?因爲重新連接會在那裏插入鏈接表的名字,所以顯然會有幾個重複名稱的表。

我打開了連接管理器,並確實列出了我剛剛添加的新連接管理器中舊的錯誤鏈接。

  • 我不能刷新舊鏈接 - 「重複值」等
  • 我可以刷新新的鏈接,但我當然不能重命名錶(除去1),因爲這些名字在某種程度上表已經存在。
  • 我無法刪除舊錶格,因爲它們不顯示在側邊欄中!即使打開「顯示系統對象」等,它們也不會出現。
  • 我無法刪除新鏈接,然後更新舊鏈接,因爲連接管理器按鈕顯示爲灰色。大概訪問認爲沒有表格。

,當我嘗試壓縮&修復數據庫,它再次使用舊的鏈接...

我怎樣才能完全刪除以前的鏈接的所有痕跡?

+0

在前端數據庫中,如果您執行'SELECT [Name] FROM MSysObjects WHERE [Type] = 6',您會看到鏈接表(和* only *鏈接表)的列表嗎? –

+0

我可以看到新鏈接的名稱(''someTable1''等等)和其他一些條目''〜TMPCLPnum'',其中''num''是一個6位數的數字。 – user42179

+0

我認爲''〜TMPCLP''記錄是舊鏈接的遺蹟?有10個,但我有11個桌子。 – user42179

回答

1

從似乎是在老前端數據庫文件中的某些損壞中恢復,解決辦法是

  • 創建一個新的空.accdb文件,
  • 進口所有查詢,表單,等等從舊的前端文件轉換爲新的前端文件,然後在新的前端文件中創建適當的錶鏈接。