首页 文章

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

提问于
浏览
0

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

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

不幸的是,当选择“编辑”时,组合框可见,但显示为空白(未选择或显示任何内容) . 我试图让框显示给文本字段的输入 . 例如,如果文本字段显示“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

1 回答

  • 0

    我想到了 . 我在“Complications”表中添加了一个名为“Input”的字段 . 该字段包含放入患者记录中的连接值(在上面的示例中,输入字段为“出血,其他”) . 输入字段中的值是将在患者并发症表单的“并发症”字段中记录的确切值 . 我将下面的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
    

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

相关问题