根据带有if条件的多个文本框值将值分配给表单上的文本框-MS ACCESS

Posted

技术标签:

【中文标题】根据带有if条件的多个文本框值将值分配给表单上的文本框-MS ACCESS【英文标题】:Assign value to a text box on form based on multiple text boxex value with if condition - MS ACCESS 【发布时间】:2015-06-03 11:00:25 【问题描述】:

让我解释一下,我的表单上有如下字段(文本框)

textbox1 = can hold Yes or NO
textbox2 = can hold Yes or NO
textbox3 = can hold Yes or NO
textbox4 = can hold Yes or NO

textboxResult 仅保存值为“是”的文本框的标签(标题)的连接值

我已经尝试了许多可能的解决方案(在我的脑海中),包括以下但没有运气。下面的代码也用 OR 运算符进行了测试。

If Me.textbox1.Value = "Yes" And Me.textbox2.Value = "Yes" And _
               Me.textbox3.Value = "Yes" And Me.textbox4.Value = "Yes" Then
    Me.textboxResult.Value = Me.Label1.Caption & "," & 
    Me.Label2.Caption & "," & Me.Lable3.Caption & "," & 
    Me.Label4.Caption
Else
    Me.textboxResult.Value = "NA"
End If

我想为那些值为 YES 的文本框分配标签的标题。请帮忙

【问题讨论】:

您在说什么 Caption 的文本框? Texboxes 没有标题!你只提到一次Labels。您应该清楚LabelTextbox 之间以及ValueCaption 之间的区别! AND 包含一个示例预期结果 AND “但没有运气”是什么意思?它是否不起作用,是否崩溃,是否无法到达 if-body? 感谢 luk2302 及时回复。我也编辑了问题正文和代码以便清楚地理解。它可以工作,但不是我想要的工作方式。我只想连接(加入)那些带有 YES 值的文本框标签。 【参考方案1】:

如果我理解正确,您需要所有 TextBox 标签的连接值。所以一个批量AND 可能不是选项,也许检查每个控件。类似的东西。

Dim txtResult As String

If Me.textbox1 = "Yes" Then _
    txtResult = txtResult & Me.textbox1.Controls.Item(0).Caption & ","

If Me.textbox2 = "Yes" Then _
    txtResult = txtResult & Me.textbox2.Controls.Item(0).Caption & ","

If Me.textbox3 = "Yes" Then _
    txtResult = txtResult & Me.textbox3.Controls.Item(0).Caption & ","

If Me.textbox4 = "Yes" Then _
    txtResult = txtResult & Me.textbox4.Controls.Item(0).Caption & ","

If Len(txtResult) > 0 Then
    Me.textboxResult = Left(txtResult, Len(txtResult)-1)
Else
    Me.textboxResult = "NA"
End If

注意 - Me.TextBoxName.Controls.Item(0) 将返回带有TextBoxName 的关联标签。如果文本框没有关联,那么您可能会遇到错误。


编辑 - 编辑后,如果您只是想使用标签的标题,只需将 Me.textbox.Controls(0).Caption 替换为 Me.LableName.Caption

【讨论】:

这就是我所说的类似解决方案:D 很高兴为您提供帮助。 :) 祝你好运【参考方案2】:

从你的评论来看,你不应该为每个文本框做一个组合的 if,而是 4 个单独的 if:

Dim txt As String
txt = ""
If Me.textbox1.Value = "Yes" Them _
    txt = txt & Me.Label1.Caption & ", "

If Me.textbox2.Value = "Yes" Then _
    txt = txt & Me.Label2.Caption & ", "

If Me.textbox3.Value = "Yes" Then _
    txt = txt & Me.Label3.Caption & ", "

If Me.textbox4.Value = "Yes" Then _
    txt = txt & Me.Label4.Caption & ", "

If Len (txt) > 0 Then
    txt = Left(txt, Len(txt) - 2)
Else 
    txt = "NA"
End If

Me.textboxResult = txt

【讨论】:

绝对或类似伟大的思想相似 ;) 也感谢 luk2302 的帮助和解决方案 :)

以上是关于根据带有if条件的多个文本框值将值分配给表单上的文本框-MS ACCESS的主要内容,如果未能解决你的问题,请参考以下文章

熊猫,我怎样才能避免使用 iterrow (如何根据来自另一个数据帧的值将值分配给数据帧中的新列)

粘贴文本框值以访问数据库

如何从另一个输入文本字段Javascript中输入的值将值设置为输入隐藏字段

VBA根据选项按钮选择更新文本框值

将值分配给由字符串名称动态确定的淘汰赛 observable

清除文本框值 onclick 并显示 onblur