使用表单单击按钮VBA代码

时间:2019-09-22 17:39:22

标签: vba ms-access access-vba

我从Excel移出并开始使用MS Access创建我的个人漫画数据库。我一直试图创建VBA代码,以在单击时使用按钮将新记录添加到表中。我还尝试添加新行,但似乎只是在更改SAME记录。

我尝试了youtube教程中的一些方法,但似乎都没有使用按钮,因此我发现很难将按钮集成到代码中以进行协同工作。

Private Sub cmdSaveNew_Click()
Dim R As Recordset

Set R = CurrentDb.OpenRecordset("SELECT * FROM [Issues]")

R.Addnew
R![Title] = Me.Title.Value
R.Update
R.Close
Set R = Nothing
DoCmd.Close
End Sub

1 个答案:

答案 0 :(得分:0)

不是那么多,您想添加一个新记录(您发布的代码应该这样做)。 真正的问题是您要如何处理刚刚添加的记录?并且该表(记录集)是否基于当前表单绑定表?

在代码中添加新记录不会神奇地导致当前表单记录发生更改,移动或跳转到刚添加的当前记录。因此,不是真的要向表中添加新行,而是想要或计划如何编辑刚刚添加的记录?

如果您使用直接绑定到表Issues的表单,则无需使用代码来创建新的数据行,但是更好的方法是将当前表单跳转/强制/移动到新记录这样您就可以编辑数据了。

因此,您可以执行以下操作:

DoCmd.GoToRecord acDataForm, , acNewRec

在上面,您当前的表单将被发送到新记录,此时您可以在表单中输入数据。

至于仅向“问题”添加一行?好吧,真正的问题是您要在何时何地使用该新行。如果运行示例代码,然后从Access UI打开表,则应该看到新的一行数据。但这引出了一个真正的问题,那就是您要如何处理该新数据行。组合框,或者您正在编辑的当前表单都不会意识到该新行,组合框也不会。

因此,这里的目标范围是关于您应该和想要采取的方法的一切。因此,发布的代码应添加新的数据行,但是当前窗体和控件将不会意识到或无法使用该新的数据行,直到您注意到或解释接下来要发生的情况。因此,您可以在代码中添加新行,但是实际上手头的任务是什么,并且想要对新数据行进行处理吗?

如果您有一个现有表单,并说一个组合框,并且想要从下拉列表中选择一个“问题”,那么驱动组合框的可用选项列表当然可以由组合框来驱动使输入数据变得容易。并且,如果您做出的问题选择不在组合框中(该选择由问题表驱动),那么您将使用不在列表事件中的组合框,并提示用户“您要添加吗?”。而且,如果用户单击是,则可以运行代码以添加一个新的“问题”,然后在组合框中选择该新问题。

因此,访问方面的挑战是您有太多的选择要做一个任务,但是直到解释了实际的任务和工作流程之后,一小段代码不可能解决您的问题,但更糟糕的是无法提供实际信息您正在寻找的解决方案。

这是注释中的“为什么”,人们问为什么在大多数情况下绑定表单可以添加数据行时为什么需要代码,而无需编写代码即可将数据插入表中。但是,再次,给定的上下文是您想要添加新的数据行,但是尚不清楚您正在处理的表单是否已绑定到该表问题,或者问题表是与当前表单不同的另一个表。因此,对于当前的表单和数据绑定表,一般而言,您不需要代码即可插入数据行。也许问题表是当前表单+表的相关子表。在这种情况下,将使用子窗体,并且您不必再编写代码来插入数据行。那么,问题表是否只是在驱动组合框?还是问题表绑定并驱动当前表单及其所有字段的数据?