Too many arguments to

14/09/2005 - 00:18 por Enrique Rodríguez | Informe spam
Hola a todos.

A ver si alguien me puede ayudar con este problemita.

Intento insertar datos de un dataTable que se encuentra en un DataSet hacia
una tabla de una BD en SQL por medio de un StoreProcedure.
De tal manera que tengo que irle pasando los parametros al SP antes de
ejecutarlo pero me marca el error del subject y solo inserta el primer
registro.
Les paso el codigo que estoy empleando a ver si alguien me puede decir que
estoy haciendo mal.

oConnSql.Open()

For columna = 1 To oDs.Tables(0).Columns.Count - 1

For fila = 0 To oDs.Tables(0).Rows.Count - 1

campo1 = oDs.Tables(0).Columns(columna).ColumnName

campo2 = oDs.Tables(0).Rows(fila).Item(0).ToString()

campo3 = oDs.Tables(0).Rows(fila).Item(columna).ToString()

com.Parameters.Add("@campo1_1", campo1)

com.Parameters.Add("@campo2_2", campo2)

com.Parameters.Add("@campo3_3", campo3)

Try

com.ExecuteNonQuery()

Catch ex As SqlException

Mensaje.Text = ex.Message

End Try

Next fila

Next columna

oConnSql.Close()
 

Leer las respuestas

#1 Leonardo Azpurua [mvp vb]
14/09/2005 - 00:36 | Informe spam
"Enrique Rodríguez" escribió en el mensaje
news:
Intento insertar datos de un dataTable que se encuentra en un DataSet
hacia una tabla de una BD en SQL por medio de un StoreProcedure.
De tal manera que tengo que irle pasando los parametros al SP antes de
ejecutarlo pero me marca el error del subject y solo inserta el primer
registro.
Les paso el codigo que estoy empleando a ver si alguien me puede decir que
estoy haciendo mal.



Hola,

El objeto Command no limpia la colección Parameters al ejecutarse, de manera
que para la segunda iteración estás tratando de agregar más parámetros de
los necesarios, con nombre duplicados, ademas.

Una solución podria ser:

oConnSql.Open()


' Agregas los parametros
com.Parameters.Add("@campo1_1")
com.Parameters.Add("@campo2_2")
com.Parameters.Add("@campo3_3")

For columna = 1 To oDs.Tables(0).Columns.Count - 1
For fila = 0 To oDs.Tables(0).Rows.Count - 1
campo1 = oDs.Tables(0).Columns(columna).ColumnName
campo2 = oDs.Tables(0).Rows(fila).Item(0).ToString()
campo3 = oDs.Tables(0).Rows(fila).Item(columna).ToString()
Try


com.Parameters(0).Value = campo1
com.Parameters(1).Value = campo2
com.Parameters(2).Value = campo3
com.ExecuteNonQuery()

Catch ex As SqlException
Mensaje.Text = ex.Message
End Try
Next fila
Next columna
oConnSql.Close()



Salud!

Preguntas similares