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
Valeu,
Mr.Net
Mrnet
Curtir tópico
+ 0
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.
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:
Não testei, mas pode ser um caminho...
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
Clique aqui para fazer login e interagir na Comunidade :)