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

Operação Com Tempo


Gabriel Cabral

Pergunta

Olá pessoal....

o que eu preciso deve ser relativamente simples pra qm não é iniciante como eu.......hsuahsuahsuahsua

eu preciso somar/subtrair horas e minutos....por exemplo

eu tenho um campo do tipo Date/Time com o valor 05:00 (05h00min)

e preciso subtrair 30 minutos...para que o campo passe a ter um valor 04:30 (04h30min)

como devo fazer ????

Obrigado

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0
mas como se usa essa função???

Você pelo menos *tentou* utilizá-la? Não há nada de especial ou misterioso nesta função:

tempo = "05:00"
descontar = 30
    
tempo2 = TimeSerial(Hour(tempo), Minute(tempo) - descontar, 0)
    
Debug.Print Format(tempo2, "hh:mm")

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

então.....o que está errado aqui no que fiz???

Private Sub cmdOK_Click()

tempo = mkeTempo1.Text

descontar = mkeTempo2.Text

txtResultado.Text = TimeSerial(Hour(tempo), Minute(tempo) - descontar)

txtResultado.Text = Format(txtResultado.Text, "00h00min")

End Sub

em tempo d execução, eu coloquei 05:00 no mkeTempo1 e 00:30 no mkeTempo2..

mas quando clico no cmdOK, dá o seguinte erro:

Compile Error:

Argument not optional

e então o TimeSerial fica em destaque

Link para o comentário
Compartilhar em outros sites

  • 0

Gabriel

O que voce esta fazendo errado é que no campo mkeTempo2.Text voce tem que digitar o que tem que ser descontado no formato inteiro.

por exemplo sse voce vai descontar 30 minutos basta digitar 30 e não 00:30

o erro na sua aplicação esta ai

Ate mais

Donati

Link para o comentário
Compartilhar em outros sites

  • 0

Gabriel

esqueci de colocar tambem, na linha

txtResultado.Text = TimeSerial(Hour(tempo), Minute(tempo) - descontar)

está faltando um virgula 0 no fina da linha. então a linha acima ficaria

txtResultado.Text = TimeSerial(Hour(tempo), Minute(tempo) - descontar, 0)

T+ mais

Donati

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado Donati...agora não está mais dando erro....

o mkeTempo2, onde eu coloco o tempo que quero descontar, não precisa estar com a propriedade Format= hh:mm, não é????

eu fiz o seguinte...

o mkeTempo1 tem a propriedade Format=hh:mm......então eu digitei 05:00

o mkeTempo2, ficou com a propriedade Format vazia, então eu digitei apenas 30....

então o txtResultado, que tem format=hh:mm, apareceu 04:30....

ateh aí tudo bem...deu tudo certo....

mas só está fazendo a operação com minutos, não é???

e se eu precisar descontar uma hora e 20 minutos (01:20), por exemplo....tem como fzr ao invés de ter que digitar 80 (80 minutos)???

Link para o comentário
Compartilhar em outros sites

  • 0

não gabriel

Quando voce for descontar por exemplo 1 hora e 20 minutos, voce tera que descontar a hora e os minutos, por exemplo

txtResultado.Text = TimeSerial(Hour(tempo) - descontarhora , Minute(tempo) - descontar, 0)

Onde a variavel "descontarhora" tem o valor das horas que voce quer descontar e a variavel "descontar" tem o valor dos minutos que voce que descontar

Ate mais

Donati

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

  • 0

eu fiz isso agora......

Private Sub cmdOK_Click()

Dim descontarhora As Integer

Dim descontarminuto As Integer

tempo = mkeTempo1.Text

txtResultado.Text = TimeSerial(Hour(tempo) - descontarhora, Minute(tempo) - descontarminuto, 0)

txtResultado.Text = Format(txtResultado.Text, "hh:mm")

End Sub

eu fiz isso mas agora o txtResultado está dando sempre 00:00

eu tenho que declarar alguma variavel????

Link para o comentário
Compartilhar em outros sites

  • 0

Ok.....já tirei akela linha....

