2,3 is not a valid BCD value, ERRO TFMTBCDField - Desafio!!
Bom dia Galera,
Estou já há alguns dias com este problema, depois de várias pesquisas e mais pesquisas, nao encontrei como resolver o dito problema.
Uso Delphi 7.0 / Firebird 2.0 / DvExpress.
Estou desenvolvendo uma aplicação para rodar via WEB usa SOAPConnection / ClientDataset / DataSource - No Client
SOAPDispatcher / SOAPPascalInvoker / WSDLHTMLPublish No ServidorWEB
SQLConnection / DataSetProvider / SQLDataSet No Servidor
No Servidor para criar a DLL para conexão com o Client.
Bom, o meu problema esta nos campos com valores (Numeric(15,2) do tipo TFMTBCDField. O dito nao aceita o uso de vírgulas (,), na mascara do campo.
E quando digita-se a vírgula ele da o erro ´2,3 is not a valid BCD value´...
Encontrei um colega que teve que criar um Edit para jogar o valor e depois transformá-lo para jogar no BD. Mais uma, no IbExpert, posso informar o valor Ex 15,98 e tudo normal, agora na aplicação dá o maldito erro.
Agora, tem mais uma. Tenho uma outra aplicação que uso o banco de dados local, sem o uso da DLL, tem a mesma estrutura dos campos, ´FUNCIONA NORMAL´.... não entendo isso...
To esquecendo de algo, ou não tem solução mesmo?
Aguardo a ajuda dos amigos sofredores.... quando encontram problemas do tipo. Vlw galera... espero ter sido claro...
Estou já há alguns dias com este problema, depois de várias pesquisas e mais pesquisas, nao encontrei como resolver o dito problema.
Uso Delphi 7.0 / Firebird 2.0 / DvExpress.
Estou desenvolvendo uma aplicação para rodar via WEB usa SOAPConnection / ClientDataset / DataSource - No Client
SOAPDispatcher / SOAPPascalInvoker / WSDLHTMLPublish No ServidorWEB
SQLConnection / DataSetProvider / SQLDataSet No Servidor
No Servidor para criar a DLL para conexão com o Client.
Bom, o meu problema esta nos campos com valores (Numeric(15,2) do tipo TFMTBCDField. O dito nao aceita o uso de vírgulas (,), na mascara do campo.
E quando digita-se a vírgula ele da o erro ´2,3 is not a valid BCD value´...
Encontrei um colega que teve que criar um Edit para jogar o valor e depois transformá-lo para jogar no BD. Mais uma, no IbExpert, posso informar o valor Ex 15,98 e tudo normal, agora na aplicação dá o maldito erro.
Agora, tem mais uma. Tenho uma outra aplicação que uso o banco de dados local, sem o uso da DLL, tem a mesma estrutura dos campos, ´FUNCIONA NORMAL´.... não entendo isso...
To esquecendo de algo, ou não tem solução mesmo?
Aguardo a ajuda dos amigos sofredores.... quando encontram problemas do tipo. Vlw galera... espero ter sido claro...
Alexpaes
Curtidas 0
Respostas
Alexpaes
28/11/2008
- Fui no FMTBCD.pas para mudar algumas linhas de código informadas por um colega nosso, mas não resolveu. Só se mexi errado. hehe
- Fui Painel de Controle, verifiquei o decimalseparator, estava com ´,´. Porém, se eu mudar via código para ´.´, funciona normal, só que tem que usar o ponto... sabem como são os usário para isso, querem usar a ´,´.
- Linhas de código para conversão do valor. Não deu.
Será que tem mais opções?
- Fui Painel de Controle, verifiquei o decimalseparator, estava com ´,´. Porém, se eu mudar via código para ´.´, funciona normal, só que tem que usar o ponto... sabem como são os usário para isso, querem usar a ´,´.
- Linhas de código para conversão do valor. Não deu.
Será que tem mais opções?
GOSTEI 0
Builder
28/11/2008
No Delphi, verifica se a aplicação tem as constantes definidas para a nossa região/país, por exemplo:
ThousandSeparator:=´.´;
DecimalSeparator:=´,´;
CurrencyDecimals:=4;
DateSeparator:=´/´;
ShortDateFormat:=´DD/MM/YYYY´;
TimeSeparator:=´:´;
ShortTimeFormat:=´HH:MM´;
LongTimeFormat:=´HH:MM:SS´;
ShortMonthNames[01]:=´Jan´;
ShortMonthNames[02]:=´Fev´;
ShortMonthNames[03]:=´Mar´;
ShortMonthNames[04]:=´Abr´;
ShortMonthNames[05]:=´Mai´;
ShortMonthNames[06]:=´Jun´;
ShortMonthNames[07]:=´Jul´;
ShortMonthNames[08]:=´Ago´;
ShortMonthNames[09]:=´Set´;
ShortMonthNames[10]:=´Out´;
ShortMonthNames[11]:=´Nov´;
ShortMonthNames[12]:=´Dez´;
LongMonthNames[01]:=´Janeiro´;
LongMonthNames[02]:=´Fevereiro´;
LongMonthNames[03]:=´Março´;
LongMonthNames[04]:=´Abril´;
LongMonthNames[05]:=´Maio´;
LongMonthNames[06]:=´Junho´;
LongMonthNames[07]:=´Julho´;
LongMonthNames[08]:=´Agosto´;
LongMonthNames[09]:=´Setembro´;
LongMonthNames[10]:=´Outubro´;
LongMonthNames[11]:=´Novembro´;
LongMonthNames[12]:=´Dezembro´;
ShortDayNames[1]:=´Dom´;
ShortDayNames[2]:=´Seg´;
ShortDayNames[3]:=´Ter´;
ShortDayNames[4]:=´Qua´;
ShortDayNames[5]:=´Qui´;
ShortDayNames[6]:=´Sex´;
ShortDayNames[7]:=´Sáb´;
LongDayNames[1]:=´Domingo´;
LongDayNames[2]:=´Segunda´;
LongDayNames[3]:=´Terça´;
LongDayNames[4]:=´Quarta´;
LongDayNames[5]:=´Quinta´;
LongDayNames[6]:=´Sexta´;
LongDayNames[7]:=´Sábado´;
Se estiver utilizando o driver da Devart (antiga CoreLab), ele teve problemas com campos que utilizam decimal, a versão que corrige o defeito é a dbxida 2.40.0.13
ThousandSeparator:=´.´;
DecimalSeparator:=´,´;
CurrencyDecimals:=4;
DateSeparator:=´/´;
ShortDateFormat:=´DD/MM/YYYY´;
TimeSeparator:=´:´;
ShortTimeFormat:=´HH:MM´;
LongTimeFormat:=´HH:MM:SS´;
ShortMonthNames[01]:=´Jan´;
ShortMonthNames[02]:=´Fev´;
ShortMonthNames[03]:=´Mar´;
ShortMonthNames[04]:=´Abr´;
ShortMonthNames[05]:=´Mai´;
ShortMonthNames[06]:=´Jun´;
ShortMonthNames[07]:=´Jul´;
ShortMonthNames[08]:=´Ago´;
ShortMonthNames[09]:=´Set´;
ShortMonthNames[10]:=´Out´;
ShortMonthNames[11]:=´Nov´;
ShortMonthNames[12]:=´Dez´;
LongMonthNames[01]:=´Janeiro´;
LongMonthNames[02]:=´Fevereiro´;
LongMonthNames[03]:=´Março´;
LongMonthNames[04]:=´Abril´;
LongMonthNames[05]:=´Maio´;
LongMonthNames[06]:=´Junho´;
LongMonthNames[07]:=´Julho´;
LongMonthNames[08]:=´Agosto´;
LongMonthNames[09]:=´Setembro´;
LongMonthNames[10]:=´Outubro´;
LongMonthNames[11]:=´Novembro´;
LongMonthNames[12]:=´Dezembro´;
ShortDayNames[1]:=´Dom´;
ShortDayNames[2]:=´Seg´;
ShortDayNames[3]:=´Ter´;
ShortDayNames[4]:=´Qua´;
ShortDayNames[5]:=´Qui´;
ShortDayNames[6]:=´Sex´;
ShortDayNames[7]:=´Sáb´;
LongDayNames[1]:=´Domingo´;
LongDayNames[2]:=´Segunda´;
LongDayNames[3]:=´Terça´;
LongDayNames[4]:=´Quarta´;
LongDayNames[5]:=´Quinta´;
LongDayNames[6]:=´Sexta´;
LongDayNames[7]:=´Sábado´;
Se estiver utilizando o driver da Devart (antiga CoreLab), ele teve problemas com campos que utilizam decimal, a versão que corrige o defeito é a dbxida 2.40.0.13
GOSTEI 0
Alexpaes
28/11/2008
Amigo Builder,
Com relação aos parâmetros, jah havia colocado.
Mesmo assim criei uma função para tal.
Encontrei esse arquivo...
http://www.baixaja.com.br/downloads/Windows/Development/Components-Libraries/dbExpress-driver-for-InterBase_2507_1.html
Seria o qual deveria instalar? Se bem entendi.
Não terei problemas com outras aplicações, na instalação deste driver?
Com relação aos parâmetros, jah havia colocado.
Mesmo assim criei uma função para tal.
Encontrei esse arquivo...
http://www.baixaja.com.br/downloads/Windows/Development/Components-Libraries/dbExpress-driver-for-InterBase_2507_1.html
Seria o qual deveria instalar? Se bem entendi.
Não terei problemas com outras aplicações, na instalação deste driver?
GOSTEI 0
Alexpaes
28/11/2008
Amigo,
agora que percebi, ele nao é um driver free neh?
não teria uma solução sem ônus?
agora que percebi, ele nao é um driver free neh?
não teria uma solução sem ônus?
GOSTEI 0
Builder
28/11/2008
O site oficial do driver dbxida é:
http://www.devart.com/dbx/download.html
e o que foi alterado na versão 2.40.013 está no fórum:
http://devart.com/forums/viewtopic.php?t=13438
Lembrando que o driver é proprietário, pago e a versão disponível para download expira em 30 dias.
Se estiver utilizando o driver nativo do DBExpress para Interbase, ele não tem garantias de compatibilidade com o Firebird, principalmente nas versões 2.x - A solução nestes casos é utilizar driver de terceiros (Devart, Upscene, UIB Firebird e TBODBXFB do Tiago Borges.
Comprei o driver da Upscene pelo site www.firebase.com.br, que funciona muito bem, mas ainda não tem suporte oficial ao Delphi 2009.
http://www.devart.com/dbx/download.html
e o que foi alterado na versão 2.40.013 está no fórum:
http://devart.com/forums/viewtopic.php?t=13438
Lembrando que o driver é proprietário, pago e a versão disponível para download expira em 30 dias.
Se estiver utilizando o driver nativo do DBExpress para Interbase, ele não tem garantias de compatibilidade com o Firebird, principalmente nas versões 2.x - A solução nestes casos é utilizar driver de terceiros (Devart, Upscene, UIB Firebird e TBODBXFB do Tiago Borges.
Comprei o driver da Upscene pelo site www.firebase.com.br, que funciona muito bem, mas ainda não tem suporte oficial ao Delphi 2009.
GOSTEI 0
Builder
28/11/2008
Driver sem ônus:
UIB Firebird
TBODBXFB do Tiago Borges
Embora estes projetos estejam ativos, o UIB não anda a contento no quesito atualizado para as últimas versões e o TBODBXFB ainda esta em testes mais o fato do autor não liberar os fontes (o que pode ser um problema no futuro se ele não quiser mais dar suporte).
O investimento nos drivers proprietários é relativamente baixo e digo que compensa o investimento (é uma dor de cabeça a menos).
UIB Firebird
TBODBXFB do Tiago Borges
Embora estes projetos estejam ativos, o UIB não anda a contento no quesito atualizado para as últimas versões e o TBODBXFB ainda esta em testes mais o fato do autor não liberar os fontes (o que pode ser um problema no futuro se ele não quiser mais dar suporte).
O investimento nos drivers proprietários é relativamente baixo e digo que compensa o investimento (é uma dor de cabeça a menos).
GOSTEI 0
Alexpaes
28/11/2008
Esse driver resolveria meu problema?
GOSTEI 0
Builder
28/11/2008
Só tem um jeito de saber => Testando.
Cria uma aplicação bem básica de teste, para acessar uma tabela que tenha decimais e testa com os Trials (Upscene e Devart) - Inclui, altera, exclui, emite listagem, etc. Se funcionar, é aplicar a solução para o resto de suas aplicações.
Os fabricantes complicam tanto as coisas que na parte de informática, são tantas variáveis que é impossível afirmar com certeza que vai funcionar, ainda mais com o reforço da lei de Moore.
Cria uma aplicação bem básica de teste, para acessar uma tabela que tenha decimais e testa com os Trials (Upscene e Devart) - Inclui, altera, exclui, emite listagem, etc. Se funcionar, é aplicar a solução para o resto de suas aplicações.
Os fabricantes complicam tanto as coisas que na parte de informática, são tantas variáveis que é impossível afirmar com certeza que vai funcionar, ainda mais com o reforço da lei de Moore.
GOSTEI 0
Alexpaes
28/11/2008
Estive vendo com relacao a este driver e:
a versão dele é para Delphi 2007, no caso Delphi 7.0... teria problemas em instalar?
a versão dele é para Delphi 2007, no caso Delphi 7.0... teria problemas em instalar?
GOSTEI 0
Alexpaes
28/11/2008
opa,,,
Segue o link que achei...
http://www.tbosystems.bluehosting.com.br/dbx4/index.php
Segue o link que achei...
http://www.tbosystems.bluehosting.com.br/dbx4/index.php
GOSTEI 0
Alexpaes
28/11/2008
Builder,
Voce tem MSN, ou seja, alguma forma de falarmos mais rapidamente?
se aceitar a idéia, envie um email pra mim com seu msn...
asp@aspsoftwares.com.br
Voce tem MSN, ou seja, alguma forma de falarmos mais rapidamente?
se aceitar a idéia, envie um email pra mim com seu msn...
asp@aspsoftwares.com.br
GOSTEI 0