我有一张桌子(身份证,姓名,姓氏,地址等)。所有字段(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
似乎表单加载(我把代码放在加载部分中),它使控件一次,然后在每个记录的txt文本框中复制stringW的内容。
我该如何解决?我的意思是,如何在连续的表单中创建一个文本框来更改其内容,通知用户记录的空白字段?
答案 0 :(得分:2)
我知道这已经有一年多了,但我遇到了同样的问题并找到了解决方案。
只需编写一个创建所需字符串的函数,该函数使用表单中的值。所以而不是:
Me.Name.Value
你会使用:
Forms!FormName!ControlName.Value
然后只需将该函数用作未绑定文本框的ControlSource。你可以点击" ..."在ControlSource上,然后选择" Functions",然后选择你的模块,然后选择函数本身。适合我。
答案 1 :(得分: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
。