2011-12-01 135 views
1

设置为空字符串,我有大约游客到我们部门信息的数据库。这是我的设置:用户从列表框中选择访问者名称。 Access将访客记录中的值分配给临时变量,并打开一个未绑定的表单,其中这些变量是文本字段中的默认值。当用户更改文本框中的值时,After_Update事件使用SQL更新该访问者记录中的相应字段,并将新值分配给临时变量。如何使用默认值未绑定文本框的值与Access VBA

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从变化的值到b,debug.print显示mytextbox的值为b。如果我将mytextbox中的值从a更改为(空白或空字符串),则debug.print将显示mytextbox的值仍然等于a。

我的解决方法一直是包括小“X”文本框附近,用户可以点击:1)清除文本框,2)更新临时变量,以及3)更新表。它工作正常,但似乎应该有更好的方法。帮帮我?

请让我还是知道的,如果你需要的任何其他信息,如果我要以其它方式重新字这一点。我一直来这里找答案,但这是我第一次提交自己的问题。谢谢!

(我编辑这个正确使代码显示出来......没离开前行。)

回答

0

我认为最好的办法是放弃你的文本框中after_update事件,而是要么把未绑定表单上的保存按钮,以便所有更新都可以一次写入,或者捕获表单关闭事件并更新表格。

这是使用未绑定表单的优势,在您完全准备好之前,您不必共享数据,但使用after_update事件几乎可以模拟绑定表单的行为。

+0

谢谢你的回应。我怀疑我已经让它变得比我需要的更复杂 - 我无法根据绑定表单进行可编辑查询(表格在SharePoint上,但我不确定它是否与它有关) ),所以我放弃了。我最终使用了after_update而不是保存按钮,因为我希望用户只需点击一下即可在表单之间切换。我对使用闭幕或失去焦点等事件抱有非理性的恐惧,但这确实是一种更好的方式。谢谢! – robbins4

1

我想通了,未绑定的文本框被恢复到默认值,当用户试图使他们的空白。为了从这样阻止他们,我把这个更新后的文本框:

Call ResetDefault(Me.textbox1.Text, Me.textbox1) 

而定义的函数:

Public Sub ResetDefault(ByVal strChange As String, ByRef txtCurrent As TextBox) 
If Nz(strChange, "") = "" Then txtCurrent.DefaultValue = "" 
End Sub 

也就是说,如果用户清除文本框,默认值该文本框被设置为“”,允许文本框实际上变为空白。