Ir para conteúdo
  • Cadastre-se

dev botao

tipo de dado incorreto c/ Firedac & Firebird


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

Recommended Posts

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 para o comentário
Compartilhar em outros 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_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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 para o comentário
Compartilhar em outros 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_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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