ficou assim..

Private Sub cmdOK_Click()

Dim descontarhora As Integer

Dim descontarminuto As Integer

tempo = mkeTempo1.Text

txtResultado.Text = TimeSerial(Hour(tempo) - descontarhora, Minute(tempo) - descontarminuto, 0)

End Sub

mas eu coloco 05:00 na mkeTempo1 e 30 no mkeTempo2.....e o txtResultado fica 05:00:00

qr dizer que não está subtraindo não é????

o que está errado??

akelas variaveis são necessarias???

Link para o comentário
Compartilhar em outros sites

  • 0

nossa...é mesmo........hsauhsuahsuahus

mas assim......

descontarhora e descontarminuto terao valores que serao atribuídos na mascara mkeTempo1.Text, não é???

então eu fiz assim....

Private Sub cmdOK_Click()

Dim descontarhora As Integer

Dim descontarminuto As Integer

tempo = mkeTempo1.Text

descontarhora = mkeTempo1.Text

descontarminuto = mkeTempo1.Text

txtResultado.Text = TimeSerial(Hour(tempo) - descontarhora, Minute(tempo) - descontarminuto, 0)

End Sub

mas continua dando erro.......

Link para o comentário
Compartilhar em outros sites

  • 0

Acredito que...

descontarhora = mkeTempo1.Text
descontarminuto = mkeTempo1.Text
... deveria ser...
descontarhora = Hour(mkeTempo1.Text)
descontarminuto = Minute(mkeTempo1.Text)

... não? Você tem que ter em mente o conceito de tipos de dados e suas atribuições.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Aew gente.....agora deu certo....muito obrigado....

tinha também uma coisa errada que o resultado tava dando 00:00...mas é porque eu tava mandando subtrair mkeTempo1 de mkeTempo1....sendo que o certo é subtrair mkeTempo2 de mkeTempo1

Vlw gnt

ateh a proxima.....

Link para o comentário
Compartilhar em outros sites

  • 0

gente.....surgiu um novo problema aqui....

é que eu tenho um campo em um formulario com o valor 05:00 (05h00min)

e em outro formulario, eu qro cadastrar a duração do atendimento a cada cliente.

como uso o TimeSerial() nesse caso??

como devo fazer pra subtrair um campo de um formulario por um campo d outro formulario???

colocarei aqui parte do codigo pra vocês avaliarem o que fiz e o que está errado...

Private Sub cmdGravar_Click()

Dim descontarhora As Integer

Dim descontarminuto As Integer

descontarhora = Hour(mkeTempo.Text)

descontarminuto = Minute(mkeTempo.Text)

cmdIncluir.Enabled = True

cmdGravar.Enabled = False

mkeData.Enabled = False

mkeTempo.Enabled = False

cboCliente.Enabled = False

DadosAtendimentos.Recordset.Fields("Data") = mkeData

DadosAtendimentos.Recordset.Fields("Tempo") = TimeSerial(Hour(mkeTempo.Text), Minute(mkeTempo.Text), 0)

DadosAtendimentos.Recordset.Fields("Cliente") = cboCliente.Text

DadosAtendimentos.Recordset.Update

Clientes.Recordset.FindFirst "NomeFantasia = '" & cboCliente.Text & "'"

If Clientes.Recordset.NoMatch = False Then

If IsNull(Clientes.Recordset.Fields("TempoDisp")) = False Then

Clientes.Recordset.Edit

Clientes.Recordset.Fields("TempoDisp") = TimeSerial(Hour(Clientes.Recordset.Fields("TempoDisp")) - descontarhora, Minute(Clientes.Recordset.Fields("TempDisp")) - descontarminuto, 0)

Clientes.Recordset.Update

MsgBox "Este cliente possui " & Clientes.Recordset.Fields("TempoDisp") & " disponíveis para atendimento este mês."

Clientes.Refresh

DadosAtendimentos.Refresh

End If

End If

End Sub

Obrigado

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,2k
    • Posts
      652k
×
×
  • Criar Novo...