我有一个数据库,其中包含有关我们部门访客的信息 . 这是我的设置:用户从列表框中选择访问者名称 . Access将该访问者记录中的值分配给临时变量,并打开一个未绑定的表单,其中这些变量是文本字段中的默认值 . 当用户更改文本框中的值时,After_Update事件使用SQL更新该访问者记录中的相应字段,并将新值分配给临时变量 .
After_Update示例:
Dim strRUN As String
strRUN = updateVisitorOnDirty(Me.txtVisitorTravelMethod, "VisitorTravelMethod", 1)
HideWarnings (strRUN)
TempVars!strVisitorTravelMethod = Nz(Me.txtVisitorTravelMethod.Value, "")
“updateVisitorOnDirty”是一个函数,它返回SQL以更新表中带有第一个参数的访问者信息的字段(在第二个参数中指定) . (最后的数字表示它是一个字符串 . )“HideWarnings”关闭警告,执行SQL,然后重新打开警告 .
我的问题:当用户清除文本框时,After_Update事件会使文本框恢复为之前的值 .
我一开始以为可能未绑定的文本框在清除时恢复为默认值,但我在After_Update期间触发的子区域中放置了一个断点:
如果我将mytextbox中的值从a更改为b,则debug.print将mytextbox的值显示为b . 如果我将mytextbox中的值从a更改为(空白或空字符串),则debug.print会将mytextbox的值显示为仍等于a .
我的解决方法是在文本框附近包含一个“x”,用户可以单击以清除文本框,2)更新临时变量,3)更新表 . 它工作正常,但似乎应该有一个更好的方法 . 救命?
如果您需要任何其他信息或者我应该重新说出来,请告诉我 . 我一直都来这里寻求答案,但这是我第一次提交自己的问题 . 谢谢!
(我编辑了这个以使代码正确显示...之前没有留下任何一行 . )
2 回答
我发现当用户试图将它们留空时,未绑定的文本框将恢复为默认值 . 为了阻止他们这样做,我把它放在文本框的AfterUpdate中:
并定义了功能:
也就是说,如果用户清除了文本框,则该文本框的默认值设置为“”,从而允许文本框实际变为空白 .
我认为最好的方法是在文本框上废弃after_update事件,而是在未绑定的表单上放置一个保存按钮,以便一次性写入所有更新,或者捕获表单结束事件并更新表格 .
这是使用未绑定表单的优点,您不必在完全准备好之前编写数据,但使用after_update事件几乎可以模仿绑定表单的行为 .