0

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

  • 如果用户输入一个十进制值 -> 它是产品价格,所以将其保存在数据库中
  • 如果用户不输入任何内容 -> 这意味着该值应保存为 NULL
  • 如果用户输入“*”文本 -> 这意味着他们无法获得价格

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

谁能建议如何实施?

4

2 回答 2

2

首先,我总是建议人们不要使用绑定表格。试图撤消绑定形式的记录总是冒险的。取消绑定表格。也就是说,没有表作为其记录源。用户输入所有数据后,有一个“提交”按钮,它将运行 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
于 2013-10-23T19:52:37.963 回答
-1

尝试使用 OnChange 事件

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

并考虑将这个疯狂的文本框的格式字符串设置为类似

# ##0.00;\*;0;"user entered nothing"
于 2013-10-23T18:25:18.883 回答