我有一个表单,我希望用户能够在其中输入简单的数学运算,并将计算值存储在表中。
例如:
- 用户在文本框中输入“1+5”。
- 答案6存储在数据库表中。
目前,在我的数字表单字段中输入“1+5”会导致错误:“将文本输入数字字段”。有什么办法吗?
最佳答案
您可以编写 VBA 脚本来解析输入并执行任何需要的计算。这可能由未绑定(bind)的表单字段的 BeforeUpdate 事件触发。
步骤:
- 为计算值创建一个名为 Field1 的字段(绑定(bind)到适当的数据库字段)。
- 向您的表单添加一个未绑定(bind) 字段并将其命名为 Input1。
- 在“设计” View 中,右键单击 Input1 并选择“属性”。在“事件”->“更新前”下,单击“...”按钮。
- 插入我编写的 VBA 代码(如下)。
- 保存更改并关闭 VBA 编辑器。
- 返回表单 View 并在您的 Input1 字段中输入一个表达式。当您跳出该字段时,将对表达式求值并将值显示在 Field1 中。
请注意,出于安全和/或数据完整性的原因,您可能需要在将用户输入作为表达式求值之前对其进行清理。 “如何”和“为什么”的细节超出了原始问题的范围。
Private Sub Input1_BeforeUpdate(Cancel As Integer)
' TO-DO: Validate/sanitize input as necessary for security & validity;
' Exit Sub prior to the Eval() if we see something we don't like
Dim result As Variant
result = Eval(Input1.Value) ' Evaluate the contents of Input1
If IsNumeric(result) Then Field1 = result ' Save any numeric result to Field1
End Sub
关于database - Access VBA : enter expression in user form, 将计算结果存储在表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606407/