[firebase-br] Como prevenir o erro "Arithmetic exception, numeric overflow, or string truncation. string right truncation."

Luciano franca luapfirebird em yahoo.com.br
Ter Ago 9 08:18:10 -03 2016


usar TFields está fora de questão,  pois teria que mexer no sistema inteiro que é muito grande.
Sobre usar Procedures no Firebird,  você diz deixar a SP fazer o insert ou update é isso ?
pois se for isso também não tem Jeito,  eu uso apenas TEdit e insiro os dados no banco Usando a seguinte logica :
Query1.Append;Query1.FieldByName('Campo_Teste').Asstring := Edit1.Text;Query1.Post;
Não pretendo mudar essa ideia pois é muito grande o sistema para fazer isso assim penso e criar algo para trazer no proprio banco de dados.
Com SP teria alguma forma de fazer isso ?
Grato. 

    Em Segunda-feira, 8 de Agosto de 2016 16:38, Gladiston Santana <gladiston em vidy.com.br> escreveu:
 

 Luciano,
Se você trabalha com Delphi, pode usar os TFields, pois os mesmos importam as características do campo, se for um varchar(30), o maxlenth dum dbedit também será 30.
Uma outra abordagem é as inclusões/alterações por meio de stored procedure(SP). Neste caso os parâmetros da SP podem ser mais generosos do que o convencionalmente aceito na tabela, por exemplo, varchar(255) para todos os parâmetros strings da SP. Daí. de dentro da SP você faz a sanitização que precisar antes de proceder a inclusão ou alteração. Além de se preocupar com o tamanho, a sanitização poderá remover traços, pontos de um CNPJ, estudar se o valor de um campo deverá ser aceito ou não, etc... A vantagem dessa abordagem é que o mesmo método atenderia diferentes linguagens de programação e a validação dos dados pode ser deixada para a SP. Além disso, o UPDATE/INSERT que fizer na SP podem ser acrescidos RETURNING VALUES e com pouco esforço sua SP se tornar selecionável e daí o seu programa saberia exatamente o que acabou de ser incluso ou alterado.  Isso é uma mão na roda quando você tem que acrescentar um registro e obter imediatamente o valor de autoincremento que foi incluso.
O único defeito desse método é que as SPs de um banco de dados não são cambiáveis para outro BD. Se um dia trocar de BD, terá de reescreve-las na linguagem PSQL que o novo BD usar, isso se for possível.


  


Mais detalhes sobre a lista de discussão lista