2013-10-30 124 views
-1

我的數據庫中有我的記錄問題,所以我有一個約260,000條記錄的模板,每條記錄有3個標識列,以確定記錄來自哪個時間段和位置:一年,一個月,一個地區。然後,用於標識特定項目的信息是TagName和Description。我遇到的問題是,當有人向這個數據庫輸入數據時,他們爲同一個設備輸入了不同的描述,我知道這是因爲標籤名稱是相同的。我可以編寫將通過數據庫的代碼,找到具有相同標記名稱的項目,並使用其中一個描述來替換那些不同的數據庫以獲得更一致的數據庫。還有一些設備沒有標籤名稱,所以我們希望避免「」情況。訪問2010數據庫Clenup

也向前邁進未來我已經添加了更多列到數據庫以允許更多的信息被檢索,有沒有一種方法可以將數據回填到較舊的記錄中,一旦我知道它們具有相同的標記數據庫清理後的名稱和描述?在此先感謝您的信息,非常感謝。

我認爲這必須通過查找帶有該描述的第一條記錄並使用變量將該描述分配給具有相同標記名稱的所有其他項來修改記錄的VBA來完成?我只是不確定正確的VBA語法來解決這個問題。我假設一個類似的方法將用於回填過程?

回答

0

你的問題是相當廣泛的,多方面的,所以我會在步驟回答關鍵部分:

我遇到的問題是,當有人進入數據到這個 數據庫他們進入不同的描述同一設備,我知道這個,因爲標籤名稱是相同的。

雖然可以解決了這些矛盾很輕鬆地帶着幾分的SQL代碼,這將是更好地避免這些矛盾擺在首位是可能的:

  1. 創建新表,讓我們稱之爲'標籤',包含TagName和TagDescription字段,並將TagName設置爲主鍵。確保這兩個字段的「必需」設置爲「真」並允許零長度爲「假」。

  2. 使用所有可能的標籤填充此新表 - 您可以使用Access術語中的一次性「附加查詢」(SQL中的INSERT INTO語句)執行此操作。

  3. 從主表中刪除標記描述列。

  4. 進入關係視圖並在兩個表之間添加一對多關係,將主表中的TagName字段鏈接到Tags表中的TagName字段。

  5. 根據需要,創建一個聚合兩個表中的數據的查詢。

還有些設備沒有標籤的名字,所以我們希望避免 「」案例。

在Access中,空字符串(「」)的概念不同於真空白或空白的概念。因此,這將是一個好主意,用null以全部替換爲空字符串(如果有的話) -

UPDATE MyTable SET TagName = Null WHERE TagName = ''; 

然後,您可以設置標記名字段的允許在表設計零長度屬性設置爲False。

也正在向未來我添加更多的列到 數據庫,以允許更多的信息被檢索

在超過表中多個列的角度來考慮較少。

我假定這將必須用VBA進行某種修改記錄

無論是VBA,SQL或Access查詢設計器(其在後臺創建SQL代碼)。就能夠通過最快的數據來處理數據而言,SQL是最好的,儘管純VBA(特別是使用DAO對象庫)可以更容易理解和遵循。

+0

感謝有關數據輸入問題的信息,這個數據庫是一箇舊的數據庫,所以我正在修復我發現的消除這些問題的不一致性,因爲我知道所有關於:數據驗證和參照完整性。 – ColdTeck

+0

@ColdTeck - 我建議把你最初發布到離散問題中的東西分開。也就是說,我仍然認爲修復數據結構可能是清理數據的最佳方式。 –