Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

400
Visualizações
SEHException en la conexión OleDb abierta

Estoy desarrollando una pequeña aplicación que simplificará el registro, lo hace agregando algunas entradas a una base de datos de MS Access a través de OleDB.

 let private conn = new OleDbConnection(connectionString) let private submitCmd date wins = let cmd = new OleDbCommand("INSERT INTO ArenaStats ([Date], [Wins]) VALUES (@Date, @Wins)", Connection = conn, CommandType = CommandType.Text) ["@Date", box date; "@Wins", box wins] |> List.iter (cmd.Parameters.AddWithValue >> ignore) cmd let private submit date wins = try conn.Open() (submitCmd date wins).ExecuteNonQuery() |> ignore finally conn.Close() [<CompiledName "AddEntry">] let addEntry(date:DateTime, wins:int) = submit date wins

Ahora probar esto a través de FSI funciona tal como se esperaba. Sin embargo, cuando consumo esta API de un proyecto WPF de C#, generará una SEHException en conn.Open() . Realmente me estoy rascando la cabeza sobre por qué sucede esto.

Editar

Como se sugirió, también intenté implementar el mismo código puramente en C# y en el mismo proyecto, arrojará la misma excepción en el mismo lugar, pero estoy publicando el código a continuación como referencia.

 class MsAccessDatabase : IArenaWinsDatabase { private OleDbConnection connection = new OleDbConnection(connectionString); private OleDbCommand SubmitCommand(DateTime date, int wins) { return new OleDbCommand("INSERT INTO ArenaStats ([Date], [Wins]) VALUES (@Date, @Wins)") { Connection = connection, CommandType = System.Data.CommandType.Text, Parameters = { new OleDbParameter("@Date", date), new OleDbParameter("@Wins", wins) } }; } public void Submit(DateTime date, int wins) { try { connection.Open(); SubmitCommand(date, wins).ExecuteNonQuery(); } finally { connection.Close(); } } }
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Con un poco de ayuda de Philip pude resolverlo. Parece que, de forma predeterminada, FSI está configurado para ejecutarse en 64 bits de forma predeterminada, mientras que el proyecto WPF está configurado para "preferir 32 bits". Cambiar la plataforma de destino para el proyecto WPF a 64 bits resolvió el problema.

over 4 years ago · Santiago Trujillo Relatório

0

Al intentar ejecutar el siguiente código:

 var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", FilePath); OleDbConnection OleDbConnection = new System.Data.OleDb.OleDbConnection(connectionString); OleDbConnection.Open();

Se lanza una excepción SEHException en tiempo de ejecución , con el mensaje de error 'El componente externo ha lanzado una excepción'

Esto suele ocurrir cuando la plataforma de configuración de compilación en Visual Studio es incorrecta, esto puede ocurrir en ambas plataformas de configuración de compilación, x86 y x64.

Esto se debe a una discrepancia entre la plataforma de configuración de compilación de su proyecto y el motor de base de datos de Microsoft Access que está instalado en su máquina.

Para resolver este error:

  • Cambie la plataforma de configuración de compilación en Visual Studio: asegúrese de que coincida con la versión del motor de base de datos de Microsoft Access en su máquina
  • Vuelva a compilar y ejecute su proyecto
  • El error de tiempo de ejecución ahora debería estar resuelto
over 4 years ago · Santiago Trujillo Relatório

0

Sé que este es un hilo muy antiguo, pero me encontré con el mismo problema con una solución diferente.

Cuando instalé Access Database Engine 2016 Redistributable (x64) para el proveedor ACE, el instalador me dio un error de que VCRUNTIME140.DLL no estaba instalado, pero el instalador se completó de todos modos y el proveedor ACE estaba disponible.

Desinstalar Access Database Engine, instalar VC++ 2015 Redistributable R3 ( https://www.microsoft.com/en-us/download/confirmation.aspx?id=52685 ) y luego volver a instalar Access Database Engine resolvió el problema.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda