Delphi7 X dbExpress X MySQL5 problema com casas decimais
Bom dia,
Estou com o seguinte problema, possuo no mysql uma tabela com um campo do tipo DECIMAL(5,2), e utilizo como separador decimal a virgula, bom para apresentar os dados tudo ok, o problema é para inserir no banco, (as mensagens de erro deixam bem claro que o padrão de casa decimal do mysql é o ponto), pois bem, dei uma procurada pela net e achei varias funções para troca de virgula para ponto, e ate uma variavel do delphi para tal ( DecimalSeparator := ´.´ ), em relação a esse último quase tudo certo, o fato é que usando o applyupdate não consegui salvar no mysql nesse tipo de campo (DECIMAL), mesmo quando usei o ´DecimalSeparator´ no inicio da aplicação, a única maneira de faze-lo foi alterando as configurações regionais do windows, porém eu não gostaria de resolver esse problema assim, eu não me importo que em minha aplicação o separador decimal apareça como ponto, o que eu não quero é alterar isso no windows, o que poderia repercutir tambem em outros sistemas...
Fico no aguardo, abraços...
Estou com o seguinte problema, possuo no mysql uma tabela com um campo do tipo DECIMAL(5,2), e utilizo como separador decimal a virgula, bom para apresentar os dados tudo ok, o problema é para inserir no banco, (as mensagens de erro deixam bem claro que o padrão de casa decimal do mysql é o ponto), pois bem, dei uma procurada pela net e achei varias funções para troca de virgula para ponto, e ate uma variavel do delphi para tal ( DecimalSeparator := ´.´ ), em relação a esse último quase tudo certo, o fato é que usando o applyupdate não consegui salvar no mysql nesse tipo de campo (DECIMAL), mesmo quando usei o ´DecimalSeparator´ no inicio da aplicação, a única maneira de faze-lo foi alterando as configurações regionais do windows, porém eu não gostaria de resolver esse problema assim, eu não me importo que em minha aplicação o separador decimal apareça como ponto, o que eu não quero é alterar isso no windows, o que poderia repercutir tambem em outros sistemas...
Fico no aguardo, abraços...
Du_nirvana
Curtidas 0
Respostas
Du_nirvana
23/11/2007
????????????????????
GOSTEI 0
Turbo Drive
23/11/2007
Talvez não seja a solução mais elegante, mas comigo funciona.
Faz assim qdo for gravar valores numéricos ou datas:
Espero ter ajudado
Faz assim qdo for gravar valores numéricos ou datas:
Query1.close; Query1.sql.clear; Query1.sql.add(´insert into contas (valor, dtcompra) values (:mvl, :mdia) ´); query1.parambyname(´mvl´).asfloat := strtofloat (edit1.text); // edit ou maskedit com valor do tipo numérico query1.parambyname(´mdia´).asDatetime := strtodate (edit1.text); // edit ou maskedit com valor do tipo data Query1.execsql;
Espero ter ajudado
GOSTEI 0
Du_nirvana
23/11/2007
Olá Turbo Drive, agradeço a atenção mas o fato é que eu não monto o SQL do INSERT, independente de qual alteração ocorrer eu apenas uso um ClientDataSet.ApplyUpdates, em casos onde eu monto o SQL sem problemas, gostaria de saber se existe uma maneira para os casos onde uso o comando referenciado acima, abraços...
GOSTEI 0
Devmedia
23/11/2007
Bom dia,
Estou com o seguinte problema, possuo no mysql uma tabela com um campo do tipo DECIMAL(5,2), e utilizo como separador decimal a virgula, bom para apresentar os dados tudo ok, o problema é para inserir no banco, (as mensagens de erro deixam bem claro que o padrão de casa decimal do mysql é o ponto), pois bem, dei uma procurada pela net e achei varias funções para troca de virgula para ponto, e ate uma variavel do delphi para tal ( DecimalSeparator := ´.´ ), em relação a esse último quase tudo certo, o fato é que usando o applyupdate não consegui salvar no mysql nesse tipo de campo (DECIMAL), mesmo quando usei o ´DecimalSeparator´ no inicio da aplicação, a única maneira de faze-lo foi alterando as configurações regionais do windows, porém eu não gostaria de resolver esse problema assim, eu não me importo que em minha aplicação o separador decimal apareça como ponto, o que eu não quero é alterar isso no windows, o que poderia repercutir tambem em outros sistemas...
Fico no aguardo, abraços...
Olá!
Cara estou desenvolvendo um sistema utilizando as suas mesmas tecnologias.
Delphi 7
Connector : dbExpress
BD : MySQL 5
Tambem estou utilizando o ApplyUpdates co ClientDataSet. E em questao oque faço para o BD aceitar gravar é o seguinte.
Antes de gravar o campo que voce quiser vamos supor PREÇO, Exemplo.
With DM.ClientDataSet do Open; Insert; FieldByName(´PRECO´).AsInteger := EditPreco.Text; Post; end; DM.ClientDataSet.ApplyUpdates;
irá ficar assim:
With DM.ClientDataSet do Open; Insert; [color=blue]EditPreco.Text := StringReplace(EditPreco.Text, ´.´, ´´, []); [/color] FieldByName(´PRECO´).AsInteger := EditPreco.Text; Post; end; DM.ClientDataSet.ApplyUpdates;
[color=blue:c61256a38c]EditPreco.Text := StringReplace(EditPreco.Text, ´.´, ´´, []); [/color:c61256a38c]
Aonde está o ponto, voce pode atribuir o separador que voce utiliza ou qualquer outro tipo de caracter.
Se der certo. Avise.
Um abraço.
Att.
GOSTEI 0
Devmedia
23/11/2007
[color=blue:81c028dc3d]EditPreco.Text := StringReplace(EditPreco.Text, ´.´, ´´, []); [/color:81c028dc3d]
Desconsidera o [color=blue:81c028dc3d] e o [/color:81c028dc3d] porque o forum não mudou a cor do que tinha selecionado.
Inté.
Desconsidera o [color=blue:81c028dc3d] e o [/color:81c028dc3d] porque o forum não mudou a cor do que tinha selecionado.
Inté.
GOSTEI 0
Devmedia
23/11/2007
merd.....
desconsidera os COLOR do codigo la.
inté.
desconsidera os COLOR do codigo la.
inté.
GOSTEI 0
Devmedia
23/11/2007
merd.............
Eu to durmindo ...... não sei de onde tirei [color=red:585434f9e8]´WHIT´[/color:585434f9e8], mil desculpas pela gafe gigantesca.
:oops:
Tta ae o código certo.
Inté.
Eu to durmindo ...... não sei de onde tirei [color=red:585434f9e8]´WHIT´[/color:585434f9e8], mil desculpas pela gafe gigantesca.
:oops:
While DM.ClientDataSet do Open; Insert; EditPreco.Text := StringReplace(EditPreco.Text, ´.´, ´´, []); FieldByName(´PRECO´).AsInteger := EditPreco.Text; Post; end; DM.ClientDataSet.ApplyUpdates;
Tta ae o código certo.
Inté.
GOSTEI 0