2011-11-10 79 views
2

我相信我明白正確地理解,拆分DB假定所有表將在後端和前端的其他所有表。MS Access 2003拆分數據庫與表上的FE

這是我的問題。我爲一家大公司工作,全國各地的人都在使用db。約60-65人。通常不超過4或5個。

我有一個靜態表,我用它作爲供給主表的表單上的查找表。如果我在BE上有這個靜態表格,某些人的表單加載時間可能會超過兩分鐘,這取決於他們與服務器的距離。如果我把這個靜態表放在FE上,加載時間要快4-5倍。

我的問題是;可以讓靜態表導致我的數據庫出現其他任何負面問題,或者只是「建議」所有表都在BE上?我的思維過程是,因爲我在FE上獲得瞭如此巨大的性能,所以如果我需要更改靜態表,我將分發一個新的FE。這是合理的邏輯嗎?

回答

1

當然可以。如果它只是一個靜態查找表並從後端加載它,則每次都會花費太多時間,所以將它放入前端是完全正確的。

如果你不想每次表的修改,你可以把表到後端分發新的前端,並有每個前端導入啓動時表:

'run this in the frontend on startup 
DoCmd.DeleteObject acTable, "Your_Table" 
DoCmd.TransferDatabase acImport, "ODBC", ";DATABASE=c:\backend.mdb", acTable, "Your_Table", "Your_Table", False 

(當然你必須改變你的表名稱和適當的後端路徑)

+0

+1對於啓動時導入的建議,但如果載入表單拉動數據需要2分鐘以上,則將導入運行到前端可能會嚴重減慢啓動時間。 – Taryn

+0

我幾乎期待有人說這樣的話。那麼,這取決於:-)我們不知道表格在主表單上的使用情況,當表格位於後端時需要兩分鐘才能加載。也許通過網絡導入整個表比運行一些查詢要快 - 誰知道。如果表格經常變化,也許如果他不需要經常分發新的前端,他可以用更長的啓動時間。這一切都取決於... –

+0

太好了,非常感謝您的反饋,我非常喜歡在啓動時導入查找的想法。這不是一張大桌子,但使用它的表單有一些背後的代碼,並且因爲它被鏈接了,所以它放慢了速度。好主意......謝謝! –

1

你的靜態表可以在前端。您還應該在FE中包含每個不會更改的表格,這些表格是「發佈」的一部分,例如:儀表板菜單表。
無論如何,如果你有這樣的「漫遊」用戶,我會認真考慮將數據移動到SQL Server,這可以真正減少網絡流量,並提高性能。

0

我會在FE中做一個靜態表。我現在用那些嚴格限制用戶的表格來做,而且不需要保存在BE數據庫中。然後,如果您需要添加新數據,請向用戶發佈新的FE。

我認爲它使得BE的維護更容易,因爲那樣你就沒有包含在BE中的靜態/不必要的表。我是這樣做的,一些靜態表到了FE數據庫,一些進入了SQL服務器數據庫。

這實際上取決於您認爲對用戶以及維護更容易。