ERROR AL INSERTAR REGISTRO EN UNA BD (VB 2005)

19/01/2006 - 21:36 por gambini | Informe spam
Hola a todos. Quiero compartirles una experiencia con VB 2005 (todabía
tenemos que esperar para tener un lenguaje que nos alivie la vida?). Por
necesidades de mi aplicación tengo que insertar datos en una BD a través de
un "DataGridView1"(con una sola columna) y digitando "strings" celda por
celda. Es decir, digito "aguila" en la primera celda, pulso el "btnInsertar"
y se graba "aguila" en mi tabla. Qué bien, funciona la primera vez!. Luego,
bajo a la segunda celda y digito "halcón", pulso "btnInsertar" (debía de
funcionar como la primera vez) y me lanza el ERROR:
"The ConnectionString property has not been initialized".
El código del btnInsertar es:
Private Sub btnInsertar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnInsertar.Click
Dim prod(0) As Object
Dim oProductos As New Reglas.Entidad("productos") ' Reglas es una
librería de clases, Entidad una clase
prod(0) = CType(DataGridView1.CurrentRow.Cells(0).Value, Object) '
para capturar el contenido de la celda
oProductos.Insertar("productos_I", prod)
End Sub
'********
Insertar es un método de Entidad y "productos_I" es un store procedure para
insertar.
La funcionalidad para insertar está implementado por clases, los que
gestionan el string de conexión, la conexión, el Data Adapter, los comandos,
la carga de parámetros, y el DataSet.

Preguntas similare

Leer las respuestas

#1 Jesús López
19/01/2006 - 21:55 | Informe spam
Evidentemente el defecto no está en el código que muestras, sino en el que
no muestras.

Saludos:

Jesús López
MVP
Respuesta Responder a este mensaje
#2 gambini
20/01/2006 - 09:21 | Informe spam
Después de algunos ensayos más logré encontrar el error. La declaración de la
variable y la instanciación se debe hacer fuera del bloque de btnInsertar,
pero dentro de la misma clase. Entonces, el código sería:
Dim prod(0) As Object
Dim oProductos As New Reglas.Entidad("productos") ' Reglas es una
librería de clases, Entidad una clase
Private Sub btnInsertar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnInsertar.Click
prod(0) = CType(DataGridView1.CurrentRow.Cells(0).Value, Object) '
para capturar el contenido de la celda
oProductos.Insertar("productos_I", prod)
End Sub
Con este código funciona, y se puede insertar "n" datos. La explicación que
encuentro al error es: La primera vez que se pulsa el "btnInsertar" se
instancia el objeto "oProductos" y se establece la conexión para ese objeto.
Y la segunda vez que se pulsa se instancia otro objeto "oProductos" y cuando
se trata de establecer una conexión se la encuentra ocupada. Por eso la
solución es instanciar una sola vez. Si alguien tiene una explicación más
sólida, por favor compártanos.

"Jesús López" wrote:

Evidentemente el defecto no está en el código que muestras, sino en el que
no muestras.

Saludos:

Jesús López
MVP



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida