Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • Membros Pro
Postado

Boa tarde, tem uma validação no bloco K para a escrita que está com um comportamento estranho.

No arquivo ACBrEFDBloco_K_Class (função WriteRegistroK200) há o seguinte código (joguei em variáveis para visualização), onde mesmo as datas sendo iguais é acusado diferenças, e consequentemente dá erro.
Porém, só acontece quando a data final não é o fim do mês.

image.thumb.png.98a5ebc07e7f1a43e32efad9de190146.png

 

Ao alterar o código para usar o CompareDateTime da DateUtils o código já funciona "normalmente".
Acredito que seja por conta do armazenamento de Double que causa uma diferença pela precisão, algo muito insignificante, mas que dispara a validação.
Provavelmente tem mais locais no código que fazem esse tipo de comparação e pode levar a esses problemas.
 

        t1 := RegK100.RegistroK200.Items[intFor].DT_EST;
        t2 := RegK100.DT_FIN;
        teste := CompareDateTime(t1,t2);

        if teste <> EqualsValue then //Não retorna true
          raise Exception.Create('A data do estoque deve ser igual à data final do período de apuração – campo DT_FIN do Registro K100');

        if t1 <> t2 then //Retorna true, dispara a Exception
          raise Exception.Create('A data do estoque deve ser igual à data final do período de apuração – campo DT_FIN do Registro K100');


É passível de correção nos fontes oficiais ?

  • Membros Pro
Postado

Realmente, é uma opção, mas como os registros estão tipados com TDateTime acho que ainda pode acontecer esse problema nas comparações, justamente pela tipagem. (Suposição apenas, já tive alguns problemas com Delphi por conta disso e no fim do dia a lógica estava correta mas as variáveis continham valores "default" às vezes não inicializadas corretamente e causavam esses comportamentos anormais)

Ainda acho válida a alteração, talvez não com a urgência mas seria -1 ponto de falha para o futuro.
 

  • Moderadores
Postado
4 minutos atrás, Datacamp disse:

Realmente, é uma opção, mas como os registros estão tipados com TDateTime acho que ainda pode acontecer esse problema nas comparações, justamente pela tipagem. (Suposição apenas, já tive alguns problemas com Delphi por conta disso e no fim do dia a lógica estava correta mas as variáveis continham valores "default" às vezes não inicializadas corretamente e causavam esses comportamentos anormais)

Ainda acho válida a alteração, talvez não com a urgência mas seria -1 ponto de falha para o futuro.
 

pois como sei que é tipo DATA eu gravo somente a data, pois ele não trata hora nesse caso

eu meu banco está como DATA e eu gravo já ele como data

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Consultores
Postado

Tópico movido para a área do ACBr Pro, para que o SLA de respostas seja considerado

5 horas atrás, Datacamp disse:


É passível de correção nos fontes oficiais ?

Por favor anexe o fonte com a sugestão de correção para análise.

  • Curtir 1
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.