Jump to content

dev botao

tipo de dado incorreto c/ Firedac & Firebird


Go to solution Solved by Juliomar Marchetti,
  • Este tópico foi criado há 1577 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Posted

prezados, boa tarde

hoje em dia uso Delphi 2010, Firebird 2.52, DBX (dbExpress) e tudo certo
estou migrando p/ Delphi 10.4, Firebird 3.0 e FireDAC e resolvi fazer a migração "no braço", entre outras razões para aprender sobre o novo ambiente

topei com uma situação incomum, procurei informações e não encontrei

antes de reportar o problema à Embarcadero resolvei consulta-los, até mesmo para confirmar tratar-se efetivamente de um problema

num SELECT usando o FDQuery um campo tipo Numeric(7,3) ou Numeric(9,3) gera campo Currency com Precision 15 - para manutenção da configuração original só usando CAST as Numeric(18,3)

esse mesmo campo se utilizo MAX ou MIN num SELECT gera campo BCD e aqui não adiantou o CAST

e esse problema ocorre em qq tabela em campos com essa configuração (inteiros menor que 10 e decimal maior que 2) - inteiro maior que 10 está ok, ao menos até onde pude ver

então, usando Delphi 10.4 esse problema inicialmente identificado c/ Firebird 3 também se repetiu com 2.52 usando o FireDAC, mas não usando o DBX - aparentemente o problema é do FireDAC

configurando o "Data Mapping Rules" no FDConnection ou em FDQuery e mapeando esses tipos estranhos ao Firebird para FmtBCD (como é originalmente gerado) aí tudo funciona legal

pelo que sei esse mapeamento de conversão de tipo de campo seria aplicável apenas para equalizar tipos de bancos distintos usados na aplicação e compartilhando o mesmo código - foi o que vi numa apresentação do Fernando Rizzato

no caso presente o que está ocorrendo é atribuição de tipo estranho ao banco de dados - Currency e BCD não existem no Firebird

a principio o problema está resolvido mas estou agora com "a pulga atrás da orelha" pq não sei se pode haver outras implicações, se o driver do Firebird está devidamente incorporado pelo FireDAC, se não terei problemas outros em decorrência desse...

obrigado por seus comentários ou sugestão

  • Membros Pro
Posted

obrigado por seu comentário, Juliomar
mas não pode ser retro compatibilidade pq esses tipos nem existem nesse banco de dados

o campo gerado "come" uma casa decimal quando é 3, ou seja, deforma o conteúdo

CAST deveria ser respeitado na condição especificada mas não é em alguma situações

me parece muito mais que pegaram o driver de outro banco e começaram a adapta-lo para o Firebird e não concluiram, não testaram

o problema é contornável, mas "contornar", neste caso, não deveria ser uma preocupação

vou aguardar outros comentários

obrigado mais uma vez

Otavio Benini

  • Moderadores
Posted
55 minutos atrás, Otavio Benini disse:

mas não pode ser retro compatibilidade pq esses tipos nem existem nesse banco de dados

exatamente ele não existe e está sendo feito uma compatibilidade para poder usar sem modificar a fundo seu sistema.

 

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
 

 

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...