从文本框值查看组合框值 Microsoft Access 2007

Posted

技术标签:

【中文标题】从文本框值查看组合框值 Microsoft Access 2007【英文标题】:Viewing combobox values from textbox values Microsoft Access 2007 【发布时间】:2015-04-27 18:24:40 【问题描述】:

我有一个表单(“患者并发症”),用户使用 2 个级联组合框(“catcombo”和“speccombo”)将数据输入到表单中。组合框从表中提取它们的值(“并发症”)。该表有一个并发症类别字段(例如,感染、出血、机械)。第二个字段列出特定并发症(例如,如果并发症类别是“出血”,则特定并发症可能是“GI”或“其他”)。组合框的输入被连接起来并放入表单上的文本字段(“复杂性”)。那部分工作正常。

我的表单有几个命令按钮,包括“编辑”和“保存”命令按钮。由于我不希望用户与表单上的“complication”字段进行交互,因此当单击“edit”按钮时,该字段变得不可见。相反,两个组合框变为可见并允许用户输入数据。选择“保存”时,会发生反转。两个组合框变得不可见,并发症字段变得可见并被锁定。

不幸的是,选择“编辑”时,组合框可见但显示空白(未选择或显示任何内容)。我试图让这些框显示提供给文本字段的输入。例如,如果文本字段显示“Bleeding, Other”,我希望 catcombo 框显示“Bleeding”,而 speccombo 框显示“Other”。我一直找不到任何有这种效果的东西。如果有人有任何想法,将不胜感激。

相关代码如下。如果我能提供进一步的说明,请告诉我。

Private Sub catcombo_AfterUpdate()
Me.speccombo.Requery
End Sub

Private Sub speccombo_OnCurrent()
Dim strsql As String
strsql = "SELECT [Complications]![Specific Complication] FROM tblComplications" & _
"WHERE [Complication Category]=Forms![Patient Complications]![catcombo].value"
End Sub

Private Sub speccombo_AfterUpdate()
Forms![Patient Complications]![Complication] = Me.catcombo.Value & ", " & Me.speccombo.Value
End Sub

Private Sub save_Click()
    Me.recordcount.Caption = "Record " & Me.CurrentRecord & " of " & Me.Recordset.recordcount
    Me.Patient_Initials.Visible = False
    Date_of_Complication.Locked = True
    Complication.Visible = True
    Complication.Locked = True
    comments.Locked = True
    catcombo.Visible = False
    speccombo.Visible = False
    Me.edit.Visible = True
    Me.edit.SetFocus
    Me.help.Visible = False
    Me.save.Visible = False
    Me.first.Visible = True
    Me.next.Visible = True
    Me.previous.Visible = True
    Me.last.Visible = True
    Me.addnew.Visible = True
    Me.close.Visible = True
    Me.cancel.Visible = False
End Sub

Private Sub edit_Click()
    Me.recordcount.Caption = "Record " & Me.CurrentRecord & " of " & Me.Recordset.recordcount
    Me.Patient_Initials.Visible = False
    Date_of_Complication.Locked = False
    Complication.Visible = False
    comments.Locked = False
    catcombo.Visible = True
    catcombo.Locked = False
    catcombo.Enabled = True
    speccombo.Visible = True
    speccombo.Locked = False
    speccombo.Enabled = True
    Me.cancel.Visible = True
    Me.cancel.SetFocus
    Me.edit.Visible = False
    Me.help.Visible = True
    Me.save.Visible = True
    Me.first.Visible = False
    Me.next.Visible = False
    Me.previous.Visible = False
    Me.last.Visible = False
    Me.addnew.Visible = False
    Me.close.Visible = False
End Sub

【问题讨论】:

不确定代码如何编译。这条线strsql = "SELECT [Complications]![Specific Complication] FROM tblComplications" & _ "WHERE [Complication Category]=Forms![Patient Complications]![catcombo].value" 完全没有任何作用。您的问题需要比代码更多的措辞。你能再解释一下这个问题吗? 并发症表有一个并发症类别列和一个特定并发症列。该行导致 speccombo 框仅给出属于并发症类别的值(在 catcombo 框中选择的值)。将编辑问题以尝试更清楚地解释它。 【参考方案1】:

我想通了。我在“并发症”表中添加了一个名为“输入”的字段。此字段包含输入患者记录的串联值(在上面的示例中,输入字段将是“出血,其他”)。输入字段中的值是记录在患者并发症表的“并发症”字段中的确切值。我将下面的 vba 代码添加到“编辑”命令按钮代码中。

If Not IsNull(Forms![Patient Complications]![Complication]) Then
Dim comptext As String
Dim spectext As String

comptext = DLookup("[Complication Category]", "Complications", "Input = Forms![Patient Complications]![Complication]")
catcombo.Value = comptext
spectext = DLookup("[Specific Complication]", "Complications", "Input=Forms![Patient Complications]![Complication]")
speccombo.Value = spectext
End If

这解决了我最初的问题,但后来我遇到了 speccombo 框显示它给出的最后一个值的问题。例如,如果 speccombo.value="GI" 当我单击“编辑”时,它将继续显示“GI”,直到做出另一个选择。这不是什么大问题,只是不方便。如果 catcombo 被更改,我想让 speccombo 框基本上归零。我添加了下面的代码来解决这个问题。

Private Sub catcombo_AfterUpdate()
Me.speccombo.Requery
Me.speccombo.Value = Null
End Sub

如果我需要澄清任何事情,请告诉我。

【讨论】:

以上是关于从文本框值查看组合框值 Microsoft Access 2007的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS:如何同时提交:组合框值和文本

根据组合框选择更改文本框值

Excel VBA检查各种组合框中是不是存在值,然后添加相应的文本框值

WPF组合框值和显示文本

使用组合框更改值单位时如何更新/转换数字文本框值?基于当前单位的值标准化?

访问组合框值