2017-04-18 80 views
0

我已經看過,並且在這裏找不到方法來執行此操作。我假設我的搜索是傾斜的,我只是錯過了,如果是這樣的話,請讓我知道。在MS Access 2010中填充空白查詢中的複雜空間

Anywhooo,我每天都從SAP出來一個大而笨重的報告。因爲它經常會有一些奇怪之處,所以我們將它導入到Access數據庫中,以便我們可以關注我們部門中需要的東西。我正在使用6個字段的組合在Access中創建主鍵。這些字段中的信息是關於我從SAP報告中獲得的唯一一致信息,但其餘數據可以被認爲是動態的,並且可能會每天都在變化。通常這是填充少量空白的問題,偶爾會改變現有的數據,並且在極少數情況下,它可能涉及從少數字段中刪除數據。

SAP報告大約有130列的數據,所以我正在尋找一種有效的方式來推出更改而不會覆蓋手動添加的人員。編輯: 這是使用它的方式。 SAP(出於我不打算進入的原因)有時會在日常報告中顯示不良數據。我們使用Access來跟蹤並輸入正確的數據,以便我們可以生成更準確的摘要。用戶輸入的內容被認爲是真實和準確的。

我們正在追蹤的交易可能需要很長時間才能完成。大多數需要大約30天才能完成。這就是爲什麼我有一天會有空白的領域,其中幾個要填補下一個。在接下來的幾天裏我們可能得不到任何東西,然後會有更多的東西被填充。這是正常的流程。

我必須解釋的是在這個過程中很早就犯了一個錯誤的奇怪場合。在某個時刻,錯誤將會破壞SAP在我們必須使用的報告中更新任何內容的能力。

我有3個字段設置,觸發我的用戶每天工作將是什麼。有一個邏輯流程,以便用戶1完成他需要做的事情,然後該記錄將顯示在用戶2的報告中。如果來自SAP的內容和我的數據庫中已存在的內容有所不同,這些字段也將停止異常報告中的常規更新過程。

我在尋找的是一些系統地填寫訪問中現有記錄的空白字段的方法。我不想覆蓋如果某個字段中有某些內容,只有空值。我可以一次在一個領域做到這一點,但每個記錄都有大約130個領域。我想知道是否有一種方法可以在1個查詢中做到這一點?

謝謝大家!我希望編輯現在更有意義

+0

如果你覺得你必須刪除數據,您必須能夠識別這些信息並將它們與其他用戶新輸入的日期分開。這是一個與編碼無關的概念性問題。 – Gustav

+0

你的問題不是很清楚,但它聽起來像你想要一個有條件的更新查詢。有時它會填寫特定領域的數據,有時會改變特定領域的數據,有時會刪除特定領域的數據。所以,它的類型取決於確定哪個是正確的情況的最佳方式。然後,將其構建到您的查詢中或編寫將創建並運行正確查詢的VBA。沒有更具體的信息,這是我能提供的最好的。 –

+0

@JohnnyBones謝謝。我重新閱讀了我的問題,但並不清楚。我會編輯。一直忙碌的一天 –

回答

1

一個簡單的谷歌「訪問SQL更新空值」可能已經yeilded你你需要什麼。但是,如果你需要做的就是填寫常量爲空字段則是這樣的:

UPDATE Table SET Table.field1 = VALUE 
WHERE Table.field2 is NULL; 

現在,如果基於這些數據對每個記錄不同;說從另一個領域的數據,那麼你可能需要編寫一些VBA來爲你建立這個值/字符串。但除此之外,如果你只是更新空字段,包括數據,然後進行簡單的UPDATE語句將基於新的信息做

編輯:

所以,如果我理解正確:你有兩個表。一個包含空白字段的表格和另一個包含所需值的表格。

如果是這樣的話,你可以使用類似UPDATE語句,而是使用一個內連接,讓你從表B中所需要的數據來填充表A

UPDATE TableA INNER JOIN TableB ON TableA.KeyField = TableB.KeyField 
SET TableA.NullField = TableB.NotNullField 
WHERE TableA.NullField Is NULL; 
+0

這就是我在問之前發現的。我在其他地方使用了其中一些更新查詢。我正在尋找一些將查看具有空值的字段的東西,並將其與具有新傳入信息的表進行比較,然後覆蓋空字段,同時保留單獨具有某些內容的字段 –

+0

我編輯了我的答案。看看是否適合你 – mattlore

+0

謝謝!我並不擅長使用SQL,但是如果我正在閱讀這個權限,它將根據內部聯接將表A與表B進行比較。 SET TableA.Nullfield = TableB.NotNullField帳戶是否適用於所有字段的所有實例?我願意強姦這件事,但這將是單調乏味的 –