Access 连续表单上的动态文本框内容
Posted
技术标签:
【中文标题】Access 连续表单上的动态文本框内容【英文标题】:Dynamic text box content on an Access continuous form 【发布时间】:2014-01-21 19:28:05 【问题描述】:我有一张桌子(身份证、姓名、姓氏、地址等)。所有字段(id 除外)都可以为 NULL。我想制作一个表格,我可以在其中找到所有至少具有 NULL 字段的记录。我做了一个查询(使用查询设计器),然后我将一个连续的表单“链接”到它。
在表单的详细信息部分,我放置了一个文本框 ID(链接到查询),这样我就可以拥有至少有一个字段为 NULL 的所有 ID。到目前为止一切顺利,它有效。
我想在 ID 之后通知用户哪些字段是空白的。所以我放了另一个文本框(名为 txt)并制作了像 If isNull(Me.Name) then Me.txt.Value ="Name field is blank" 这样的控件。它完美地工作,但仅适用于第一条记录。所有其他记录在文本框 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】:我知道这已经有一年多了,但我遇到了同样的问题并找到了解决方案。
只需编写一个函数来创建所需的字符串,该字符串使用表单中的值。所以而不是:
Me.Name.Value
你会使用:
Forms!FormName!ControlName.Value
然后只需将该函数用作未绑定文本框的 ControlSource。您可以通过单击 ControlSource 上的“...”来执行此操作,然后选择“功能”,然后选择您的模块,然后选择功能本身。非常适合我。
【讨论】:
谢谢,这对我有用。示例:将以下函数添加到 vba 模块以对此进行测试(将在未绑定的表单中单独显示每行的字段 id 的值):“公共函数测试(form_name As String)As Integer test = Forms(form_name).id。价值结束功能”。然后,您可以在连续表单中使用“=test([Name])”,让未绑定的字段调用该函数。你当然可以在函数中做任何你想做的事情。【参考方案2】:这里的问题是,显示为连续表单的表单上的未绑定文本框将始终为每条记录显示相同的值。您可能应用于未绑定文本框的任何 VBA 操作将仅使用当前记录中的数据。
解决方法是在 Access 中创建一个已保存的查询,计算每条记录的状态,然后将表单基于查询并将文本框绑定到计算的 [EmptyFields] 字段。
即对于[Table1]中的样本数据
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
。
【讨论】:
以上是关于Access 连续表单上的动态文本框内容的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 2010 上的可编辑文本框 - 行为正确吗?
在 MS Access 中,创建动态查询后,如何使用记录集中的相应值更新表单上的文本框?