替换MS Access中文本框的输入值

时间:2013-10-23 17:26:26

标签: sql ms-access ms-access-2007 ms-access-2010

在MS Access DB表中,我有十进制字段;让我们说“价格”。用户应该能够在表单上的文本框中输入任何这些选项:

  • 如果用户输入小数值 - >这是产品价格,因此将其保存在DB
  • 如果用户没有输入任何内容 - >这意味着该值应保存为NULL
  • 如果用户输入“*”文字 - >这意味着他们无法获得价格

问题在于“*”,因为字段是十进制的,我不能存储星号,因为它是文本,因此我需要存储-1值。我试图在文本框的Before_Update事件中处理它,但它不起作用。

谁可以建议如何实施?

2 个答案:

答案 0 :(得分:1)

首先,我总是建议人们不要使用绑定表格。尝试以绑定形式撤消记录总是很冒险。取消绑定表单。也就是说,没有表作为其记录源。一旦用户输入了所有数据,就有一个“提交”按钮,该按钮将运行VBA以将记录写入您的数据。如果你这样做,你可以把你想要的任何东西放在那个价格框中,当你把数据写入表时,你可以使用If / Then / Else语句将值改为你想要的值。字段。

有点像这样:

Dim DB as database
Dim rec as Recordset

Set DB = CurrentDB
Set rec = DB.OpenRecordset ("Select * from MyTable")

rec.AddNew
rec("MyField") = Me.SomeField
rec("MyField2") = Me.SomeOtherField
if Me.MyPriceField = "*" then
rec("PriceField") = -1
Else
rec("PriceField") = Me.MyPriceField
End If
rec.Update

答案 1 :(得分:-1)

尝试使用OnChange事件

if nz(Me.CrazyTextBox.Text , "") = "*" then
    Me.CrazyTextBox.Text = -1
end if

考虑将此疯狂文本框的格式字符串设置为

# ##0.00;\*;0;"user entered nothing"