发送到Access时,值不会更新

时间:2018-04-09 16:31:19

标签: excel vba excel-vba ms-access export

AmeriFood(i), SpanFood(i), IndiFood(i)的值在导出到Access表时不会更新。相反,它在整个循环中每次都连续输入值的第一个实例。

    InsertIntoString = "INSERT INTO [Data] ([American], [Spanish], [Indian]) "
''''ValuesString = "VALUES ([" & AmerFood(i) & "], [" & SpanFood(i) & "], [" & IndiFood(i) & "])"  ' I couldnt get this to work beauce there are spaces in the string.
ValuesString = "VALUES (?,?,?)"
strSql = InsertIntoString & ValuesString

With cmd
    Set .ActiveConnection = cn
    .CommandText = strSql
    .Parameters.Append .CreateParameter(, adVariant, adParamInput, , AmerFood(i))
    .Parameters.Append .CreateParameter(, adVariant, adParamInput, , SpanFood(i))
    .Parameters.Append .CreateParameter(, adVariant, adParamInput, , IndiFood(i))
    .Execute
End With

知道每次在VBA代码中循环时如何更新值AmeriFood(i), SpanFood(i), IndiFood(i)?我已经逐步完成了代码,每个值都会使用正确的文本/值进行更新,但它永远不会导出为更新后的值,只是它给出的第一个值。

我原本打算使用注释掉的行

ValuesString = "VALUES ([" & AmerFood(i) & "], [" & SpanFood(i) & "], [" & IndiFood(i) & "])"

但它错误了,因为变量字符串中有空格。

对我来说,这样做并没有什么不同,我只需要一些工作。

先谢谢

1 个答案:

答案 0 :(得分:0)

您需要共享完整的代码,但据我所知,您重复向同一命令添加参数。

为每次迭代使用新命令:

Set cmd = New ADODB.Command
With cmd
    Set .ActiveConnection = cn
    .CommandText = strSql
    .Parameters.Append .CreateParameter(, adVariant, adParamInput, , AmerFood(i))
    .Parameters.Append .CreateParameter(, adVariant, adParamInput, , SpanFood(i))
    .Parameters.Append .CreateParameter(, adVariant, adParamInput, , IndiFood(i))
    .Execute
End With

请注意adVariant不受支持,请参阅docs