Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kleber Quilez

[Resolvido] Conversao de Valores

Recommended Posts

Pessoal Tenho uma Tela de Sistema Que tem um EditValor (que Recebe um Valor Monetário sem Sifrão) Segue Imagem Abaixo

 

Imagem Postada

 

Como Podemos Ver ele Aparece na Grid com Virgula e no Edit Tb, mas se eu tentar Inserir esse Novo Serviço ele da Pau, pois o Banco de Dados MySQL só aceita seperador Decimal ( . ) o que não seria problema caso meu cliente quisesse!! rsrsrs

O Cara Insiste em usar a Virgula para Cadastrar Produtos e Serviços Então eu teria que Fazer uma Conversao Antes do Insert Colocando um Evento no OnExit desse Edit, Os Amigos Podem me Ajudar a fazer essa Conversão??

 

Para Ficar como na Imagem Acima na Hora de Inserir mas na Verdade ele estará Inserindo no Banco 4.50

 

Grato,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é o Codigo do seu botao inserir ???

Se estiver usando DBEdit naum vai ter problemas, podera cadastrar com virgula mesmo, pois o DBEdit trata isso pra você, e no final das contas vai salvar o (.) mesmo ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo o meu Código é o Seguinte..

 

if EditServico.Text = '' then begin
	 MessageBox(handle,'Preencha a Descrição do Serviço','Aviso!!',MB_ICONEXCLAMATION+mb_OK)
  end else begin
  Dados.QueryConsulta.Close;
  Dados.QueryConsulta.SQL.Clear;
  Dados.QueryConsulta.SQL.Add(' select * from servicos where servico = ' + QuotedStr(EditServico.text));
  Dados.QueryConsulta.Open;

	if Dados.QueryConsulta.RecordCount > 0 then begin
	   MessageBox(handle,'Serviço ja Cadastrado no Sistema!!','Aviso!!',MB_ICONEXCLAMATION+mb_OK);
	end else begin

 // EditServico.Text := FormatFloat(',##0.00',);
  //EditTotal.Text := FormatFloat(',##0.00',Dados.QueryConsulta1.Fieldbyname('total_print').AsFloat);

  Dados.QueryInsere.Close;
  Dados.QueryInsere.SQL.Clear;
  Dados.QueryInsere.SQL.Add('insert into servicos (servico, valor) values(' +
  //EditCodigo.Text + ',' +
  '''' + EditServico.Text + ''',' +
  '''' + EditValor.Text + ''');');
  Dados.QueryInsere.ExecSQL;
  MessageBox(handle,'INSERIDO com sucesso!','Inserido!',MB_ICONEXCLAMATION+mb_OK);
  EditServico.SetFocus;

  Dados.QueryConsulta.Close;
  Dados.QueryConsulta.SQL.Clear;
  Dados.QueryConsulta.SQL.Add('select * from servicos order by servico');
  Dados.QueryConsulta.ExecSQL;
  Dados.QueryConsulta.Open;

  EditCodigo.Text := '';
  EditServico.Text := '';
  EditValor.Text := '';
  TNumericField(DBGrid1.Columns[1].Field).DisplayFormat:='###,##0.00';

Estou Usando um Edit... Um DBEdit Resolverá o Meu Problema mesmo eu usando Query pra Fazer a Inserção no Banco!?

 

Grato!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum ... Dai você resolve isso com um Replace ...

with  Dados.QueryInsere do
 begin
	 SQL.Add('INSERT INTO SERVICO (servico, valor)');
	 SLQ.Add('VALUES');
	 SQL.Add('(' + QuotedStr(EditServico.Text) + ',' + StringReplace(EditValor.Text, ',','.', [rfReplaceAll]) + )');
 end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótimo.. Era Isso mesmo que eu Precisava!!

Muito Obrigado.. Alterei seu Código e Ficou Assim no Final das Contas!!

 

Dados.QueryInsere.Close;
  Dados.QueryInsere.SQL.Clear;
  Dados.QueryInsere.SQL.Add('insert into servicos (servico, valor) values(' +
  //EditCodigo.Text + ',' +
  '''' + EditServico.Text + ''',' +
  '''' + StringReplace(EditValor.Text, ',','.', [rfReplaceAll])  + ''');');
  Dados.QueryInsere.ExecSQL;
  MessageBox(handle,'INSERIDO com sucesso!','Inserido!',MB_ICONEXCLAMATION+mb_OK);
  EditServico.SetFocus;

Valeu Mesmo Rodrigo!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.