我目前正在运行一个链接到表格的表单,其中表单中显示的其中一个控件依赖于另一个控件。具体来说,它是一个名为机器挖掘的字段,需要是手工挖掘字段中用户输入百分比的剩余百分比。这些字段属于从另一个控件中选择的特定记录,其名称为挖掘类型。例如,如果我输入30%进入手工挖掘,则机器挖掘需要为70%。我已经创建了一个代码,它将在VBA中使用RunSQL方法在手工挖掘控件中执行AfterUpdate事件时将其存储在基础表中:
Private Sub Text_HandExcvPerc_AfterUpdate()
DoCmd.RunSQL ("UPDATE tbl-ExcavationType SET [Machine Excavation] = 1 - [Hand Excavation] WHERE [Excavation Type] = Text_ExcvType.Value;") End Sub
tbl-ExcavationType 是链接到表单的表, Text_ExcvType.Value 是包含当前记录标识符的文本框控件。有人可以评论我的DoCmd.RunSQL的语法吗?我一直收到错误。
答案 0 :(得分:2)
您有几个问题:
-
。'
)或双引号("
)括起来。Text_ExcvType.Value
的值而不是字符串"Text_ExcvType.Value"
添加到查询中。我测试过以下工作:
Private Sub Text_HandExcvPerc_AfterUpdate()
DoCmd.RunSQL "UPDATE [tbl-ExcavationType] SET [Machine Excavation] = 1 - [Hand Excavation] WHERE [Excavation Type] = '" & Text_ExcvType.Value "';"
End Sub
答案 1 :(得分:1)
DoCmd.RunSQL ("UPDATE [tbl-ExcavationType] SET [Machine Excavation] = " & _
"1 - [Hand Excavation] WHERE [Excavation Type] = """ & Text_ExcvType.Value & """;")
请注意,文本框值周围有三个引号。 Access使用双引号而不是单引号作为字符串。因为您在字符串中输入它,所以必须使用两个双引号来表示字符串的单引号,然后使用另一个双引号来断开字符串以连接您的值。系统看到的将是有效的:
UPDATE [tbl-ExcavationType] SET [Machine Excavation] = 1 - [Hand Excavation] WHERE [Excavation Type] = "My Data Value";
答案 2 :(得分:0)
你在这里看到的是一个计算字段:即[机器挖掘]总是1 - [手工挖掘]所以我不明白为什么你需要存储它。这就是说你需要用名为Text_ExcvType的控件中的实际值替换单词“Text_ExcvType.Value”,并且当它在语音标记内时它不能这样做。试试
dim strsql as string
strsql = "UPDATE tbl-ExcavationType SET [Machine Excavation] = "
strsql = strsql & "1 - [Hand Excavation] WHERE [Excavation Type] = '"
strsql = strsql & Text_ExcvType.Value & "';"
DoCmd.RunSQL strsql
这允许访问首先评估Text_ExcvType.Value,将结果放入字符串然后执行sql 这样做也允许你在调试中观察字符串构建以找出出错的地方