使用切换按钮更新Access中的记录

时间:2014-03-17 13:30:10

标签: vba ms-access ms-access-2010

希望不是太难的问题,但我无法弄明白这一点,并且无法找到任何搜索论坛的内容。

我想将我的切换框的输出从1,2,3,4,5转换为每个按钮显示的文本。

无法在切换框属性本身找到任何设置,所以决定我必须编写一个宏/ vba来从表中执行它,但因为它对我来说很新,我在语法上挣扎。

我主要尝试在内置数据宏上执行此操作,但也通过查询和vba尝试了它仍然无法弄明白。

[暂无任何声誉,所以未被允许发布我的宏观照片]

请帮忙!使用vba,数据宏或查询的任何解决方案都很棒

修改

要具体而不是消息框我想根据选项组选择更新我的表“主要设备”中的field1这是我的最新尝试,但仍不确定如何引用选项组。我是否需要将grp设置为等于选项组,如果是,如何?它是不是形式!myform!optiongroup?

 Option Compare Database

Function MyFunc(grp As OptionGroup)

Dim rcrdset As Recordset

set grp =
Set rcrdset = Application.CurrentDb.OpenRecordset("Major Equipment", dbOpenDynaset)

Select Case grp.Value
  Case 1
    With rcrdset
    .AddNew
    ![Field1] = "Not Reviewed"
  Case 2
    .AddNew
    ![Field1] = "Reviewed"
  Case Else
    MsgBox "Error"
End Select

End Function

也刚刚实现,因为这些切换按钮将由用户更新,所以我可能需要更新而不是添加新的?

http://i59.tinypic.com/2ym8wet.jpg

1 个答案:

答案 0 :(得分:1)

您的按钮是选项组的一部分。这是你必须参考的。以下是snippet from my net search

来自您选项组的AfterUpdate()事件:

Call MyFunc(Me.MyGroup)

...将使用Select Case进行评估:

Function MyFunc(grp As OptionGroup)

Select case grp.Value
  Case 1
    MsgBox "Option value is 1."
  Case 2
    MsgBox "Option value is 2."
  Case Else
    MsgBox "Huh?"
End Select

End Function

如果你对VBA全新,那么这里有六个要学习的东西,但它们会很好地为你服务。 VBA提供的启动比宏看起来不那么友好,但我可以告诉你未来有更多的冒险,我建议你跳过宏。对于大多数需求,VBA将更好地为您服务;当你需要建议时,它更容易麻烦拍摄或提供细节。

要将此转换为有用的函数,您将填充字符串变量而不是引发消息框。然后,您可以使用字符串变量执行诸如运行更新查询之类的操作。您最新的编辑建议您选择以下内容:

strSQL = "UPDATE [Major Equipment] " _
   & "SET Field1='" & strUserSelection & "'  " _
   & "WHERE MyID=" & lngThisRecord 
DoCmd.RunSQL strSQL

您的上一次编辑建议使用DAO记录集。我觉得你可能对谦卑的DoCmd很好。少学习。你可以在良好的访问中找出查询的原型;然后切换到SQL View并将查询粘贴到您的VBA模块中。如上所示插入变量,注意引号。如果它不起作用,请使用Debug.Print获取strSQL的值并将其恢复到良好的“访问权限”,您可以在其中找到它的形状;用你的发现来改善VBA。