database - Access VBA : enter expression in user form, 将计算结果存储在表中?

标签 database ms-access vba user-input ms-access-2010

我有一个表单,我希望用户能够在其中输入简单的数学运算,并将计算值存储在表中。

例如:

  1. 用户在文本框中输入“1+5”。
  2. 答案6存储在数据库表中。

目前,在我的数字表单字段中输入“1+5”会导致错误:“将文本输入数字字段”。有什么办法吗?

最佳答案

您可以编写 VBA 脚本来解析输入并执行任何需要的计算。这可能由未绑定(bind)的表单字段的 BeforeUpdate 事件触发。

步骤:

  1. 为计算值创建一个名为 Field1 的字段(绑定(bind)到适当的数据库字段)。
  2. 向您的表单添加一个未绑定(bind) 字段并将其命名为 Input1。
  3. 在“设计” View 中,右键单击 Input1 并选择“属性”。在“事件”->“更新前”下,单击“...”按钮。
  4. 插入我编写的 VBA 代码(如下)。
  5. 保存更改并关闭 VBA 编辑器。
  6. 返回表单 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/

相关文章:

winapi - VBA 中的 IFileOpenDialog 和 IFileSaveDialog

excel - 删除重复行,保留最后并首先删除

vba - 为 ADO 构造正确的 SQL 字符串以获取具有 MAX Date 的数据

database - 如何存储公共(public)交通数据

mysql - 验证大量数据的副本

sql - 大型数据集的报告工具/查看器

java - 使用 Java 将 Oracle 数据库迁移到 MS Access 的最佳方法是什么?

linux - 生成映射的 D2RQ 参数

sql-server - 更新sql server日期时间字段

sql - 更新语句 Sql Access 双内连接