您無法提供足夠的有關您的要求的信息以給出明確的答案,因此這裏有一些想法。
我在結構的第一次嘗試是:
| Parents | Children |
1 | 2 | 2 4 6 |
2 | 1 2 4 | 1 2 3 |
3 | 2 4 | 5 |
4 | 1 | 2 3 |
5 | 3 | |
6 | 1 | |
也就是說,對於每個項目,我會家長的名單和兒童的名單。我會考慮創建這種結構的努力,並考慮從這種結構中我能夠輕鬆回答所需的問題。這不是一個手動構建的困難結構,因此宏觀構建不應該是一個困難的結構。你想知道兩個項目是否有相同的孩子。這可以通過檢查這兩個項目的兒童列表來快速確定。
您需要針對此結構的計劃用途進行全面審覈。不過,目前這種結構看起來令人滿意。
在您的表中,這些項目的標識符是沒有間隙的數字1到6。如果這是代表真實的數據,我可能會定義一個用戶類型和保存數據作爲一個數組:
Type utItem
Parents() As Long
Children() as Long
End Type
Dim Items() as utItem
如果真正的標識符是字符串或散在的數字,我相信我會去的字典。對於每一個條目,關鍵將是標識符,並且該項目將是一對數組:一個給父母,一個給孩子。
提案2
附加信息表明這樣的結構是您所需要的:
Prnt | D?| Children
ABC | | BBC BBD FGI FGJ KLM
STU | D | BBC BBD FGI FGJ KLM
GHI | D | BBC BBD FGI FGJ KLM
ABD | | BBC FGJ
FGH | D | BBC FGI FGJ KLM
ABE | | BBC FGI FGJ KLM
的三個字母標識符表示文件名。真正的文件名會更長,但沒關係。
對於每個家長,孩子們都按字母順序排列。然後按照父母順序不重要的孩子的標識符對列表進行排序。例如,STU和GHI有相同的孩子。如果該列表是由孩子然後是父母排序的,GHI行將排在第一位。如果重要的是讓GHI排第一位,那麼您需要添加此要求。
第二列中的D表示該行與前一行具有相同的子級。
此列表中沒有任何內容表明ABC是否具有其自己的父代或父代。這些信息在建立這份清單時可能會有所幫助,但一旦清單完成後就不需要了。
您想將此數據加載到PDM系統。您可以將項目ABC及其子項添加到PDM系統,但不能添加STU,因爲它具有相同的子項。我不明白。你不能忽略項目STU,因爲它可能有父母引用它。
將數據加載到PDM系統將是一次性練習。創建上述結構不可能非常慢,但不一定要閃電般快。例如,五分鐘可能是美妙的,四十五分鐘可以接受,但二十小時是不可接受的。
項目1有項目2作爲一個孩子。第2項作爲孩子有第1項。第2項本身就是一個孩子,這不是一個樹狀結構。 –
順便說一句:兒童的複數是兒童。如果英文拼寫一致,我們將如何使它難以學習。什麼:「我想知道,如果我移動兩個頂級父母,他們是否有相似的孩子?這應該是可能的,從任何級別。」?移動與擁有類似孩子有什麼關係?你如何調和「頂級」和「任何級別」? –
同意@TonyDallimore。無法理解你想要達到的目標。也許一個期望的結果的圖片將有所幫助。 – CMArg