Jump to content

dev botao

tipo de dado incorreto c/ Firedac & Firebird


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

Recommended Posts

  • Membros Pro

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

Link to comment
Share on other sites

  • Moderadores
  • Solution

Boa noite

na verdade é retro compatibilidade.

tu pode remover os fields e adicionar correto, bastando configurar corretamente o fdconnection e as params

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
 

 

Link to comment
Share on other sites

  • Membros Pro

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

Link to comment
Share on other sites

  • Moderadores
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
 

 

Link to comment
Share on other sites

  • Este tópico foi criado há 1509 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.