如何在 ms 访问中通过 VBA 代码更新任何字段值?当我在组合框中输入值时,相关表中的某些字段会随着我输入数据而更新。而其他人则没有。我应该怎么做才能解决这个问题?
在组合框中,我使用了 me.refresh 命令,它在我输入时更新数据。而在另一个组合框中我做了同样的事情,但我没有得到任何结果。我在哪里犯错误?
更进一步的是未注册的软件做了这样的问题,使它们在不同的时间表现不同。
如何在 ms 访问中通过 VBA 代码更新任何字段值?当我在组合框中输入值时,相关表中的某些字段会随着我输入数据而更新。而其他人则没有。我应该怎么做才能解决这个问题?
在组合框中,我使用了 me.refresh 命令,它在我输入时更新数据。而在另一个组合框中我做了同样的事情,但我没有得到任何结果。我在哪里犯错误?
更进一步的是未注册的软件做了这样的问题,使它们在不同的时间表现不同。
当您更改表单上的文本框/组合框/等的值时,表中的记录不会立即更新。Access 处理它的默认方式是等到记录不再具有焦点,然后使用您所做的任何更改更新表中的记录。
如果您愿意,可以使用以下命令通过 After Update 事件强制更新表中的记录:
Private Sub txtMyFieldName_AfterUpdate()
Me.Dirty = False
End Sub
但是,我只会在编辑现有记录时这样做。如果您正在输入新记录,那么您不想Me.Dirty = False
在每个控件都更新后触发。如果您确实Me.Dirty = False
在新记录条目上触发并且您有尚未填写的必填字段,您将收到一条错误消息,指出必填字段不能包含空值。
表单上(绑定)控件值的更改与基础字段值的更新之间存在细微的概念差异。在触发 'update' 事件之前,基础字段的值可能不会更新。
而且,当然,如果您正在处理的控件未绑定,则不能有任何字段更新......
编辑:
如果您想以编程方式更改未绑定的控件值:
myForm.controls(myControl).value = "whatever"
如果要更改绑定控件及其基础字段,请在字段端工作
myForm.recordset.fields(myField).value = "whatever"
myForm.recordset.update
然后,您可能需要刷新屏幕上的控件,以便显示更新后的值
在控制方面
myForm.controls(myControl).value = "whatever"
然后,您可能需要在底层控件上以编程方式触发更新 (recordset.update) 事件