Como sair deste problema
13/03/2006
0
Uso D7 -DBExpress - Firebird 1.5.x
Meu problema:
Tenho uma tabela com campo numérico (NUMERIC 9,2).
Este Campo Vem para o CDS no DM como Sendo TFMTBCDField.
Este Campo no CDS na sua propriedade DisplayFormat := ,#0.00
Junto ao Formulário insiro um DBEdit preencho suas propriedades DataField com este campo.
Este Campo ao ser digitado com inteiro/fração tipo 15,30 e ao ser ´postado´ da a seguinte mensagem - ´15,30 is not a valid BCD Value´
A pergunda é ´ e ai como sair desta!´
Agradeço antecipadamente pela ajuda.
Sds/Hélio
Helio Nascimento
Posts
14/03/2006
Edilcimar
14/03/2006
Helio Nascimento
Minhas Config.Regionais esta com Virgula. Fiz a alteração mencionada,mas não surtiu efeito. No DM before post := dm1.cds_requisicaoVALOR.ASCurrency:= StrToCurr(FrmFichaVales.DBEdit2.Text) - Não deu certo. Continua com a mesma mensagem de erro. O Estralho é que no Evento OnChange do DBEdit2 não há tratamento quanto à digitação de ponto ou virgula mas, ao inserir um numero com decimal não se consegue digitar o ponto, somente com virgula - tipo 33,20 . Não aceita a entrada com 33.20. Agora se Vc coloca um numero inteiro do tipo 33 e muda o foco para outro campo ai subscreve este DBEdit como sendo 33.00. ai voce volta no campo com o mouse e apaga o backspace os digitos dos centavos e coloca um numero e manda postar ai ele aceita. Faz o post e o Applyupdates normalmente.
Bem.. continuo aceitando sugestões. Faço também uma pergunta e voces como procedem com campos do tipo numeric(9,2) em seus formulários??
Saudações a todos/Hélio
14/03/2006
Marco Salles
[b:66f0dbbb3d]Então la vai....[/b:66f0dbbb3d]
isto é devido as suas configuraçoes Regionais... A sua Configuração regional esta com virgula como separador de casas decimais...Portanto entradas diferentes de virgulas não são aceitas..Também entradas com letras não são aceitas e voce não tem nenhum tratamento em relação a isto...Mas isto ja vem desde do Paradox , onde um campo definido como Currency , não recebe letras como dado de entradas
Isto é extremamente Normal , devido ao explicado anteriormente
Isto ai não é normal...Mesmo que a mascara esteja com intenção de Ponto para separar os decimais , as configurçoes regionais Deveriam prevalecer..
:cry: :cry:
[b:66f0dbbb3d]Não consegue reproduzir no Meu PC , usando a sua mascara com um campo numerico definido da mesma forma , a situção que voce descreveu[/b:66f0dbbb3d]
Voce tem certeza desta situação ???? :arrow: Poderia arrriscar um palpite sobre o Dialeto ou a Languagem na hora de cosntruir o Banco , mas isto so seria um palpite.. Primeiro devemos esgotar outras linhas de raciocineo
14/03/2006
Marco Salles
[b:6c1a18a959]Então la vai....[/b:6c1a18a959]
isto é devido as suas configuraçoes Regionais... A sua Configuração regional esta com virgula como separador de casas decimais...Portanto entradas diferentes de virgulas não são aceitas..Também entradas com letras não são aceitas e voce não tem nenhum tratamento em relação a isto...Mas isto ja vem desde do Paradox , onde um campo definido como Currency , não recebe letras como dado de entradas
Isto é extremamente Normal , devido ao explicado anteriormente
Isto ai não é normal...Mesmo que a mascara esteja com intenção de Ponto para separar os decimais , as configurçoes regionais Deveriam prevalecer..
:cry: :cry:
[b:6c1a18a959]Não consegue reproduzir no Meu PC , usando a sua mascara com um campo numerico definido da mesma forma , a situção que voce descreveu[/b:6c1a18a959]
Voce tem certeza desta situação ???? :arrow: Poderia arrriscar um palpite sobre o Dialeto ou a Languagem na hora de cosntruir o Banco , mas isto so seria um palpite.. Primeiro devemos esgotar outras linhas de raciocineo
14/03/2006
Marco Salles
[b:ead9b62a04]Então la vai....[/b:ead9b62a04]
isto é devido as suas configuraçoes Regionais... A sua Configuração regional esta com virgula como separador de casas decimais...Portanto entradas diferentes de virgulas não são aceitas..Também entradas com letras não são aceitas e voce não tem nenhum tratamento em relação a isto...Mas isto ja vem desde do Paradox , onde um campo definido como Currency , não recebe letras como dado de entradas
Isto é extremamente Normal , devido ao explicado anteriormente
Isto ai não é normal...Mesmo que a mascara esteja com intenção de Ponto para separar os decimais , as configurçoes regionais Deveriam prevalecer..
:cry: :cry:
[b:ead9b62a04]Não consegue reproduzir no Meu PC , usando a sua mascara com um campo numerico definido da mesma forma , a situção que voce descreveu[/b:ead9b62a04]
Voce tem certeza desta situação ???? :arrow: Poderia arrriscar um palpite sobre o Dialeto ou a Languagem na hora de cosntruir o Banco , mas isto so seria um palpite.. Primeiro devemos esgotar outras linhas de raciocineo
14/03/2006
Marco Salles
[b:e285de0fd1]Então la vai....[/b:e285de0fd1]
isto é devido as suas configuraçoes Regionais... A sua Configuração regional esta com virgula como separador de casas decimais...Portanto entradas diferentes de virgulas não são aceitas..Também entradas com letras não são aceitas e voce não tem nenhum tratamento em relação a isto...Mas isto ja vem desde do Paradox , onde um campo definido como Currency , não recebe letras como dado de entradas
Isto é extremamente Normal , devido ao explicado anteriormente
Isto ai não é normal...Mesmo que a mascara esteja com intenção de Ponto para separar os decimais , as configurçoes regionais Deveriam prevalecer..
:cry: :cry:
[b:e285de0fd1]Não consegue reproduzir no Meu PC , usando a sua mascara com um campo numerico definido da mesma forma , a situção que voce descreveu[/b:e285de0fd1]
Voce tem certeza desta situação ???? :arrow: Poderia arrriscar um palpite sobre o Dialeto ou a Languagem na hora de cosntruir o Banco , mas isto so seria um palpite.. Primeiro devemos esgotar outras linhas de raciocineo
14/03/2006
Marco Salles
14/03/2006
Helio Nascimento
Obrigado p/sua atenção.
Qto. ao Dialeto é 3 o Campo REQ_VALOR foi definido com um DOMINIO
Numeric(9,2). Resta-me criar este campo sem utilizar o DOMINIO e sim diretamente. Vou tentar o Resto... tudo certo. Também estou quase partindo para substituir o DBEdit por um Edit - Fazer o Tratamento na digitação para permissao de Key in[´0...9´, tecla backspace, enter, virgula] e no DM no
before post fazer a conversão para ASCURRENCY TANTO O CAMPO QUANTO AO EDIT.TEXT e ver se passa. Sei lá vou ver... caso vc. tenha algo diferente por favor me poste.
Obrigado e até breve/Hélio
14/03/2006
Marco Salles
eu continuio achando que pode ser na construção do Banco.. Dialeto , PageSize e Charset.. Infelismente eu não sou a pessoa mais indicada para separar criteriosamente cada tipo de definição
Voce sabe como foi definido o seu PageSize e o seu Charset ???
Para que eu possa temtar simular este possivel ´erro´ aqui...
Acho ainda cedo para tal...
14/03/2006
Helio Nascimento
eu continuio achando que pode ser na construção do Banco.. Dialeto , PageSize e Charset.. Infelismente eu não sou a pessoa mais indicada para separar criteriosamente cada tipo de definição Voce sabe como foi definido o seu PageSize e o seu Charset ??? Para que eu possa temtar simular este possivel "erro" aqui...
PageSize - 4.096 - Charset - Win1252 - Dialeto 3 - Banco FireBird 1.5
Linguagem D7
Marcos vc pediu ... aí está .
Até breve./Hélio
14/03/2006
Marco Salles
é a mesma que eu estou usando... A unica diferença é que voce tem um DataModulo e eu não .. Outra diferença , eu não sei porque , talves seje por cauda do DataModule o meu tipo definido para o CDS é o TBCDField. e nao o TFMTBCDField que voce definiu no inicio
:?: :?: :?: :?:
14/03/2006
Helio Nascimento
Marcos é talvez seja por aí mesmo. Bom outro jeito é Destruir os componentes do DBExpress - o Trio -TSQLDataSet -TDataSetProvider e TClientDataSet. Refazer a sentença SQL no TSQLDataSet e por ai afora.
Ver se em vez de Vir o TFMTBCDFiel vem o TBCDField - Irei fazer isto e tão logo eu faça posto aqui o resultado ok.
Até breve/Obrigado por me acompanhar nesta ´Escuridão´...
14/03/2006
Martins
é a mesma que eu estou usando... A unica diferença é que voce tem um DataModulo e eu não .. Outra diferença , eu não sei porque , talves seje por cauda do DataModule o meu tipo definido para o CDS é o TBCDField. e nao o TFMTBCDField que voce definiu no inicio
:?: :?: :?: :?:[/quote:b58e6533c8]
Fiz testes com DataModule e sem DataModule e não tive problema algum, usando Cds, só q o tipo de campo definido foi [b:b58e6533c8]TBCDField[/b:b58e6533c8] e não [color=red:b58e6533c8][b:b58e6533c8]TFMTBCDField[/b:b58e6533c8][/color:b58e6533c8]
Mas não usei Delphi 7, tem isso tb, usei D6.
Espero q alguém descubra a solução.
14/03/2006
Helio Nascimento
Estamos nesta caminhada. Como Disse acima fui no sistema e deletei o trio ja citado anteriormente. Coloquei novos componentes da palheta. Refiz tudo o campo REQ_VALOR vem como sendo TFMTBCDField . Então fui no Banco de Dados e Delete este campo e troquei o por FLOAT. Deletei no SQLDataSet e mandei e adicionei novamente. Eis que vem o famigerado TFMTBCDField. Bem deletei. Repeti os passos novamente com outro tipo como Sendo DOUBLE PRECISION e... eis que também vem com TFMTBCDField. Refiz tudo novamente e ai substitui por DECIMAL(9,2), e.... também vem como TFMTBCDField. bem.. todos os tipos do FireBird para vem com este formato. ai eu pergunto e ai... ´Como sair deste problema... ´ Ainda não tentei substituir o DBEdit por Edit e fazer o tratamento da entrada de dados e ver se consigo convertê-lo para o Tal BCD e fazer com que este valor consiga entrar no ´óvulo´ do Fire.
Para aqueles que me acompanham .. o meu muito obrigado pela caminhada até breve.../hélio
14/03/2006
Emerson Nascimento
se não fez, tente...
- feche a conexão com o banco de dados (o SQLConnection).
- exclua os campos persistentes
- pelo seu administrador de banco de dados (IBConsole, IBExpert), confirme se o campo está como numeric ou float
- volte ao Delphi a refaça a conexão com o banco de dados
- persista os campos
e boa sorte!
Clique aqui para fazer login e interagir na Comunidade :)