pegar valor digitado em um DBEdit

02/02/2006

0

Olá a todos.

Tenho uma lista de variáveis em meu sistema do tipo Currency (moeda), então... em um determinado momento eu estava precisando pegar estes valores que estão sendo digitados em dbedits, dbedit1, dbedit2, dbedit3, dbedit4, dbedit5 e somar para exibir no dbeditsoma, mas não consigo tirar estes valores dos dbedit´s e somar. Se alguém puder me ajudar fico muito grato. Obrigado.

Estou no momento usando assim:

var
p1, p2, p3, p4, p5, pmedia : Currency;
begin
Table1.Post;
p1 := Form66.Table1.FieldValues[´Prod_d1´];
p2 := Form66.Table1.FieldValues[´Prod_d2´];
p3 := Form66.Table1.FieldValues[´Prod_d3´];
p4 := Form66.Table1.FieldValues[´Prod_d4´];
p5 := Form66.Table1.FieldValues[´Prod_d5´];
pmedia := p1+p2+p3+p4+p5;
CurrToStr(pmedia);
EditTotal_diaria.Text := (Formatfloat(´R$#0.00´,(pmedia)));
IF application.MessageBox(´Deseja salvar o registro?´,´Confirme´,
mb_yesNo + mb_iconquestion + mb_defbutton1) = idYes THEN
Begin
Table1.Refresh;
BitBtn6.Enabled := True;
BitBtn7.Enabled := True;
BitBtn8.Enabled := True;

O problema é que o sistema faz o q quero mostrando e inserindo no bdedittotal_diaria o total, mas fecho o form ou simplesmente mudo de registro e o valor calculado some. Usei a propriedade FieldValues[´....´]; sei que a mesma os valores tem q serem salvos mas não achei outra forma de tirar os valores a não ser esta. Mais uma vez obrigado pela ajuda e desculpe ser tão extensa minha pergunta.


Gtts

Gtts

Responder

Posts

02/02/2006

Rjun

Acho que seria mais prático você utilizar um campo calculado para fazer a soma.


Responder

02/02/2006

Gtts

é q no cadastro precisam aparecer estes campos todos inclusive o final com a soma.


Responder

02/02/2006

Rjun

E qual o problema de usar campo calculado? Você pode exibi-los em um dbedit como um campo normal.


Responder

03/02/2006

Emerson Nascimento

como indicou o [b:8b65bdcd0b]Rjun[/b:8b65bdcd0b], eu optaria pelo campo calculado. mas respondendo à sua pergunta...

coloque isso no OnDataChange do seu datasource e veja se dá certo:

p1 := dbedit1.field.asfloat;
p2 := dbedit2.field.asfloat;
p3 := dbedit3.field.asfloat;
p4 := dbedit4.field.asfloat;
p5 := dbedit5.field.asfloat;
pmedia := (p1+p2+p3+p4+p5) / 5;

torne a variável [i:8b65bdcd0b]pmedia[/i:8b65bdcd0b] private, assim ela poderá ser ´vista´ em qualquer local da unit.

se você optar por usar campo calculado...
é necessário que seus campos sejam persistentes.
- dê um duplo-clique no seu dataset
- se ainda não há campos na lista, pressione CTRL+A e selecione os campos desejados
- pressione CTRL+N (New Field...) e, em:
[i:8b65bdcd0b]Field Name[/i:8b65bdcd0b], digite pmedia (ou outro nome que lhe pareça melhor)
[i:8b65bdcd0b]Type[/i:8b65bdcd0b], selecione Float
[i:8b65bdcd0b]Field Type[/i:8b65bdcd0b], selecione Calculated
- clique em Ok.
o campo calculado está criado. agora precisamos fazer o cálculo propriamente dito.
no evento OnCalcFields do dataset, faça:
datasetPMEDIA.AsFloat := (datasetProd_d1.AsFloat +
                          datasetProd_d2.AsFloat +
                          datasetProd_d3.AsFloat +
                          datasetProd_d4.AsFloat +
                          datasetProd_d5.AsFloat ) / 5;
(troque ´dataset´ pelo nome do seu dataset)

agora ponha um dbedit, aponte-o para o campo PMedia recém criado, execute o programa e veja o resultado.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar