我需要帮助解决一个问题。 我需要在访问中更新数据库,并且它在使用Long和Integers时工作正常。
看看这段代码。
sql = "UPDATE DBNAME SET Long_Field = " & Long_Variable & " WHERE ID = " & id
DoCmd.SetWarnings (False)
DoCmd.RunSQL sql
此代码运行完美,它需要一个很长的变量并将其放入正确的字段中,该字段设置为Long。
但是,如果我想填充单个/双字段(香港专业教育学院考试过)
sql = "UPDATE DBNAME SET Double_Field = " & double_Variable & " WHERE ID= " & id
DoCmd.SetWarnings (False)
DoCmd.RunSQL sql
我一直收到运行时错误3144:update语句中出现语法错误。 我可以简单地切换出字段名称和变量名称,代码运行完美,但只要我尝试将双值(例如(5,8))发送到表中设置为double的字段,它给了我这个错误。
任何?
答案 0 :(得分:3)
我假设您想在字符串中使用点作为小数点分隔符。
从double到string的转换是使用系统区域设置中的分隔符完成的,因此在您的情况下是逗号。
这意味着
double_variable = 5.8
sql = "... " & double_variable & " ..."
将在sql变量中生成... 5,8 ...
。
解决这个问题的最简单方法是使用
"..." & Replace(CStr(double_variable), ",", ".") & "..."
这会将所有,
替换为.
。我把CStr
放在那里以确保它首先被转换为字符串。如果系统区域设置发生更改,它也会起作用,因为如果没有,
则不会发生任何事情。唯一需要注意的是,如果由于某种原因转换插入1000s分隔符,它将失败,但这只会在其他情况下相关,因为我认为CStr
不会这样做。
答案 1 :(得分:2)
目前的答案并不是最简单的,也不是最简单的答案。
通用方法是使用 Str ,因为它总是返回一个点作为小数分隔符:
sql = "UPDATE DBNAME SET Double_Field = " & Str(double_Variable) & " WHERE ID = " & id & ""