ADO参数查询正在将相同的数据插入到每一行中

我有以下代码inputexcel数据到Microsoft Access数据库的几行。 代码似乎正在工作,数据正在写入数据库。 唯一的问题是,只有第一行数据被input,几次!

FOO

这是我的代码:

Sub AddToDB() Dim adoConn As ADODB.Connection Dim adoComm As ADODB.Command Dim RecordRow As Long Dim TheProduct As String, TheQuantity As String, ThePrice As Double Dim Location As String, TheTime As Date, SaleNumber As Integer Set adoConn = GetConnectionTWO Set adoComm = New ADODB.Command Lastrow = Sold.Cells(Rows.Count, 1).End(xlUp).Row Location = Frontsheet.Range("M3").Value With adoComm Set .ActiveConnection = adoConn For RecordRow = 2 To Lastrow SaleNumber = Sold.Cells(RecordRow, 1).Value TheTime = Sold.Cells(RecordRow, 5).Value TheProduct = Sold.Cells(RecordRow, 2).Value TheQuantity = Sold.Cells(RecordRow, 3).Value ThePrice = Sold.Cells(RecordRow, 4).Value .CommandText = "INSERT INTO Sales([SaleNo],[Time],[Location],[Product],[Quantity],[Price]) " & _ "VALUES(?,?,?,?,?,?)" .Parameters.Append adoComm.CreateParameter(Type:=adInteger, Value:=SaleNumber) .Parameters.Append adoComm.CreateParameter(Type:=adDate, Value:=TheTime) .Parameters.Append adoComm.CreateParameter(Type:=adVarWChar, Size:=255, Value:=Location) .Parameters.Append adoComm.CreateParameter(Type:=adVarWChar, Size:=255, Value:=TheProduct) .Parameters.Append adoComm.CreateParameter(Type:=adVarWChar, Size:=255, Value:=TheQuantity) .Parameters.Append adoComm.CreateParameter(Type:=adDouble, Value:=ThePrice) .Execute Next RecordRow End With adoConn.Close End Sub Function GetConnectionTWO() As ADODB.Connection Set GetConnectionTWO = New ADODB.Connection GetConnectionTWO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathToDatabaseTWO & ";" End Function Function PathToDatabaseTWO() As String PathToDatabaseTWO = ThisWorkbook.Path & "\" & "kimpostwo.accdb" End Function 

我认为“For – Next”循环会移到下一行,当我在Excel VBA编辑器中单步执行代码时,我可以看到数据正在改变。

我曾尝试移动.parameter.append行之前和之后的.commandtext行,但仍然没有改变。

我很新使用ADO,并会欣赏我需要做的指针。

而不是所有的参数在for循环中的所有参数尝试只创build一次命名参数,只有在调用Excecute()之前更改它的值。 “SaleNumber”的示例:

 With adoComm Set .ActiveConnection = adoConn .CommandText = "INSERT INTO Sales([SaleNo]) VALUES(?)" .Parameters.Append adoComm.CreateParameter("SaleNumber", Type:=adInteger) For RecordRow = 2 To Lastrow SaleNumber = Sold.Cells(RecordRow, 1).Value .Parameters("SaleNumber").Value = SaleNumber .Execute Next RecordRow End With