2016-08-22 44 views
0

我在访问VBA使这个功能:插入与可变数目

Function test_zeroSQL() 

Dim nsemaine As Single 
Dim var11 As Single 
Dim var50 As Single 
Dim var60 As Single 
Dim var11b As Single 
Dim var50b As Single 
Dim var60b As Single 

nsemaine = DatePart("ww", Date, 2, 2) - 1 
If zero11() = 0 Then 
    var11 = 1 
    var11b = 1 
Else 
    var11 = zero11() 
    var11b = zero11b() 
End If 

If zero50() = 0 Then 
    var50 = 1 
    var50b = 1 
Else 
    var50 = zero50() 
    var50b = zero50b() 
End If 

If zero60() = 0 Then 
    var60 = 1 
    var60b = 1 
Else 
    var60 = zero60() 
    var60b = zero60b() 
End If 

test_zeroSQL = "INSERT INTO [Taux de Service] (Semaine, [Sortie B60], [Nc B60], [Sortie B50], [Nc B50], [Sortie B11], [Nc B11])" 
test_zeroSQL = test_zeroSQL & vbCrLf & "VALUES (" & nsemaine & "," & var60 & "," & var60b & "," & var50 & "," & var50b & "," & var11 & " ," & var11b & ")" 
End Function 

但它不工作,我有这样的信息: “请求值的数量必须目的地的数量一致字段“

我认为它来自我的变量的归属,因为它在我用整数替换单个元素时起作用。 尽管如此,我也检查过我的领域是“单身”。 我不明白它可能来自哪里...

你能帮我吗?

回答

2

指定的列数([Taux de Service]后面的括号)与values内的值数不同。

您正在使用十进制数字和法语本地语言(使用,作为小数点分隔符),因此它会混淆查询,因为访问始终使用,作为列分隔符。

有此问题的两个解决方案:

  1. 使用query parameters这也是最好的做法,因为它有助于防止SQL注入攻击,也只是用户不小心使用特殊caracters和吹起查询。

  2. 更换,通过.在这样的每一个十进制数字:Replace(myString, ",",".")

+0

非常感谢您! – Bast