¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Solução para o erro System.BadImageFormatException ao tentar executar um complemento SAPBouiCOM.DataTable com VB.NET

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 1 Vistas
0
Cargando...

Especialistas,

Tenho trabalhado em uma função para inserir um DataTable do VB.NET e analisar os elementos automaticamente em um SAPBouiCOM.DataTable, para então poder enviar os dados eventualmente para o banco de dados do SAP utilizando a DI API.

No entanto, ao tentar executar meu complemento, recebo o seguinte erro:


System.BadImageFormatException ocorreu
  HResult=-2147024703
  Message=A obtenção da fábrica de classes COM para o componente com CLSID {1B832D56-1A5A-4681-BB05-FE957666BF33} falhou devido ao seguinte erro: 800700c1 não é um aplicativo Win32 válido. (Exceção de HRESULT: 0x800700C1).
  Source=mscorlib
  StackTrace:
       at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
       at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
       at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
       at System.Activator.CreateInstance(Type type, Boolean nonPublic)
       at System.Activator.CreateInstance(Type type)
       at ASAP_Shipping_AddOn.modMain.ConvertVBDataTableToSAPDataTable(DataTable dtInput) in D:\Sandbox - Westley\ASAP Shipping AddOn\ASAP_Shipping_AddOn\ASAP_Shipping_AddOn\RestockStoreQuery\modMain.vb:line 170
  InnerException: 

E o ponto de erro é simplesmente:


Dim dtSAPOutput As New SAPbouiCOM.DataTable

Aí é onde o erro ocorre. Já verifiquei todas as minhas referências, e elas deveriam estar configuradas para apontar para versões de 64 bits das várias DLL. Não entendo por que o Visual Studio está tentando fazer algo em um ambiente de 32 bits.

Alguém tem alguma ideia sobre isso?

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá Westley,

Um SAPbouiCOM.DataTable não possui um construtor exposto para nós, portanto, não podemos criá-lo usando a palavra-chave 'new'.

Como Pedro apontou, o SAPbouiCOM.DataTable está vinculado a um formulário.

Se você não tiver um formulário neste ponto, primeiro precisa criar o formulário.

SAPbouiCOM.Form oForm = SBO_Application.Forms.Add("frmUID", BoFormTypes.ft_Fixed, -1);

Adicione o DataTable a seguir.

SAPboiCOM.DataTable oDT = oForm.DataSources.DataTables.Add("TableUID");

Dito isso, seu objetivo de copiar um DataTable do .Net para SAPbouiCOM.DataTable

 para então empurrar os dados eventualmente para o banco de dados do SAP usando a API DI

Não pode ser alcançado.

Um SAPbouiCOM.DataTable não pode enviar automaticamente os dados para o banco de dados do SAP, ainda precisará obter os valores célula por célula e confirmá-los no objeto SAP.

No entanto, um SAPbouiCOM.DBDataSource pode fazer isso (de uma maneira específica e limitada).

A única coisa que você pode alcançar com isso é exibir os registros do DataTable do .Net em um SAPbouiCOM.Grid ou SAPbouiCOM.Matrix.

Saudações

Edy

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Prezado Sr. Magueija,

Lamento, mas não estou vendo o exemplo. Talvez haja algum problema com meu navegador, poderia por favor republicar o exemplo em uma nova mensagem ou confirmar se modificou sua publicação original para mim?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Westley,

Adicionei um exemplo ao post anterior.

Geralmente, a forma recomendada de "obter" o DataTable é usando seu id (como uma string). O índice inteiro também funciona, mas é mais complicado.

Saudações.


Cumprimentos,

Pedro Magueija


Ver o perfil de Pedro Magueija no LinkedIn

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Caro Sr. Magueija,

Sua explicação faz sentido. Você tem um exemplo desse processo que eu possa revisar?

Suponho que você está se referindo a abrir um novo formulário no SAP e associar um novo "DataTable" em branco com a matriz do formulário SAP... está correto? Se sim, qual é o objeto que devo obter? SAPForm.DataSources.DataTables.Item(0)... ou algo assim?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?