Valores Financeiras (com virgulas) em um DBEDIT

Delphi

23/10/2007

Olá a todos

Em minha aplicação estou travando a digitação de teclas diferente das de valores numéricos em um DBEDIT, no DATASET inclusve eu marquei a propriedade CURRENT para TRUE para que o mesmo traga o sinal de R$ e as virgulas necessárias.

O problema que tenho são dois...

1 - Quando usso o CURRENT, ele não permite valor monetário negativo (meio óbvio) nesse caso terei que substituir por um DBMASK? Eu preciso gravar valores negativos tbm.

2 - Existe um meio do DBEDIT entender e considerar os centavos sem que eu tenha que digitar a virgula? Se existe, como faço isso?

Agradeço desde já.


cgomesnet


Cgomesnet

Cgomesnet

Curtidas 0

Respostas

Marco Salles

Marco Salles

23/10/2007

Em minha aplicação estou travando a digitação de teclas diferente das de valores numéricos


1 - Quando usso o CURRENT, ele não permite valor monetário negativo


Deveria permitir sim.... Desabilite na aplocação o Travamento da Tecla
referente ao sinal negativo que deve funcionar sim


2 - Existe um meio do DBEDIT entender e considerar os centavos sem que eu tenha que digitar a virgula? Se existe, como faço isso?


Formate o evento OnSrtText do CAmpo em questão

if pos(decimalseparator,text) < 0  Then
//Para o caso de dois decimais divida por 100
sender.AsCurrency:=sender.AsCurrency/100
else
sender.AsString:=text;



GOSTEI 0
Cgomesnet

Cgomesnet

23/10/2007

[quote:40d7de6690=´Marco Salles´]
Em minha aplicação estou travando a digitação de teclas diferente das de valores numéricos


1 - Quando usso o CURRENT, ele não permite valor monetário negativo


Deveria permitir sim.... Desabilite na aplocação o Travamento da Tecla
referente ao sinal negativo que deve funcionar sim


2 - Existe um meio do DBEDIT entender e considerar os centavos sem que eu tenha que digitar a virgula? Se existe, como faço isso?


Formate o evento OnSrtText do CAmpo em questão

if pos(decimalseparator,text) < 0  Then
//Para o caso de dois decimais divida por 100
sender.AsCurrency:=sender.AsCurrency/100
else
sender.AsString:=text;
[/quote:40d7de6690]

O Marcos, obrigado pela ajuda...

Com relação ao valor negativo o firebird 2.0 não deixa mesmo, eu nem preciso do sinal negativo, eu estou multiplicado o (dataset.nomedocampo * -1) para gravar, ai ele retorna mensagem de erro de tivo de dados (estou usando numeric(7,2).

Com relação as demais dicas que você deu, asssim que eu chegar em casa irei testar.

Obrigado por enquanto.


GOSTEI 0
Marco Salles

Marco Salles

23/10/2007

Com relação ao valor negativo o firebird 2.0 não deixa mesmo, eu nem preciso do sinal negativo, eu estou multiplicado o (dataset.nomedocampo * -1) para gravar, ai ele retorna mensagem de erro de tivo de dados (estou usando numeric(7,2).


eu nen sabia que voce estava usando o firibird 2.0

eu uso ainda o 1.5 e não tem problemas com numeros negativos

Pergunta que eu façp a voce é se atraves do [b:3516b8ab63]IbExpert [/b:3516b8ab63], ao inserir um valor negativo ele tb da este erro :?: :?: :?: ou é so atraves do seu
aplicativo :?: :?: :?:


GOSTEI 0
Cgomesnet

Cgomesnet

23/10/2007

[quote:2bcbc90e2e=´Marco Salles´]
Com relação ao valor negativo o firebird 2.0 não deixa mesmo, eu nem preciso do sinal negativo, eu estou multiplicado o (dataset.nomedocampo * -1) para gravar, ai ele retorna mensagem de erro de tivo de dados (estou usando numeric(7,2).


eu nen sabia que voce estava usando o firibird 2.0

eu uso ainda o 1.5 e não tem problemas com numeros negativos

Pergunta que eu façp a voce é se atraves do [b:2bcbc90e2e]IbExpert [/b:2bcbc90e2e], ao inserir um valor negativo ele tb da este erro :?: :?: :?: ou é so atraves do seu
aplicativo :?: :?: :?:[/quote:2bcbc90e2e]

Olá Marco

O erro é no banco, porque quando ele acontece é o firebird que retorna o erro, não é uma mensagem do Delphi (se fosse não teria compilado eu imagino).

Lembrando que o erro só acontece se usar negativo em um campo da tabela que esteja marcado pelo dataset como CURRENT.


GOSTEI 0
Marco Salles

Marco Salles

23/10/2007

O erro é no banco, porque quando ele acontece é o firebird que retorna o erro, não é uma mensagem do Delphi (se fosse não teria compilado eu imagino). Lembrando que o erro só acontece se usar negativo em um campo da tabela que esteja marcado pelo dataset como CURRENT.


Kara , engraçado voce fala que o erro é do banco , depois voce diz que so
acontece se o seu campo no seu aplicativo tiver marcado como currency

[b:bb2fc2b818]Afinal se voce , usando o IBexpert por exemplo , ir na tabela e digitar um
valor negativo para o campo Numeric(9,2) , voce consiguira ou não
commitar esta alteração[/b:bb2fc2b818]

Caso Commite
a gente parte do Erro seu aplicatido < driver de acesso , codigo
utilixado etcc...>

Caso Não Commite
a gente parte do Erro do Banco <o que acredito ser pouco provável>


GOSTEI 0
Cgomesnet

Cgomesnet

23/10/2007

[quote:ec8643163f=´Marco Salles´]
O erro é no banco, porque quando ele acontece é o firebird que retorna o erro, não é uma mensagem do Delphi (se fosse não teria compilado eu imagino). Lembrando que o erro só acontece se usar negativo em um campo da tabela que esteja marcado pelo dataset como CURRENT.


Kara , engraçado voce fala que o erro é do banco , depois voce diz que so
acontece se o seu campo no seu aplicativo tiver marcado como currency

[b:ec8643163f]Afinal se voce , usando o IBexpert por exemplo , ir na tabela e digitar um
valor negativo para o campo Numeric(9,2) , voce consiguira ou não
commitar esta alteração[/b:ec8643163f]

Caso Commite
a gente parte do Erro seu aplicatido < driver de acesso , codigo
utilixado etcc...>

Caso Não Commite
a gente parte do Erro do Banco <o que acredito ser pouco provável>[/quote:ec8643163f]

Pode deixar, essa semana irei testar o que conversamos e deixarei aqui o que aconteceu.

Valeu pelas dicas.


GOSTEI 0
POSTAR