Ir para conteúdo
  • Cadastre-se

dev botao

Falha na validação - AcbrNcm´s


Ver Solução Respondido por carlosevania dias,
  • Este tópico foi criado há 2498 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia,
estou efetuando uma consulta simples utilizando a Classe TAcbrNcm´s dentro da Minha classe de validação dos dados do Ncm, estava funcionando perfeitamente, porém 5 ou 6 dias atraz , por volta das 2 horas da manhã estava testando e sempre me retornava erros, pensei que fosse o servidor web que poderia estar passando por manutenções, na manhã segunte atualizei como de prátiica o trunk do acbr, não houveram alterações no componente, mas porém o que acontece, ele só valida se estiver em branco, ou seja se eu passar um valor nullo ele gera um timeout na aplicao e não está me gerando a exception, e quando informo um valor como por exemplo '12345678' ele passa normalmente e não valida o Ncm... gostaria de saber se estou usando erroneamente a Classe TAcbrncm´s ou é algo que deva ser avaliado pela equipe?
  Devo ter certeza que sou eu quem não esteja consumindo corretamente a classe AcbrNcm´s, devo estar utilizando de forma incorreta , mas gostaria de uma avaliação sobre o uso desse cara na classe.!   

unit TValidaNcm;

interface

  uses ACBrNCMs, SysUtils;

  Type
    TValidaNcmCest
= class(TObject)
      private
        FTACBrNCMs: TACBrNCMs;
        FValorNcm : String;
        procedure setValorNcm (const Value: String);

      protected

      public
        property ACBrNCMs1: TACBrNCMs read FTACBrNCMs write FTACBrNCMs;
        Property valorNcm : String read FValorNcm write setValorNcm;
        constructor Create (aValueNcm: String);
        destructor Destroy; override;

      published

    end;

implementation

  { TValidaNcmCest }

  uses ResourceMessages, DmSrvProd;

  constructor TValidaNcmCest.Create (aValueNcm: String);
    begin
      self.valorNcm := aValueNcm;
    end;

  destructor TValidaNcmCest.Destroy;
    begin
      inherited;

      self.ACBrNCMs1.DisposeOf;
    end;

  procedure TValidaNcmCest.setValorNcm (const Value: String);
    begin

      FTACBrNCMs := TACBrNCMs.Create (Nil);

      FValorNcm  := Value;
      try
        FTACBrNCMs.Validar ( FValorNcm );
      Except
        on E: EACBrNcmException do        
               TResourceMessages.OngetCodeNcmerror         
      end;
    end;

end.

Editado por carlosevania dias
Ajustes na Formatação dos textos.
Link para o comentário
Compartilhar em outros sites

  • Moderadores
34 minutos atrás, carlosevania dias disse:

  procedure TValidaNcmCest.setValorNcm (const Value: String);
    begin

      FTACBrNCMs := TACBrNCMs.Create (Nil);

Uma nova instância do ACBrNCM é criada a cada alteração do NCM, vazamento de memória. Coloque no Create da classe.

35 minutos atrás, carlosevania dias disse:

      try
        FTACBrNCMs.Validar ( FValorNcm );
      Except
        on E: EACBrNcmException do        
               TResourceMessages.OngetCodeNcmerror         
      end;

Você não está tratando o resultado do método Validar pra saber se o NCM é válido ou não, e tratando apenas uma classe de exceção, inclua a on E:Exception do aí.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Solution

Então rapaz, eu consegui agorinha, até postei na comunidade, agorinha mesmo, troquei o try para chegar a condição, para o famoso if ...

 procedure TValidaNcmCest.setValorNcm (const Value: String);
    begin
      FTACBrNCMs := TACBrNCMs.Create (Nil);
      FValorNcm  := Value;
      if FTACBrNCMs.Validar (Value) = true then 
         DmSrvProd.DTmServerCadProd.CDSCADPROD.FieldByName ('ENTR_NCM').FocusControl
      end 
        raise EListError.Create(TResourceMessages.OngetCodeNcmerror) at ReturnAddress;
    end;

 

8 minutos atrás, BigWings disse:

Uma nova instância do ACBrNCM é criada a cada alteração do NCM, vazamento de memória. Coloque no Create da classe.

Você não está tratando o resultado do método Validar pra saber se o NCM é válido ou não, e tratando apenas uma classe de exceção, inclua a on E:Exception do aí.

Então o porém é que o método Set.. da property está sendo acionado no constuctor da Classe, e justamente o metodo set é o cara que faz o que eu preciso, ja no caso de nova instância, o metodo desctuctor da classe ja está se encarregando de liberar o cara ao final de cada pesquisa.

Editado por carlosevania dias
Ajustes na Formatação dos textos.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2498 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...