CHill60
Вы можете очистить параметры внутри внутреннего цикла и настроить все параметров внутри этого цикла
With GridSalaryCategoryADFormula
For intRow As Integer = 1 To .Rows - 1
objCmd.Parameters.Clear()
CreateParameters(objCmd, GridSalaryCategoryADFormula, True, intRow)
objCmd.Parameters.AddWithValue("@SID", dblSID)
If .TextMatrix(intRow, .GetColIndex("Fid")) <> "" Then
Dim FormulaSids() As String
FormulaSids = .TextMatrix(intRow, .GetColIndex("FormulaSids")).Split(",")
For Fsid = 0 To FormulaSids.Length - 1
objCmd.Parameters.Clear()
'All of the parameters need to be added here!
objCmd.Parameters.AddWithValue("@Fid", Val(FormulaSids(Fsid)))
objCmd.ExecuteNonQuery()
Next
Else
objCmd.Parameters.AddWithValue("@Fid", 0)
objCmd.ExecuteNonQuery()
End If
Next
Или вы могли бы использовать
Коллекции sqlparametercollection.Метод RemoveAt[
^]
With GridSalaryCategoryADFormula
For intRow As Integer = 1 To .Rows - 1
objCmd.Parameters.Clear()
CreateParameters(objCmd, GridSalaryCategoryADFormula, True, intRow)
objCmd.Parameters.AddWithValue("@SID", dblSID)
If .TextMatrix(intRow, .GetColIndex("Fid")) <> "" Then
Dim FormulaSids() As String
FormulaSids = .TextMatrix(intRow, .GetColIndex("FormulaSids")).Split(",")
objCmd.Parameters.AddWithValue("@Fid", 0) 'To stop an error when we use RemoveAt
For Fsid = 0 To FormulaSids.Length - 1
objCmd.Parameters.RemoveAt("@Fid")
objCmd.Parameters.AddWithValue("@Fid", Val(FormulaSids(Fsid)))
objCmd.ExecuteNonQuery()
Next
Else
objCmd.Parameters.AddWithValue("@Fid", 0)
objCmd.ExecuteNonQuery()
End If
Next
Или вы можете просто изменить значение внутри цикла вместо того, чтобы добавлять параметр каждый раз
With GridSalaryCategoryADFormula
For intRow As Integer = 1 To .Rows - 1
objCmd.Parameters.Clear()
CreateParameters(objCmd, GridSalaryCategoryADFormula, True, intRow)
objCmd.Parameters.AddWithValue("@SID", dblSID)
If .TextMatrix(intRow, .GetColIndex("Fid")) <> "" Then
Dim FormulaSids() As String
FormulaSids = .TextMatrix(intRow, .GetColIndex("FormulaSids")).Split(",")
objCmd.Parameters.AddWithValue("@Fid", 0) 'Starting point
For Fsid = 0 To FormulaSids.Length - 1
objCmd.Parameters("@Fid").Value = Val(FormulaSids(Fsid)))
objCmd.ExecuteNonQuery()
Next
Else
objCmd.Parameters.AddWithValue("@Fid", 0)
objCmd.ExecuteNonQuery()
End If
Next