2016-10-02 49 views
0

我目前有一份報告,列出各種任務的步驟並跟蹤修訂計數。每個頁面都是一項任務,包含所有步驟。報告末尾是一個修訂歷史記錄,它將列出更改修訂計數的內容。我有兩個查詢報告,一個用於生成報告數據,另一個用於生成修訂歷史記錄。使用VBA將Access報表字段中的值與查詢進行比較

我需要做的是顯示哪些任務在其上發生了變化。我想通過將每個報告頁面上的Task_ID與修訂歷史查詢中找到的Task_ID進行比較來實現此目的。

我已經嘗試了dlookups和dcounts的幾個變種沒有任何運氣。每當我監視代碼時,它都會將其視爲錯誤並將其結束。

If DLookup("[Task_ID]", "[qry_revision_history_conversions]") = [Reports]![rpt_WI_Book].[Report]![Task] Then 
[Reports]![rpt_WI_Book].[Report]![Rev_Change].Visible = False 

這可能是一件非常簡單的事情,我錯過了,但我似乎無法包圍我的頭。

這是我用來使它工作的代碼。

Dim LookupTask As Variant 
Dim lngRed As Long, lngYellow As Long, lngWhite As Long 
lngRed = RGB(255, 0, 0) 
lngBlack = RGB(0, 0, 0) 
lngYellow = RGB(255, 255, 0) 
lngWhite = RGB(255, 255, 255) 

LookupTask = DLookup("[Task_ID]", "[qry_task_check]", [Reports]![rpt_WI_Book].[Report]![Text474]) 

If LookupTask = [Reports]![rpt_WI_Book].[Report]![Text474] Then 
    [Reports]![rpt_WI_Book].[Report]![Text474].BackColor = lngYellow 

Else 
[Reports]![rpt_WI_Book].[Report]![Text474].BackColor = lngWhite 
End If 
+0

你在'DLookUp()'中沒有標準,因此它總是會返回查詢的第一個* TaskID *。另外,數據類型是否對齊?是子報表控件,*任務*,像ID一樣的整數? – Parfait

回答

1

不確定您的表中的字段究竟是什麼,但也許我可以假設您嘗試將TaskID與Report Task字段進行匹配?

the DLookup docs

如果沒有供應的標準值,查閱函數返回一個隨機值

使用內部使用DLookup你的條件,然後檢查是否爲空:

Dim LookupTask as Variant 

LookupTask = DLookup("[Task_ID]", "[qry_revision_history_conversions]", "[Task_ID] = " & [Reports]![rpt_WI_Book]![Task]) 

If Not IsNull(LookupTask) Then 
    [Reports]![rpt_WI_Book]![Rev_Change].Visible = False 
End If 
+0

我試過這段代碼,它沒有幫助。我應該詳細闡述,但報告中的「任務」字段由單獨的查詢生成,並且報告的每個部分都將列出每個任務。我正在運行的查詢可能只有一個任務ID或多個,具體取決於它最近是否發生了更改。正因爲如此,我只希望在qry_revision_history_conversions中只顯示任務ID的情況下顯示圖像。 – vxd128

+0

你是對的 - 你應該在你的問題中包括這些重要的細節 – dbmitch

+0

你可以讓我指出正確的方向,但我只需要創建一個額外的查詢,做一些很好的修改,現在它已經啓動並運行。另外它還有助於在工作時不會發燒。 – vxd128

相關問題