在MS Access DB表中,我有十进制字段;让我们说“价格”。用户应该能够在表单上的文本框中输入任何这些选项:
问题在于“*”,因为字段是十进制的,我不能存储星号,因为它是文本,因此我需要存储-1值。我试图在文本框的Before_Update事件中处理它,但它不起作用。
谁可以建议如何实施?
答案 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"