Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在access中使用VBA将单/双类型插入数据库_Vba_Ms Access_Locale - Fatal编程技术网

在access中使用VBA将单/双类型插入数据库

在access中使用VBA将单/双类型插入数据库,vba,ms-access,locale,Vba,Ms Access,Locale,我需要一些帮助来解决一个让我头疼的问题。 我需要在access中更新一个数据库,它可以很好地处理长整数 看看这个代码 sql = "UPDATE DBNAME SET Long_Field = " & Long_Variable & " WHERE ID = " & id DoCmd.SetWarnings (False) DoCmd.RunSQL sql 这段代码运行完美,它接受一个长变量并将其放入正确的字段中,该字段设置为long 但是,如果我想填充单/双字段(我尝

我需要一些帮助来解决一个让我头疼的问题。 我需要在access中更新一个数据库,它可以很好地处理长整数

看看这个代码

sql = "UPDATE DBNAME SET Long_Field = " & Long_Variable & " WHERE ID = " & id
DoCmd.SetWarnings (False)
DoCmd.RunSQL sql
这段代码运行完美,它接受一个长变量并将其放入正确的字段中,该字段设置为long

但是,如果我想填充单/双字段(我尝试了这两种方法)

我一直收到运行时错误3144:update语句中的语法错误。 我可以直接切换出字段名和变量名,代码可以完美地运行,但是只要我尝试向表中设置为double的字段发送一个double值,例如(5,8),它就会给我这个错误


有人吗?

我假设您希望字符串中有一个点作为十进制分隔符

从double到string的转换是使用系统语言环境设置中的分隔符完成的,因此在您的示例中是逗号

这意味着

double_variable = 5.8
sql = "... " & double_variable & " ..."
将产生
。。。sql变量中的5,8…
。 最简单的修复方法是使用

"..." & Replace(CStr(double_variable), ",", ".") & "..."

这将用
替换所有
。我将
CStr
放在那里,以确保它首先转换为字符串。如果系统区域设置发生更改,它也会工作,因为如果没有
,则不会发生任何事情。唯一需要注意的是,如果出于某种原因,转换插入1000s分隔符,它将失败,但这仅在其他情况下相关,因为我认为CStr不会这样做。

当前的答案不是最简单的,也不是最简单的

通用方法是使用Str,因为它总是返回一个点作为十进制分隔符:

sql = "UPDATE DBNAME SET Double_Field = " & Str(double_Variable) & " WHERE ID = " & id & ""

当你说双精度值时,你指的是两个值,例如(5和8),还是逗号是十进制分隔符?逗号是十进制分隔符,好的。。。。我只是在检查明显的问题。:)尝试cdbl(双_变量),如果我设置双_变量=5,并发送它。它很好用。但是如果我把它设置为=5.8,它就会出错。即使将表设置为receive double,无论小数是设置为auto还是1,即使我将名为double的变量定义为double,将其设置为double\u variable=5.8,然后发送,它仍然会抛出错误。但是,如果我将它设置为double_variable=5,它工作正常。您需要完整的表达式(Replace,->)@Arne@Arne你试过我的建议了吗?我又加了一点解释。哇。我完全没有意识到这一点。谢谢
sql = "UPDATE DBNAME SET Double_Field = " & Str(double_Variable) & " WHERE ID = " & id & ""