Error al insertar datos en tabla Access

28/10/2004 - 10:13 por Marcos Caballero | Informe spam
Buenos Dias compañeros:

Tengo el siguiente código:

Private Function AbrirBaseDatos()
' pasar esto a ADO .NET
' falta revisar mas datos originales, creo que hace algo mas aparte
de abrir

Dim ArchivoBaseDatos As String
Dim CadenaConexion As String

ArchivoBaseDatos = "C:\Datos.mdb"
CadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
ArchivoBaseDatos & ";"

Try
BaseDatos.ConnectionString = CadenaConexion
BaseDatos.Open()
MessageBox.Show("Base de Datos Abierta")

Catch ex As OleDb.OleDbException
MessageBox.Show("Error al abrir base de datos: " &
ex.ErrorCode.ToString)
Finally
If BaseDatos.State = ConnectionState.Open Then
BaseDatos.Dispose()
BaseDatos.Close()
End If
End Try
End Function

Private Function ActualizarBD(ByRef MesConexion As String, _
ByRef DiaConexion As String, _
ByRef HoraConexion As String, _
ByRef TipoConexion As String, _
ByRef UsuarioConectado As String, _
ByRef IPUsuarioConectado As String)
'Actualizamos en la BD los datos obtenidos del fichero de log
Dim InsertarDatos As String
Dim Fecha As String
Fecha = DiaConexion.Trim.ToUpper & "-" & MesConexion.Trim.ToUpper
NombreTabla = "Total_Acumulado_2004"
InsertarDatos = "INSERT INTO " & NombreTabla & _
" (Fecha, Hora, Usuario, Conexion, IP) VALUES ('" & Fecha & "', '" &
HoraConexion & "' ,'" & _
UsuarioConectado & "' ,'" & TipoConexion & "' ,'" &
IPUsuarioConectado & "');"
AbrirBaseDatos()
DatosBaseDatos.Connection = BaseDatos
DatosBaseDatos.CommandText = InsertarDatos
DatosBaseDatos.ExecuteNonQuery()

ActualizacionesDia = ActualizacionesDia + 1
End Function

El llegar a la parte del ExecuteNonQuery, me da el siguiente error:

An unhandled exception of type 'System.InvalidOperationException' occurred
in system.data.dll

Additional information: ExecuteNonQuery requires an open and available
Connection. The connection's current state is Closed.
 

Leer las respuestas

#1 Marcos Caballero
28/10/2004 - 10:19 | Informe spam
Nada, ya lo encontré.
Me sobra en el AbrirBaseDatos la parte del Finally


Gracias

"Marcos Caballero" escribió:

Buenos Dias compañeros:

Tengo el siguiente código:

Private Function AbrirBaseDatos()
' pasar esto a ADO .NET
' falta revisar mas datos originales, creo que hace algo mas aparte
de abrir

Dim ArchivoBaseDatos As String
Dim CadenaConexion As String

ArchivoBaseDatos = "C:\Datos.mdb"
CadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
ArchivoBaseDatos & ";"

Try
BaseDatos.ConnectionString = CadenaConexion
BaseDatos.Open()
MessageBox.Show("Base de Datos Abierta")

Catch ex As OleDb.OleDbException
MessageBox.Show("Error al abrir base de datos: " &
ex.ErrorCode.ToString)
Finally
If BaseDatos.State = ConnectionState.Open Then
BaseDatos.Dispose()
BaseDatos.Close()
End If
End Try
End Function

Private Function ActualizarBD(ByRef MesConexion As String, _
ByRef DiaConexion As String, _
ByRef HoraConexion As String, _
ByRef TipoConexion As String, _
ByRef UsuarioConectado As String, _
ByRef IPUsuarioConectado As String)
'Actualizamos en la BD los datos obtenidos del fichero de log
Dim InsertarDatos As String
Dim Fecha As String
Fecha = DiaConexion.Trim.ToUpper & "-" & MesConexion.Trim.ToUpper
NombreTabla = "Total_Acumulado_2004"
InsertarDatos = "INSERT INTO " & NombreTabla & _
" (Fecha, Hora, Usuario, Conexion, IP) VALUES ('" & Fecha & "', '" &
HoraConexion & "' ,'" & _
UsuarioConectado & "' ,'" & TipoConexion & "' ,'" &
IPUsuarioConectado & "');"
AbrirBaseDatos()
DatosBaseDatos.Connection = BaseDatos
DatosBaseDatos.CommandText = InsertarDatos
DatosBaseDatos.ExecuteNonQuery()

ActualizacionesDia = ActualizacionesDia + 1
End Function

El llegar a la parte del ExecuteNonQuery, me da el siguiente error:

An unhandled exception of type 'System.InvalidOperationException' occurred
in system.data.dll

Additional information: ExecuteNonQuery requires an open and available
Connection. The connection's current state is Closed.

Preguntas similares