我已经检索所有数据从互联网到一个二维数组,我知道如何使用vba记录集,并通过过滤器和更新使用循环。下面是vba代码的一部分。
困难的问题是:
Using cmd As New MySqlCommand("INSERT INTO `calls` (`CID`, `ctype`) VALUES (@CID, @ctype)", cnn)这使我无法在数组中使用任何循环并相应地进行更新。
cmd.Parameters.Add ('@CID').value = arrValue(i,j)我希望可以在以下几个方面这样做:
for x = 0 to ubound(arrValue,0)
for y = 0 to ubound(arrValue,1)
.fields(arrHeader(y) = arrValue(x,y)
next y
next x假设i是要更新的n,j=标头的值。
vba提取液:
With rs
'Worksheets(strWsName).Activate
'iLastRow = Worksheets(strWsName).Cells(65535, 1).End(xlUp).row 'column B, column 2
For i = 0 To UBound(arrValue, 1)
Debug.Print "Updating " & i + 1 & " of " & UBound(arrValue, 1) + 1 & " news ..." ' of " & strCodeAB & " ..."
'Start looping the news row
strNewsID = arrValue(i, 1) 'Worksheets(strWsName).Range(ColRefNewsID & i).Value
If strNewsID = "" Then
Debug.Print i - 1 & " news is updated to database"
i = UBound(arrValue, 1)
Else
strFilter = "fID='" & strNewsID & "'"
rs.Filter = strFilter
If rs.EOF Then
.AddNew 'create a new record
'add values to each field in the record
For j = 0 To UBound(arrTitle_ALL)
'20140814
strFieldValue = .Fields(arrAccessField(j))
strNewValue = arrValue(i, j)
If IsNull(strFieldValue) And strNewValue = "" Then
Else
.Fields(arrAccessField(j)) = arrValue(i, j) 'Worksheets(strWsName).Cells(i, j + 1).Value
End If
Next j
On Error Resume Next '***************
.Update 'stores the new record
On Error GoTo 0
iCounterNewsAdded = iCounterNewsAdded + 1
glcounterNewsAdded = iCounterNewsAdded
Else下面的帖子似乎和我的要求相似,但我不知道该怎么做。reference
发布于 2014-08-20 22:47:49
您提到的post (使用IN()命令)在WHERE子句中工作,但它对值无效。MySQL无法传递数组,因此需要遍历数组并运行多个INSERT语句:
for y = 0 to ubound(arrValue,1)
cmd.Parameters.AddWithValue(@CID,arrValue(0,y))
cmd.Parameters.AddWithValue(@ctype,arrValue(1,y))
cmd.ExecuteNonQuery
next yhttps://stackoverflow.com/questions/25412919
复制相似问题