acpazebao 0 Denunciar post Postado Julho 2, 2013 Boa noite a todos! Estou voltando a desenvolvimento em delphi, usando o XE2 so que dessa vez com postgresql. Dados: postgresql 9.1 Delphi XE2 Problema: Ao utilizar o campo numeric ( 15,2 ) não consegui formatar o dbedit para que ele aceitasse a "virgula" como separador decimal. O sistema operacional esta configurado para o portugues brasil. Ao tentar digitar o valor, "500,99" o mesmo retornoou o seguinte erro: "ERRO: sintaxe de entrada é inválida para tipo numeric: 500,99"; Error while executing the query. Preciso que o campo esteja formatado no padrão real ou seja R$ 500,99 ou entao pode ser somente 500,99. Como proceder nesse caso? Meu sistema de programação esta assim: Conexao com banco dados atraves de driver odbc. Estou usando: SQLDataSet, DataSetProvider, ClientDataSet, DataSource. Como devo proceder afim de solucionar o problema? Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Julho 2, 2013 Olá amigos. Amigo acpazebao, primeiramente gostaria de lhe desejar as boas vindas. Você experimentou colocar uma mascara na propriedade DisplayFormat e EditFormat do seu ClientDataSet? A Mascara seria algo semelhante a isso: ###,##0.00 Até a próxima. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
acpazebao 0 Denunciar post Postado Julho 2, 2013 Olah bom dia Eisenheim, Fiz exatamente o que vc informou, porem sem sucesso... Ao colocar o valor em um campo acontece isso: quando coloco valor redondo: 10,00 ele grava no banco 10.00 Quando eu coloco o valor com decimal ele da essa mensagem: 103,50 is not a BCD Value - Aqui vc pode notar que o valor colocado eh 103,50 ( isso mesmo virgula ) pois o ponto, o dbedit nao permite colocar !!! Forte abraço e obrigado pela ajuda ! Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Delalibera 1 Denunciar post Postado Julho 2, 2013 Olah bom dia Eisenheim, Fiz exatamente o que vc informou, porem sem sucesso... Ao colocar o valor em um campo acontece isso: quando coloco valor redondo: 10,00 ele grava no banco 10.00 Quando eu coloco o valor com decimal ele da essa mensagem: 103,50 is not a BCD Value - Aqui vc pode notar que o valor colocado eh 103,50 ( isso mesmo virgula ) pois o ponto, o dbedit nao permite colocar !!! Forte abraço e obrigado pela ajuda ! Isso acontece porque vc tem que formatar o valor para inserir no banco, sempre que inserir no banco as casas decimais estarão separados por ponto " . ", ou seja como exemplo o valor 1.250,35 - ficaria assim no banco 1250.35, ou seja isso é normal, quando vc coloca 103,5 no dbedit da o erro pois não pode haver virgula no momento da inserção, eu criei essa função que uso para inserir valores no banco. function TDM.FormatarDecimal(Valor: string): string; begin Result := StringReplace(Valor, '.', '', [rfReplaceAll, rfIgnoreCase]); Result := StringReplace(Result, ',', '.', [rfReplaceAll, rfIgnoreCase]); end; Exempo de uso: FormatarDecimal(ValorAqui); Porém eu uso com Edit e não DbEdit e uso Query! Faça o teste.. espero ter ajudado! Compartilhar este post Link para o post Compartilhar em outros sites
acpazebao 0 Denunciar post Postado Julho 2, 2013 Ok Obrigado, irei fazer o teste... porem uma duvida!!! Será que ira funcionar diretamente no dbEdit? Obrigado !!! Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Delalibera 1 Denunciar post Postado Julho 2, 2013 Desde que você não esteja fazendo o update ou insert automaticamente ao alterar o dbedit vai sim, no seu código de insert e update altera o codigo que vc esta usando para pegar o valor do dbedit para FormatarDecimal(NomedoDbEdit.Text) Compartilhar este post Link para o post Compartilhar em outros sites
acpazebao 0 Denunciar post Postado Julho 9, 2013 Olah Thiago boa noite! Tudo bem? Estimo que sim! Antes de mais nada obrigado pela ajuda no forum!Eu coloquei a funçao que vc passou no meu modulo de dados, porém nao obtive sucesso. Acho que devo estar colocando em lugar errado, não sei!!! A minha forma de trabalho eh essa: Tenho o modulo de dados que conecta por odbc o postgresql.Depois tenho o formulario ( no caso cadastro de serviços ). Nesse form tenho os botoes novo, alterar, gravar etc... Não consegui fazer, ou melhor nao consegui ainda sacar onde eh colocada essa função ( que creio eu esta sendo colocada no modulo de dados ) ou entao fazer a chamada da mesma.Desculpa pela falta de conhecimento nessa parte !! Se puder ajudar agradeço Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Julho 10, 2013 Bom dia amigos. Amigo acpazebao, no evento onCreate do seu form principal, coloque o seguinte: DecimalSeparator := '.'; E no evento onKeyPress do seu controle aonde você digita o valor, experimente o seguinte: if key in [',', '.'] then key := decimalseparator; Até a próxima. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
acpazebao 0 Denunciar post Postado Julho 10, 2013 Olah AMIGO EISENHEIM ... muitissimo obrigado pela dica!!! Ajudou muito e ja coloquei pra testes e funcionou certinho! Somente uma duvida: Agora os campos tipo moeda será colocado o ponto em lugar da virgula eh isso? ou tem alguma formatação especial para isso ? ? Pergunto somente a titulo de duvida, tipo se teria condiçoes de aparecer para o usuario, o campo formatado no padrao brasileiro. Forte abraço e obrigado !!! Cesar Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Julho 10, 2013 Olá amigos. Se você utilizar as propriedades DisplayFormat e EditFormat do seu ClientDataSet, acredito que a visualização para o usuário ficaria como você espera. Experimente e me reporte. A Mascara seria algo semelhante a isso: ###,##0.00 Até a próxima. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
acpazebao 0 Denunciar post Postado Julho 10, 2013 Olah Eisenheim ... fiz os testes como solicitado, porem sem sucesso! No lugar da virgula, ele aparece o ponto ... Fiz os testes alterando o Displayformat e o EditFormat com os 2 juntos e depois separado tambem, porém sem sucesso!!! Forte abraço e obrigado mais uma vez pela grande gentileza !!! Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Julho 12, 2013 Olá amigos. Amigo, que estranho, eu trabalho dessa maneira e não tenho problemas assim, embora utilize o Firebird como banco de dados e você o postgres. Que componente você está utilizando para se conectar com o banco de dados? ZeosDBO? Compartilhar este post Link para o post Compartilhar em outros sites
acpazebao 0 Denunciar post Postado Julho 13, 2013 Olah Amigo bom dia !! Eu utilizo o sql + dsp + cds + ds e o sqlconnection ... conexao com o banco vai odbc Forte abraço Cesar Compartilhar este post Link para o post Compartilhar em outros sites
gleickson 0 Denunciar post Postado Fevereiro 9, 2015 Bom dia meus amigos.. aproveitanto o tópico, gostaria de pedir ajuda sobre um problema que estou tendo nesse mesmo contexto.. Estou tentando ler um banco Firebird com os componentes Zeos.. porém no componente ZTable, os campos numerc(15,2) estão sendo carregados como TIntegerField. Muito estranho, já que quando faço a mesma coisa com os componentes do DBExpress os tipos dos campos vem corretos :( De já obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Fevereiro 9, 2015 Olá amigos! Amigo gleickson, peço que abra um novo tópico com a sua dúvida acima, pois como esse tópico já se encontra encerrado pelo autor do mesmo, fica complicado de administrá-lo. Abrindo um novo tópico com sua dúvida, será um enorme prazer poder te ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
gleickson 0 Denunciar post Postado Fevereiro 10, 2015 Perdão Eisenheim, farei isso agora! Obrigado! ;) Compartilhar este post Link para o post Compartilhar em outros sites