GARANTIR DESCONTO

Fórum Vírgula que quot;agarraquot; no banco de dados #179375

03/09/2003

0

Tenho recebido a mensagem ´Couldn´t perform the edit because another user changed the record´ quando digito uma vírgula em uma DbEdit ligada a um campo do tipo float. É mole? Alguém já viu isso?
Valeu,
Mr.Net


Mrnet

Mrnet

Responder

Posts

03/09/2003

Yankleber

Olá,

Algo parecido acontece se você tentar passar um valor com vírgula através de um statement SQL, pois a vírgula causa um erro de sintaxe no SQL.
Já no DBEdit, Provavelmente o Delphi deve utilizar o caractere vírgula internamente para passar parametros quando você valida a entrada/alteração, e o interpreta não como separador decimal, mas sim como separador de comando/parametro; o que, neste caso, também causará um erro de sintaxe (só que neste caso, internamente) - nada a ver com outro usuário acessando.
Isso acontece, porque o componente deve prever separação decimal apenas com ponto ao invés de vírgula.
Para resolver isso, o melhor seria, ao invés de utilizar o DBEdit ligado ao campo, usar um campo edit comum, capturar o seu conteúdo, criticar o conteúdo convertendo a vírgula para ponto e então salvando o valor do campo para a tabela através de um comando SQL. Na realidade, os componentes que funcionam ´ligados´ a campos da tabela (que chamamos Databound) não são uma solução muito profissional, justamente porque causam uma série de problemas como esse, muitas vezes, não contornáveis.


Responder

Gostei + 0

03/09/2003

Yankleber

Tente uma coisa, não sei se vai dar certo.
Existe uma variável pública do tipo char encontrada na unit SysUtil, chamada [b:90a1a8c680]DecimalSeparator[/b:90a1a8c680]. Simplesmente, na criação do seu form (FormCreate) faça:

DecimalSeparator := ´,´;


Não testei, mas pode ser um caminho...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar