Ir para conteúdo
Fórum Script Brasil
  • 0

Dbedit X Dbedit = Total


Guest - Iniciante -

Pergunta

Guest - Iniciante -

Olá pessoal

Sou iniciante em Delphi e tenho uma duvida, tenho tres comp. dbedit e gostaria de poder multiplicar o primeiro pelo segundo e o terceiro já receber o valor, alghuem pode me ajudar?

ph34r.gif

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

ae brother

faz tipo assim

declara 2 variáveis do tipo Real... exemplo

var

m1, m2: Real;

ai você faz

m1 := StrtoFloat(Dbedit1.text);

m2 := StrtoFloat(Dbedit2.text);

Dbedit3.text := FloattoStr(m1 * m2);

só que assim, na conversão de strtofloat não é aceito caracteres que não sejam números, se houver letras por exemplo vai dar exception tipo

'Bla' is not a valid float

abraços

Link para o comentário
Compartilhar em outros sites

  • 0
declara 2 variáveis do tipo Real... exemplo

var

m1, m2: Real;

ai você faz

m1 := StrtoFloat(Dbedit1.text);

m2 := StrtoFloat(Dbedit2.text);

Dbedit3.text := FloattoStr(m1 * m2);

só que assim, na conversão de strtofloat não é aceito caracteres que não sejam números, se houver letras por exemplo vai dar exception tipo

'Bla' is not a valid float

abraços

Churc, permita-me uma observação, veja se não não entendi errado seu comentário e estarei falando besteira. Também tem a questão da pontuação utilizada na formatação "," e "." (tipo 2.560,00).

Se for utilizado o campo associado aos DBEdit's este tipo de problema não acontece. Aliás, eu particularmente, não costumo utilizar este método (DBEdit.Text) para manipular os dados digitados - sempre utilizo o campo do dataset.

Assim, supondo que o dataset (ligado no datasource vinculado ao DBEdit) chama-se TableProduto, e os campos em DBEdit1, DBEdit2 e DBEdit3 são respectivamente QTD, VALOR e TOTAL, o exemplo que proporia é o seguinte:

TableProdutoTOTAL.AsFloat := TableProdutoQTD.AsFloat *TableProdutoVALOR.AsFloat;

Deve ser observado que o dataset deverá estar em edição ou inserção.

olá como eu faço pra multiplicar um campo do tipo "Time" por outro do tipo "$"

uso D5 e Paradox

Observe que a hora (seja em TTime ou TDateTime) é armazenada na parte fracionária de um Double. Então, você tem que ver que fração de tempo você quer multiplicar por $. Seria Horas, tipo 2,50 a hora; seria Minutos, tipo 0,70 o minuto?

23:59:59.9999 corresponde a aproximadamente 0,9999999999...

então, se você quer calcular valor por hora, você multiplica seu "time" por 24 e pelo valor da hora.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Olá caro Micheus por gentileza veja se você pode me ajudar, já li exatemente 985 tópicos em 3 fóruns e não consegui sair do lugar, meu problema é o seguinte:

Tenho uma tabela Paradox que tem os seguintes campos:

Campo Tipo

HoraSaída Time | O valor neste campo eu carrego assim DM.tblOSHoraSaida.value := time;

HoraChegada Time | Aqui idem

TotalHoras Time |Aqui recebe adiferença dos dois campos anteriores

PrecoHora $ |Aqui vem atráves de outra tabela "Tabela de preços"

PrecoTotal $

então eu cobro pelo meu serviço R$9,00 a hora mas com um valor minimo de 2 horas ou seja mesmo que o serviço leve 1 hora pra ser executado será computado o valor de duas horas.

o que eu preciso é multiplicar o campo "TotalHoras" pelo campo "PrecoHora" e mandar o resultado pro Campo "PrecoTotal" lembrando que o valor minimo é de duas horas. Será que fui claro?

Talvez seja o caso de usar uma função?

se puder me ajudar ficaria muito agradecido.

att. Marco

Valeu!!!!!!!!!!!!!

Editado por GameOver
Link para o comentário
Compartilhar em outros sites

  • 0
Olá caro Micheus por gentileza veja se você pode me ajudar, já li exatemente 985 tópicos em 3 fóruns e não consegui sair do lugar, meu problema é o seguinte:

Tenho uma tabela Paradox que tem os seguintes campos:

Campo Tipo

HoraSaída Time | O valor neste campo eu carrego assim DM.tblOSHoraSaida.value := time;

HoraChegada Time | Aqui idem

TotalHoras Time |Aqui recebe adiferença dos dois campos anteriores

PrecoHora $ |Aqui vem atráves de outra tabela "Tabela de preços"

PrecoTotal $

