2014-01-21 45 views
1

我有一個表(ID,名稱,姓氏,地址等)。所有的字段(id除外)都可以爲NULL。我想創建一個表單,我可以找到所有至少包含NULL字段的記錄。我做了一個查詢(使用查詢設計器),然後我「連接」了一個連續的表單。訪問連續表單上的動態文本框內容

在窗體的細節部分,我放置了一個文本框ID(鏈接到查詢),這樣我就可以擁有至少有一個NULL字段的所有ID。到目前爲止這麼好,它的工作。

我想通知用戶,在ID後面,哪些字段爲空。所以我把另一個文本框(名爲txt),並使控制像If isNull(Me.Name)然後Me.txt.Value =「名稱字段爲空」。它完美的作品,但僅限於第一張唱片。所有其他記錄在文本框txt中具有相同的消息。

的代碼是這樣的(當然stringW和lngth聲明)

If IsNull(Me.Name.Value) Then 
stringW = stringW & " Name field," 
End If 

.....(用於姓氏,電話號碼等相同)

lngth = Len(stringW) - 1 
stringW = Left$(stringW, lngth) 
Me.txt.Value = stringW 

看來,表單加載(我將代碼放入加載部分),它將一次控制,然後將字符串w的內容複製到每個記錄的txt文本框中。

我該如何解決它?我的意思是,我怎樣纔能有一個連續的形式的文本框,改變它的內容,通知用戶空白字段的記錄?

回答

1

此處的問題是,顯示爲連續窗體的窗體上的未綁定文本框始終會爲每條記錄顯示相同的值。任何可能應用於未綁定文本框的VBA操作都將僅使用當前記錄中的數據。

解決方法是在Access中創建一個保存的查詢,計算每條記錄的狀態,然後將查詢表單置於計算的[EmptyFields]字段。

也就是說,在[表1]樣本數據

id Name Surname Address    
-- ----- -------- --------------------- 
1 Gord Thompson 123 Main St   
2 Homer   742 Evergreen Terrace 
3   Flanders      

,你可以創建一個這樣

SELECT 
    [id], 
    [Name], 
    [Surname], 
    [Address], 
    Mid(IIf(IsNull([Name]),", Name","") & IIf(IsNull([Surname]),", Surname","") & IIf(IsNull([Address]),", Address",""),3) AS EmptyFields 
FROM Table1 

返回

id Name Surname Address    EmptyFields 
-- ----- -------- --------------------- ------------- 
1 Gord Thompson 123 Main St       
2 Homer   742 Evergreen Terrace Surname  
3   Flanders       Name, Address 

,你可以使用保存查詢該查詢爲您的表單的Record Source

2

我明白這已經過了一年多了,但我遇到了同樣的問題並找到了解決方案。

只需編寫一個函數來創建所需的字符串,該字符串使用表單中的值。因此,而不是:

Me.Name.Value 

你可以使用:

Forms!FormName!ControlName.Value 

然後簡單地使用功能的控件爲您綁定文本框。你可以通過點擊ControlSource上的「...」來實現,然後選擇「Functions」,然後選擇你的模塊,然後選擇函數本身。爲我完美工作。

+0

Thx,這適用於我。示例:向vba模塊添加以下函數以測試此操作(將顯示未綁定表單中每行的字段ID值): 「公用函數測試(form_name作爲字符串)作爲整數 test = Forms(form_name)。結束函數「。然後,您可以在連續表單中使用「= test([Name])」作爲未綁定字段來調用該函數。你當然可以做任何你想要的功能。 – Hubisan