1

如何在 ms 访问中通过 VBA 代码更新任何字段值?当我在组合框中输入值时,相关表中的某些字段会随着我输入数据而更新。而其他人则没有。我应该怎么做才能解决这个问题?

在组合框中,我使用了 me.refresh 命令,它在我输入时更新数据。而在另一个组合框中我做了同样的事情,但我没有得到任何结果。我在哪里犯错误?

更进一步的是未注册的软件做了这样的问题,使它们在不同的时间表现不同。

4

2 回答 2

2

当您更改表单上的文本框/组合框/等的值时,表中的记录不会立即更新。Access 处理它的默认方式是等到记录不再具有焦点,然后使用您所做的任何更改更新表中的记录。

如果您愿意,可以使用以下命令通过 After Update 事件强制更新表中的记录:

Private Sub txtMyFieldName_AfterUpdate()
  Me.Dirty = False
End Sub

但是,我只会在编辑现有记录时这样做。如果您正在输入新记录,那么您不想Me.Dirty = False在每个控件都更新后触发。如果您确实Me.Dirty = False在新记录条目上触发并且您有尚未填写的必填字段,您将收到一条错误消息,指出必填字段不能包含空值。

于 2013-09-26T18:25:23.787 回答
2

表单上(绑定)控件值的更改与基础字段值的更新之间存在细微的概念差异。在触发 'update' 事件之前,基础字段的值可能不会更新。

而且,当然,如果您正在处理的控件未绑定,则不能有任何字段更新......

编辑:

如果您想以编程方式更改未绑定的控件值:

myForm.controls(myControl).value = "whatever"

如果要更改绑定控件及其基础字段,请在字段端工作

myForm.recordset.fields(myField).value = "whatever" 
myForm.recordset.update

然后,您可能需要刷新屏幕上的控件,以便显示更新后的值

在控制方面

myForm.controls(myControl).value = "whatever" 

然后,您可能需要在底层控件上以编程方式触发更新 (recordset.update) 事件

于 2013-09-26T16:55:34.053 回答