2016-09-14 25 views
2

我需要一些帮助解决正在进行的问题。 我需要在访问中更新数据库,并且使用Long和Integers正常工作。在访问中使用VBA插入单/双类型到数据库

看看这段代码。

sql = "UPDATE DBNAME SET Long_Field = " & Long_Variable & " WHERE ID = " & id 
DoCmd.SetWarnings (False) 
DoCmd.RunSQL sql 

此代码运行完美,它需要一个很长的变量并将其放入设置为Long的正确字段中。

但是,如果我想填充单/双场(IVE尝试都)

sql = "UPDATE DBNAME SET Double_Field = " & double_Variable & " WHERE ID= " & id 
DoCmd.SetWarnings (False) 
DoCmd.RunSQL sql 

我不断收到运行时错误3144:语法错误在更新语句。 我可以从字面上切换出字段名称和变量名称,代码完美无瑕地运行,但只要我尝试发送一个double值(例如(5,8))到表中设置为双倍,它给了我这个错误。

有人吗?

+0

当你说一个_double_值你说的是两个值如(5-8)或逗号小数点分隔符? –

+0

逗号是小数点 – Arne

+1

啊,好吧....只是检查明显。 :) –

回答

3

我假设你想要一个点作为你的字符串中的小数点分隔符。

使用系统区域设置中的分隔符完成从double到字符串的转换,因此在您的情况下使用逗号。

这意味着

double_variable = 5.8 
sql = "... " & double_variable & " ..." 

将在SQL变量产生... 5,8 ...。 解决最简单的方法是使用

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

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

+0

即使我定义一个名为double_variable As Double的变量,将其设置为double_variable = 5.8,然后发送它,它仍然会引发错误。如果我然而将其设置为double_variable = 5,它工作正常。 – Arne

+0

您需要完整的表达式(替换, - >。)@Arne – Andre

+0

@Arne你试过我的建议吗?我加了一点解释。 – arcadeprecinct

2

目前的答案不是最简单的,也不是最简单的。

通用的方法是使用海峡,因为它总是返回一个点作为小数点分隔符:

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

哇。我完全不知道这一点。谢谢! – Andre