Foros del Web » Programación para mayores de 30 ;) » .NET »

Excepción InvalidCast al Insertar en BD's de Access

Estas en el tema de Excepción InvalidCast al Insertar en BD's de Access en el foro de .NET en Foros del Web. Hola compañer@s! Tengo un problemilla al insertar en una base de datos access. Este problema consiste básicamente en que salta una excepción que no me ...
  #1 (permalink)  
Antiguo 13/09/2006, 05:24
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 6 meses
Puntos: 1
Excepción InvalidCast al Insertar en BD's de Access

Hola compañer@s!

Tengo un problemilla al insertar en una base de datos access. Este problema consiste básicamente en que salta una excepción que no me permite insertarlos.

La excepción que salta es System.InvalidCastException y salta en la línea objAcciones.ExecuteNonQuery()

Os pego un fragmento del código por si sirve de algo,
Código:
Try
            objConn.Open()
            objAdapter = New OleDbDataAdapter("SELECT * FROM Actores ORDER BY IdActor", objConn)
            dt = New DataTable
            objAdapter.Fill(dt)
            n = dt.Rows.Count
            objAcciones.CommandText = "CREATE TABLE Tiempos " & "(Id INTEGER IDENTITY PRIMARY KEY, TiempoNombres INTEGER, TiempoIdentificadores INTEGER)"
            objAcciones.ExecuteNonQuery()
            If n = 0 Then
                MessageBox.Show("No se ha encontrado ningún registro que coincida con la selección")
            Else
                For i = 0 To n - 1
                    'Asignar a las variables el contenido del registro
                    tGetTimer.StartTimer()
                    sIdActor = dt.Rows(i)("IdActor").ToString
                    sNombre = dt.Rows(i)("Nombre").ToString
                    sCodPelicula = dt.Rows(i)("CodPelicula").ToString
                    tGetTimer.StopTimer()
                    sTiempo = tGetTimer.ElapsedTime.ToString
                    objAcciones.CommandText = "INSERT INTO Tiempos (TiempoNombres) VALUES (sTiempo)"
                    objAcciones.ExecuteNonQuery()
                Next
            End If
        Catch ex As Exception
            MessageBox.Show(ex, "aviso")
            'MessageBox.Show("El proceso ha terminado en un estado impreciso", "Aviso")
        End Try

¿alguien ve dónde está el error?
Muchas gracias por la ayuda y disculpad las molestias!
  #2 (permalink)  
Antiguo 14/09/2006, 00:19
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 6 meses
Puntos: 1
Se me olvidó comentar que esta excepción salta también cuando intento borrar una tabla...

¿alguna idea al respecto?

Gracias
  #3 (permalink)  
Antiguo 14/09/2006, 05:29
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 6 meses
Puntos: 1
He capturado la excepción mostrando datos sobre la excepción y me mostraba este mensaje:

ExecuteNonQuery: Connection property has not been initialized

pensaba que lo había corregido añadiendo estas dos líneas de código
objAcciones.Connection = objAdapter
objAcciones.Connection.Open()

pero lo cierto es q ahora la excepción salta en la primera de esas dos líneas, y el mensaje es el siguiente:

Specified cast is not valid

¿Sabéis a qué se puede referir?

gracias!

Última edición por SuperPinwi; 14/09/2006 a las 06:35 Razón: añadir más datoss
  #4 (permalink)  
Antiguo 14/09/2006, 23:38
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años, 1 mes
Puntos: 50
veo que tu problema es que la variable no la estás concatenando las estás usando como parte de un string...

cambia ésto:
Cita:
sTiempo = tGetTimer.ElapsedTime.ToString
objAcciones.CommandText = "INSERT INTO Tiempos (TiempoNombres) VALUES (sTiempo)"
por ésto: (solo copia y pega)

Cita:
sTiempo = tGetTimer.ElapsedTime.ToString
objAcciones.CommandText = "INSERT INTO Tiempos (TiempoNombres) VALUES ('" + sTiempo + "')"
asegurate de colocar una comilla simple antes y despues de la comilla doble

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 15/09/2006, 00:16
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 6 meses
Puntos: 1
Cita:
Iniciado por RootK Ver Mensaje
veo que tu problema es que la variable no la estás concatenando las estás usando como parte de un string...

cambia ésto:


por ésto: (solo copia y pega)



asegurate de colocar una comilla simple antes y despues de la comilla doble

Salu2
Muchas gracias por la ayuda

pero el problema sigue sin resolverse sabes si hacen falta las dos líneas q mencioné antes?
objAcciones.Connection = objAdapter
objAcciones.Connection.Open()
es q con esas da error y sin ellas me dice que la propiedad de la conexión no está inicializada...
esto es muy raro

lo dicho mil gracias por la ayuda y si se te ocurre algo más dímelo por favor!! q estoy probando mil cosas y nada funciona
  #6 (permalink)  
Antiguo 15/09/2006, 02:35
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 6 meses
Puntos: 1
lo acabo de resolver
el problema estaba en que no había inicializado correctamente la propiedad de la conexión. En lugar de esto:

Código:
objAcciones.Connection = objAdapter
objAcciones.Connection.Open()
tenía q poner:

Código:
objAcciones.connection = objConn
jeje tan estúpido como tropezar con los cordones de los zapatos.

Gracias por las molestias ocasionadas

Hasta la próxima!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:40.