+3 votos
53 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 (107 pontos) | 53 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 (107 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 (353 pontos)
republicada por
Melhores May 2020
  1. henrique.muller

    18 Pontos

  2. joao.melo

    14 Pontos

  3. joseglauber

    11 Pontos

  4. SlimShady

    7 Pontos

  5. willian.metalsystem

    6 Pontos

  6. lucas.melo

    3 Pontos

  7. fluipress.luciano

    2 Pontos

  8. pajucara.wallacef

    2 Pontos

  9. jean.filho

    2 Pontos

  10. maicon.pereira

    2 Pontos

200 pontos
Melhores 2020 May 25 - 31
    433 perguntas
    476 respostas
    346 comentários
    466 usuários