+4 votos
164 visitas

De acordo com o roteiro da wiki (http://wiki.benner.com.br/wiki/index.php?title=Manipula%C3%A7%C3%A3o_de_entidades_em_VBA_e_em_Delphi) implementei a dll BefLearning para que a macro da tabela Estados (Que não está marcada para executar entidade especializada e não tem entidade vinculada) possa chamar o método cancelar, porém sempre temos o erro:

(&H80131522) Não foi possível carregar o tipo BefLearning.Documento do assembly Benner.Tecnologia.ManagedInterop, Version=2008.0.0.0, Culture=neutral, PublicKeyToken=f2db26731026fd37.

Tem algum segredo para isso funcionar ? Segue a Classe e a Macro:

namespace BefLearneing
{
    public class Estados : BusinessEntity<Estados>
    {
        public static void Cancelar(string motivo, bool enviaAviso)
        {
            // regra de negócio
            throw new BusinessException("Teste de chamada pela macro");
        }
    }
}

 

Public Sub TABLE_BeforePost(CanContinue As Boolean)

    Dim funcaoCancelar As CSEntityCall

    Set funcaoCancelar = BusinessEntity.CreateCall("BefLearning.Documento", "Cancelar")

    funcaoCancelar.AddParameter(pdtAutomatic, "Saldo insuficiente.")
    funcaoCancelar.AddParameter(pdtAutomatic, True)

    funcaoCancelar.Execute()

End Sub

 

Já fizemos testes de diversas maneiras e não conseguimos fazer funcionar. (Runner 15.0)

por (115 pontos) | 164 visitas

2 Respostas

+2 votos
Melhor resposta
O Henrique da Tecnologia me ajudou a resolver o problema e para que todos possam saber como usar, segue os procedimentos:

 

- Vincular uma classe a entidade da tabela mas não precisa marcar para usar entidade especializada.

- No BusinessEntity.CreateCall no primeiro parâmetro passar o fullname da classe concatenado de ", " e concatenado com o nome do assembly, e no segundo parâmetro o nome do método. Segue como ficou:

 

    Dim funcaoCancelar As CSEntityCall

    Set funcaoCancelar = BusinessEntity.CreateCall("BefLearning.Documento, BefLearning", "Cancelar")

    funcaoCancelar.AddParameter(pdtAutomatic, "Saldo insuficiente.")
    funcaoCancelar.AddParameter(pdtAutomatic, True)

    funcaoCancelar.Execute()
por (115 pontos)
0 votos
Rodrigo,

Vincule no Builder a entidade gerada à tabela (apenas vincular, não necessário marcar a tabela para executar entidade especializada).
Posteriormente utilize BusinessEntity.CreateCall("NOME_TABELA", "NomeMetodo")
por (367 pontos)
republicada por
Melhores Aug 2025
    200 pontos
    Melhores 2025 Jul 28 - Aug 03
    1. Larson

      156 Pontos

    2. danilo.pereira

      96 Pontos

    3. danilo.pereira

      96 Pontos

    4. danilo.pereira

      96 Pontos

    5. luciano.fronza

      61 Pontos

    6. luciano.fronza

      61 Pontos

    7. luciano.fronza

      61 Pontos

    8. diuari.molinari

      52 Pontos

    9. diuari.molinari

      51 Pontos

    10. diuari.molinari

      51 Pontos

    517 perguntas
    566 respostas
    389 comentários
    704 usuários