Error de formato tablas en visual basic

Tengo el siguiente error y no se como corregirlo. Ya he mirado las declaraciones, las tablas y mucho más pero no lo encuentro.. Mil garcías.
System. Data. OleDb. OleDbException: La tabla externa no tiene el formato esperado. En System. Data. OleDb. OleDbConnectionInternal.. Ctor(OleDbConnectionString constr, OleDbConnection connection) en System. Data. OleDb. OleDbConnectionFactory. CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) en System. Data. ProviderBase. DbConnectionFactory. CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) en System. Data. ProviderBase. DbConnectionFactory. GetConnection(DbConnection owningConnection) en System. Data. ProviderBase. DbConnectionClosed. OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) en System. Data. OleDb. OleDbConnection. Open() en proyecto. Guia.btnRealizarCarga_Click(Object sender, EventArgs e) en C:\Users\Jose Ignacio\Desktop\Proyecto Alfa\Projects\proyecto\proyecto\guia.aspx.vb:línea 70

2 respuestas

Respuesta
1
A ver ponme la linea 70.
Protected Sub btnRealizarCarga_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnRealizarCarga.Click
Try
Dim datos As New datos
Dim NumeroGuia As Integer
Dim CodigoDest As Integer
Dim cantidad As Integer
Dim CodigoProd As Integer
Dim estado As String
Dim MiConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties = 'Excel 8.0'; Data Source=C:\Users\Jose Ignacio\Desktop\Pruebilla.xlsx")
Dim MiAdaptador As New OleDbDataAdapter("SELECT * FROM [Hoja1$]", MiConexion)
Dim dt As New DataTable
Dim commandbuilder As New OleDb.OleDbCommandBuilder(MiAdaptador)
MiConexion.Open()
MiAdaptador.Fill(dt)
MiConexion.Close()
If ValidarXls(dt) = True Then
'Rows = Fila
'Item = Columna
Dim i As Integer
For i = 0 To dt.Rows.Count - 1
NumeroGuia = dt.Rows(i).Item(0)
CodigoDest = dt.Rows(i).Item(1)
cantidad = dt.Rows(i).Item(2)
CodigoProd = dt.Rows(i).Item(3)
estado = dt.Rows(i).Item(4)
If datos.Crearguia(NumeroGuia, CodigoDest, cantidad, CodigoProd, estado) = False Then
lblMensaje.Text = "Ha ocurrido un error al momento de guardar los registros"
Exit Sub
End If
Next
lblMensaje.Text = "Carga masiva de Usuarios realizada con Exito!!!!!"
Else
lblMensaje.Text = "ha ocurrido un error al momento de validar el Excel"
End If
Catch ex As Exception
lblMensaje.Text = ex.ToString
End Try
End Sub
Hay una columna en el XLS que no está bien, o dañada, tu problema va por el XLS.
Respuesta
1
¿Qué tipo de base de datos es?
SQL 2005
Yo creoq ue tienes mal la cadena de conexión que estas utilizando, y porque usas OlEdb y no el conector nativod e SQL si la base de datso es SQL Server, si tu mismo hiciste al clase de conexión a la base de datos verifica que el objeto oledbconnection este incializado
Hola..
¿Me puedes indicar por favor como hacerlo?
Te digo de antemano que mis conocimientos del tema son básicos.
Mil grcacias.
Hola...
Te digo que no he podido solucionar este problema que me tiene en jake pues debo sustentar este proyento en la universidad y se me acaba el tiempo.
¿Qué más puedo hacer?
Mul gracias.
Si usas un control de acceso a datos vuélvelo a conectar, a actualizar o bórralo y lo vuelves a crear
Hola... este error me tiene cabezón... Solo me falta esto para poder terminar la aplicación.
Este es el error:
System.Data.OleDb.OleDbException: La tabla externa no tiene el formato esperado. en System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) en System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) en System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) en System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) en System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) en System.Data.OleDb.OleDbConnection.Open() en proyecto.guia.btnRealizarCarga_Click(Object sender, EventArgs e) en C:\Users\Jose Ignacio\Desktop\Proyecto Alfa\Projects\proyecto\proyecto\guia.aspx.vb:línea 72
Y esto es el código de la carga, creo que puede estar mala la conexión al excel pero no encuentro como solucionarlo:
Protected Sub btnRealizarCarga_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnRealizarCarga.Click
Try
Dim datos As New datos
Dim NumeroGuia As Integer
Dim CodigoDest As Integer
Dim cantidad As Integer
Dim CodigoProd As Integer
Dim estado As String
Dim codigoMens As Integer
Dim MiConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties = 'Excel 8.0'; Data Source=C:\Users\Jose Ignacio\Desktop\pruebilla.xlsx")
Dim MiAdaptador As New OleDbDataAdapter("SELECT * FROM [Hoja1$]", MiConexion)
Dim dt As New DataTable
Dim commandbuilder As New OleDb.OleDbCommandBuilder(MiAdaptador)
MiConexion.Open()
MiAdaptador.Fill(dt)
MiConexion.Close()
If ValidarXls(dt) = True Then
'Rows = Fila
'Item = Columna
Dim i As Integer
For i = 0 To dt.Rows.Count - 1
NumeroGuia = dt.Rows(i).Item(0)
CodigoDest = dt.Rows(i).Item(1)
cantidad = dt.Rows(i).Item(2)
CodigoProd = dt.Rows(i).Item(3)
estado = dt.Rows(i).Item(4)
codigoMens = dt.Rows(i).Item(5)
If datos.Crearguia(NumeroGuia, CodigoDest, cantidad, CodigoProd, estado, codigoMens) = False Then
lblMensaje.Text = "Ha ocurrido un error al momento de guardar los registros"
Exit Sub
End If
Next
lblMensaje.Text = "Carga masiva de Usuarios realizada con Exito!!!!!"
Else
lblMensaje.Text = "ha ocurrido un error al momento de validar el Excel"
End If
Catch ex As Exception
lblMensaje.Text = ex.ToString
End Try
End Sub
Y esta es la funcion :
Function Crearguia(ByVal NumeroGuia As Integer, ByVal CodigoDest As Integer, ByVal cantidad As Integer, ByVal CodigoProd As Integer, ByVal estado As String, ByVal codigoMens As Integer) As Boolean
Dim Conmydata As SqlConnection 'para conectar con la base datos'
Dim cmdselect As SqlCommand 'sqlcommand sirve para ejecutar una instruccion de sql'
Dim strsql As String ' strsql variable donde se almacena la intruccion a ejecutar'
strsql = "insert into Guia values ('" & NumeroGuia & "','" & CodigoDest & "','" & cantidad & "','" & CodigoProd & "','" & estado & "','" & codigoMens & "')"
Conmydata = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("StrCon").ConnectionString)
cmdselect = New SqlCommand(strsql, Conmydata)
cmdselect.CommandType = CommandType.Text
Try
Conmydata.Open() 'intenta ejecutar la instrucción, si no puede arroja la excepción o el error'
cmdselect.ExecuteNonQuery()
Conmydata.Close()
Return True
Catch ex As Exception
Return False
End Try
End Function
Como vera es algo así como mato al tigre y se asusto con la piel... je je...
Mil gracias
Al parecer tu cadena e conexión esta mal, pues estas utilizando archivos .xlsx y esos tienen cadenas de conexión diferentes a la que muestras en el código.
Aquí encuentras ejemplos de las cadenas de conexión para archivos .xlsx:
http://connectionstrings.com/excel-2007

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas