Array
(
)

DBGrid - Como formatar campo numérico

Wbb
   - 06 ago 2004

Pessoal,

Uma das colunas do DBGrid, ligado ao banco de dados, apresenta valores numéricos do tipo Float. Como eu deixei que o DBGrid ficasse habilitado para edição, então é possível que o usuário entre numa célula qualquer da coluna numérica e digite o valor desejado. Até aí ok! Porém, o usuário também pode digitar mais de uma vez a vírgula se el quiser. Se ele fizer isso, ao sair da célula o dataset tentará salvar o valor com mais de uma vírgula e irá gerar um erro.

Minha pergunta é: Como impedir que o usuário entre com um valor numérico inválido no DBGrid? (tal como um valor com duas vírgulas)

Valeu!
wbb


Emerson
   - 06 ago 2004

crie campos do tipo float, numeric, currency... dependendo do banco de dados que você utiliza. dessa forma você não precisa fazer nenhum tipo de controle.


Wbb
   - 07 ago 2004

O campo ao que estou me referindo no banco de dados já é Float.

O DBGrid permite que você digite quantas vírgulas quiser, mesmo se você estiver num campo cujo campo correspondente no banco de dados é Float.

Experimente criar um campo num banco de dados e visualiza-lo num DBGrid. Depois tente editar uma célula do DBGrid, deste campo numérico claro, tentando colocar mais de uma vírgula. Você perceberá que o DBGrid aceita! Depois, após digitar e sair da célula, quando o dataset tentar salvar irá dar erro.

É isso o que eu quero resolver, impedindo que o usuário digite mais de uma vírgula ou fazendo com que haja um tratamento do número digitado pelo usuário, antes de ser salvo pelo dataset no banco de dados.

wbb


Wbb
   - 09 ago 2004

...


Wbb
   - 09 ago 2004

...


Deryck
   - 09 ago 2004

Cara o lance é o seguinte, ao inves de vc fazer isso tudo , faz um rotina que verifica os dados inseridos no grid, nesse campo de data , se o cara digita algo fora do normal , voce joga uma mensagem na tela mostrando como ele deve inserir os dados ,,,,qualquer coisa,,,poste novamente que eu te explico melhor


jordano.soares@csnet.com.br


Wbb
   - 09 ago 2004

Fala deryck! Blz?

Por favor me explique, pois estou num dilema... O problema também está no fato de após o usuário acessar o campo numérico (float) e começar a digitar o número, não tem como sabe o que ele está digitando. Ou seja, se ele digitar mais de uma vírgula, o sistema só irá detectar ao tentar salvar o número inválido no BD.

Valeu!
wbb


Deryck
   - 09 ago 2004

Cara vc sabe verificar os campos do grid,,, va manda varrer eles ?sabe se souber,,,manda varre e em cada campo,,,exibe a mensagem do erro, ou então você vai no clientdataset(ou o que vc estiver mechendo)e na propriedade on post error, vc manda exibe uma mensagem de erro, e cancela a mensagem que o delphi mada !
qualquer coisa poste novamente


Wbb
   - 09 ago 2004

Olhe... não se estou fazendo algo errado, mas sei que não está funcionando. Ao digitar mais de uma vírgula no campo numérico do DBGrid, saindo do campo em seguida para que o número seja salvo, o erro aparece antes de ser emitida a nova mensagem de erro já tratada. Tentei usar outros eventos também, os ´Before....´ e também não funcionou.

Você chegou a testar isso que você sugeriu? Perguntou pois as vezes eu posso ter esquecido de algum detalhe...

Se puder continuar me ajudando eu agradeço.

Valeu!
wbb


Deryck
   - 09 ago 2004

Me fala os componetes que voce esta usando, e temo lance de que quando voce sai do grid(retira o mouse), ele da o post automaticamente, vc tem que colocar no evento before post, a verificação dos campos,,,sabe verificar? Me fala os componentes que voce usa!