então eu cobro pelo meu serviço R$9,00 a hora mas com um valor minimo de 2 horas ou seja mesmo que o serviço leve 1 hora pra ser executado será computado o valor de duas horas.

o que eu preciso é multiplicar o campo "TotalHoras" pelo campo "PrecoHora" e mandar o resultado pro Campo "PrecoTotal" lembrando que o valor minimo é de duas horas. Será que fui claro?

Talvez seja o caso de usar uma função?

se puder me ajudar ficaria muito agradecido.

att. Marco

Valeu!!!!!!!!!!!!!

var
  TotHoras :TTime;
begin
  TotHoras := (HoraSaída -HoraChegada) *24; // transformando em horas a parte inteira conf. expliquei antes
  if TotHoras < 2 then  // aqui força que o mínimo seja 02:00 horas
    TotHoras := 2;
  PrecoTotal := TotHoras *PrecoHora;
end;

Observe que não está havendo arredondamento, ou seja, estamos utilizando a fração minutos e segundos para o cálculo do valor final.

Acho que seria isto, verifique.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Micheus

está dando estes erros nas linhas 4 e 7

var
  TotHoras :TTime;
begin
  TotHoras := (HoraSaída -HoraChegada) *24;            Operator not applicable to this operand type
  if TotHoras < 2 then  // aqui força que o mínimo seja 02:00 horas
    TotHoras := 2;
  PrecoTotal := TotHoras *PrecoHora;         Operator not applicable to this operand type
end;

o que pode ser?

Link para o comentário
Compartilhar em outros sites

  • 0
Olá Micheus

está dando estes erros nas linhas 4 e 7

var
  TotHoras :TTime;
begin
  TotHoras := (HoraSaída -HoraChegada) *24;            Operator not applicable to this operand type
  if TotHoras < 2 then  // aqui força que o mínimo seja 02:00 horas
    TotHoras := 2;
  PrecoTotal := TotHoras *PrecoHora;         Operator not applicable to this operand type
end;
o que pode ser?
Inicialmente houve uma mancada minha, porque não dá para utilizar identificador com o nome acentuado - observe que escrevi HoraSaída e não HoraSaida. Fora isso, não sei que outro problema poderia haver, já que testando aqui no D3, o código da seguinte forma está compilando sem problemas:
procedure TForm1.Button2Click(Sender: TObject);
var
  HoraSaida,
  HoraChegada,
  TotHoras :TTime;
  PrecoHora,
  PrecoTotal :Double;
begin
  TotHoras := (HoraSaida -HoraChegada) *24;
  if TotHoras < 2 then  // aqui força que o mínimo seja 02:00 horas
    TotHoras := 2;
  PrecoTotal := TotHoras *PrecoHora;
end;

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Micheus

deste jeito compila mas não acontece nada

procedure TForm1.Button2Click(Sender: TObject);
var
  HoraSaida,
  HoraChegada,
  TotHoras :TTime;
  PrecoHora,
  PrecoTotal :Double;
begin
  TotHoras := (HoraSaida -HoraChegada) *24;
  if TotHoras < 2 then  // aqui força que o mínimo seja 02:00 horas
    TotHoras := 2;
  PrecoTotal := TotHoras *PrecoHora;
end;

não dá o resultado

Link para o comentário
Compartilhar em outros sites

  • 0
Olá Micheus

deste jeito compila mas não acontece nada

procedure TForm1.Button2Click(Sender: TObject);
var
  HoraSaida,
  HoraChegada,
  TotHoras :TTime;
  PrecoHora,
  PrecoTotal :Double;
begin
  TotHoras := (HoraSaida -HoraChegada) *24;
  if TotHoras < 2 then  // aqui força que o mínimo seja 02:00 horas
    TotHoras := 2;
  PrecoTotal := TotHoras *PrecoHora;
end;

não dá o resultado

Amigo, isto é apenas um exemplo. É evidente que você não pode declarar as variáveis locais, como eu fiz, sem que atribua alguma coisa a elas. Fiz assim apenas para demonstrar que havia apenas um erro e que deveria compilar a parte utilizada nos cálculos.

Voce mencionou anteriormente a existência destas variáveis, logo você deve utilizar essas que você já tinha e não as que eu coloquei no exemplo. Se voltar a dar erro, então verifique se os tipos das variáveis, que você citou no post anterior, equivalem aos que eu declarei localmente neste último exemplo.

Link para o comentário
Compartilhar em outros sites

  • 0
Churc, permita-me uma observação, veja se não não entendi errado seu comentário e estarei falando besteira. Também tem a questão da pontuação utilizada na formatação "," e "." (tipo 2.560,00).
Opa

Sem dúvidas Micheus, você está certo, eu como não mexo com banco de dados

não levei em consideração isto rsr

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...