2017-02-14 65 views
0

我需要設置並在Microsoft Access管理需求管理的多層次大綱結構2013年實現多級大綱結構

  • 輪廓需要像一個字的輪廓一樣工作,每個記錄只能有1個父母,但可以有一個或多個兄弟姐妹(兄弟姐妹順序很重要),0可以有很多孩子。
  • 需要儘可能多地支持大綱級別,當前數據超過15個級別,但在可能的情況下正在減少。
  • 需要能夠確定一個記錄是否有孩子,有兄弟姐妹,以及它的父母是什麼。
  • 需要能夠刪除記錄時記錄的所有子項。
  • 需要能夠在大綱結構中的記錄之後或之下添加新記錄
  • 需要能夠在大綱結構中添加,刪除,複製和移動完成時對輪廓重新編號。

目前的方法是包含一個唯一的ID,用於輪廓#的每個單獨的等級#15的數字字段,並且使用排序的數字字段的組織進入輪廓順序的表。

運行到幾個問題,與此相關的情況:

  1. 這是最好的數據結構的方法或我應該搬到概括信息到一個單獨的表?
  2. 假設我處於一個帶輪廓順序排序的查詢中,是否可以編寫一個VBA函數作爲計算列以確定記錄的父項,如果它有兄弟並且它有子項。
  3. 在vba中執行sql select以查詢與計算列相同的表/查詢是否可以/實際地獲取記錄父,孩子,兄弟姐妹作爲計算列?
  4. 是否可以使用數據觸發器來支持這個大綱結構的任何管理。大綱結構的

例子: 1 1.1 1.1.1 1.1.2 1.1.2.1 1.1.2.2 1.1.3 2 2.1 2.2 2.3 2.3.1 2.3.1.1 2.3.1.1.1

回答

0

這不會是在訪問所有瑣碎。爲了在級別數量上有最大的靈活性,我不會爲級別數字使用單獨的字段,而是會使用具有列ID,NodeNumber,OutlineNumber,ParentID的自引用表(NodeNumber將是表示該記錄的哪個兄弟一個給定的父 - 1,2,3, - 和OutlineNumber將是這個記錄的完整大綱參考 - 1.2.1,1.2.2,1.2.3)。您將使用ParentID來標識記錄的父項;查詢具有相同ParentID的所有記錄以查找兄弟;查詢記錄ParentID =當前記錄的ID以查找子項。你將不得不編寫一些嚴重的VBA代碼來控制插入,更新和刪除,並且絕對不要讓人們手動將數據添加到表中。不幸的是Access沒有數據觸發器。

[編輯]顯然我錯了! Access與SQL-Server的「觸發器」功能具有相同的功能,稱爲data macro,但我從未使用它。也許這可以幫助你?

+0

感謝您提供的信息,我同意這不是微不足道的。我已經看到了一種類似於您所描述的我們也使用的開源工具中使用的方法。不幸的是,該工具有一個損壞的大綱結構的代表,事實上,我已經必須找到並修復與其相關的代碼的2個錯誤。它並沒有使這個概念失效,而是說明了這種類型的結構難以管理的難度。不幸的是,我在這個項目中工作的限制迫使我們不去嘗試管理大綱結構,而是將其留在用戶手中。 – Warden