以具有要加载(空白)宏的宏的格式加载现有记录

问题描述 投票:0回答:1

场景:Microsoft Access 2016中的空白表单(我们称为表单B),该宏具有一个导致加载时该表单为空白(新记录)的宏;但是,我还想实现一个按钮,该按钮将导致在其他表单(表单A)上选择的记录加载到表单B上。

逻辑是表格A填充有从列表框中选择的记录。用户无法修改此记录,因为它显示在表单A上(控件已锁定)。但是,包含记录列表的列表框是从动态搜索查询中填充的。如果用户找不到合适的记录,则用户单击按钮以打开表格B,该表格允许用户输入新记录。输入该记录后,用户现在可以使用搜索框查找新输入的记录。

如果用户选择一条记录,并注意到由于数据不正确而需要编辑该记录,我想实现一个按钮,用户可以单击该按钮以将表格A中的记录加载到要编辑的表格B中。

我不知道如何在VBA中以编程方式执行此操作,但是伪代码看起来像这样:

私人子

单击edit_record_button时,将表格B设置为不加载'转到新记录'

使用表A中的当前记录加载表B

结束子

请帮助。我想知道是否可以使用宏来完成此操作,但是我认为这不可能。

ms-access access-vba
1个回答
1
投票

执行此操作的方法是删除代码和将表单跳转到新记录的所有部分,并准备输入新记录。

您的使用决斗的想法和目标(添加或编辑现有表单的方式当然很有意义-您想在此处决斗使用该表单。

您的方式?现在,要以添加方式打开表单,请执行以下操作:

docmd.OpenForm "frmCustomers",,,,acFormAdd

因此将以添加模式启动表单-在新的空白记录上。

但是,要编辑现有的,例如提示用户输入客户编号

dim strCustNo    as string
strCustNo = Inputbox("Enter customer number")
docmd.OpenForm "frmCustomers",,,"ID = " & strCustNo

因此,将打开一个给定客户编号的表格。

或者,您可以打开表单来编辑所有记录,如下所示:

docmd.OpenForm "frmCustomers"

因此,诀窍是删除该代码和将表单跳转到新的空白记录的内容,然后在打开/启动您控制的表单的代码中进行编辑所有记录,以添加模式打开甚至跳转到并编辑一条记录。

[我还建议您在属性表的其他表中将表单循环属性设置为当前记录-因为如果您位于表单的最后一个控件/字段上并点击标签,则可以跳至新的空白记录,并且在大多数情况下,您不希望这样做。

[您甚至可以关闭表单的allow adds属性,并且上面在add模式下打开将仅允许添加一条记录-并且这通常可以是一个很好的UI选择,用于丢弃表单,让用户添加一条记录,然后关闭表单。无论如何,这里的主要技巧和想法是,通过选择如何打开表单,然后可以控制是要添加记录还是编辑记录-加载到始终时不需要或不需要特殊代码跳转到新的空白记录(因此删除该代码/部分),并使用openFrom命令的功能控制此操作。

编辑

已经指出,上面的“ ID”示例很差。是的,那是/是一些空中密码,在大多数情况下甚至可以避免使用输入框。

[如果您在说这样的详细信息表格:

enter image description here

甚至是显示单个记录的表单?

然后将表单启动到一个记录,您将使用此:

如果me.Dirty = true,那么me.Dirty = false'如果可以进行编辑,则是可选的>]

docmd.Openfrom“ frmDetailsEdit” ,,“ ID =”&ME!ID

© www.soinside.com 2019 - 2024. All rights reserved.