Vba 如何解决MS访问选项组问题?

Vba 如何解决MS访问选项组问题?,vba,ms-access,ms-access-2013,Vba,Ms Access,Ms Access 2013,我在MS Access 2013中创建了许多选项组,并尝试根据选项组中选择的内容填充表格。因此,如果用户选择选项1,我希望在我的表中存储“文本”而不是其值ex:“1”。我在AfterUpdate()事件中尝试了以下代码,效果良好: Private Sub Frame49_AfterUpdate() Dim D As Integer Select Case Me![Frame49] Case 1 Me![Name] = "text" D = 1 Case 2

我在MS Access 2013中创建了许多选项组,并尝试根据选项组中选择的内容填充表格。因此,如果用户选择选项1,我希望在我的表中存储“文本”而不是其值ex:“1”。我在AfterUpdate()事件中尝试了以下代码,效果良好:

Private Sub Frame49_AfterUpdate()
Dim D As Integer

 Select Case Me![Frame49]
  Case 1
      Me![Name] = "text"
    D = 1
  Case 2
    Me![Name] = "text1"
  D = 2
  Case 3
    Me![Name] = "text2"
  D = 3
  Case 4
    Me![Name] = "text3"
  D = 4
  Case 5
    Me![Name] = "text4"
  D = 5
End Select
DoCmd.RunCommand acCmdSaveRecord

Rem D = Frame49.Value
End Sub
但是,当最终用户回答第一个问题并尝试回答下一个问题时,上一个问题的所有选项都会被选中。我该如何解决这个问题? 以下是文件,以了解我的意思:


提前感谢。

选项组框和相关按钮/复选框必须具有数字值。因此,OptionGroup框架必须绑定到数字类型字段。如果希望控件在文本字段中反映所选内容,则需要使用相应的数字值设置未绑定的OptionGroup frame。换句话说,将保存的文本转换回数值。代码很可能需要以当前事件的形式出现。比如:

Me.Frame49 = Switch([Name]="text",1, [Name]="text1",2, [Name]="text2",3, [Name]="text3",4, [Name]="text4",5)
或者,将数字值保存到数字字段。表格上的标签提供了等效文本。使用查找表提供报表上的文本等价物,或使用查询或文本框中的表达式计算等价物。类似于:
选择([Name]、“text”、“text1”、“text2”、“text3”、“text4”)

顺便说一句,Choose()表达式可以用来代替原始代码中的大小写结构。
我![名称]=选择(Me.Frame49,“文本”、“文本1”、“文本2”、“文本3”、“文本4”)

还建议使用单选(选项)按钮而不是复选框

其他选择是组合框和列表框,而不是选项组


建议不要使用保留字作为任何东西的名称<代码>名称是保留字。此外,在命名约定中避免使用空格和标点符号/特殊字符。

即使选项组只接受数值,您也可以通过使用if语句(例如

        If Frame5 = 1 Then orukolook = "okay"
        If Frame5 = 2 Then orukolook = "right"
        If Frame5 = 3 Then orukolook = "fine"
orukolook是您希望插入文本的文本框控件,因此如果选择选项组的第一个选项,文本“OK”将插入文本框控件,如果选择第二个选项,则文本“right”将插入


占位符oruko外观中硬编码的值,例如okay、right、fine是与选项组中每个值关联的标签。

Frame49绑定到数据库字段

当用户单击复选框时,字段的值(连同Frame49的值)设置为整数

然后将数据库字段的值更改为字符串

这将导致Frame49的值设置为该字符串

由于该值对于选项组无效,因此所有相关复选框都显示为实心黑色正方形,表示不确定状态。这与复选标记不同,因此您观察到的“上一个问题的所有选项都被选中”是不正确的

最简单的方法是使用单列列表框而不是选项组。可以调整每个列表框的大小,使其以文本字符串的形式显示所有选项

当用户单击一个“选项”进行选择时,相应的文本字符串将写入数据库,不涉及VBA代码

当用户返回到以前的记录时,列表框将全部显示正确的选择

如果不想更改窗体的外观,则必须按照其他人的建议执行,并使Frame49解除绑定,即将其控件源设置为空

然后,当您将数据库字段的值设置为文本字符串时,Frame49的值将保持为整数


如果您希望能够返回并编辑早期记录,您可以这样做,但这超出了我在此处的回答。

感谢您的快速响应,但我是新访问的,您能否给我提供有关如何设置未绑定选项组框架的更多信息。或者如何使用查找表查找报表上的文本等价物,或者使用查询或文本框中的表达式计算等价物。使用与已发布内容相反的代码设置“未绑定”选项组框架。见编辑后的答案。查询/文本框中的查找表和计算都是基本的访问功能。您是否学习过入门教程?将文本框绑定到字段将允许显示保存的文本,但选项组在导航记录时不会反映选定的值。也许这并不重要,但我想OP会喜欢的。