Gabriel Cabral Postado Abril 14, 2007 Denunciar Share Postado Abril 14, 2007 Olá pessoal....o que eu preciso deve ser relativamente simples pra qm não é iniciante como eu.......hsuahsuahsuahsuaeu preciso somar/subtrair horas e minutos....por exemploeu 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 14, 2007 Denunciar Share Postado Abril 14, 2007 Use a função TimeSerial().Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Abril 14, 2007 Autor Denunciar Share Postado Abril 14, 2007 mas como se usa essa função??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 14, 2007 Denunciar Share Postado Abril 14, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Abril 16, 2007 Autor Denunciar Share Postado Abril 16, 2007 então.....o que está errado aqui no que fiz???Private Sub cmdOK_Click()tempo = mkeTempo1.Textdescontar = mkeTempo2.TexttxtResultado.Text = TimeSerial(Hour(tempo), Minute(tempo) - descontar)txtResultado.Text = Format(txtResultado.Text, "00h00min")End Subem 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 optionale então o TimeSerial fica em destaque Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Donati Postado Abril 16, 2007 Denunciar Share Postado Abril 16, 2007 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:30o erro na sua aplicação esta aiAte mais Donati Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Abril 16, 2007 Autor Denunciar Share Postado Abril 16, 2007 eu fiz o que você falou, donati...mas ainda está dando o mesmo erro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Donati Postado Abril 16, 2007 Denunciar Share Postado Abril 16, 2007 Gabrielesqueci 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 ficariatxtResultado.Text = TimeSerial(Hour(tempo), Minute(tempo) - descontar, 0)T+ maisDonati Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Abril 16, 2007 Autor Denunciar Share Postado Abril 16, 2007 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:00o 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)??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Donati Postado Abril 16, 2007 Denunciar Share Postado Abril 16, 2007 (editado) não gabrielQuando voce for descontar por exemplo 1 hora e 20 minutos, voce tera que descontar a hora e os minutos, por exemplotxtResultado.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 descontarAte maisDonati Editado Abril 16, 2007 por Donati Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Abril 16, 2007 Autor Denunciar Share Postado Abril 16, 2007 eu fiz isso agora......Private Sub cmdOK_Click()Dim descontarhora As IntegerDim descontarminuto As Integertempo = mkeTempo1.TexttxtResultado.Text = TimeSerial(Hour(tempo) - descontarhora, Minute(tempo) - descontarminuto, 0)txtResultado.Text = Format(txtResultado.Text, "hh:mm")End Subeu fiz isso mas agora o txtResultado está dando sempre 00:00eu tenho que declarar alguma variavel???? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Donati Postado Abril 16, 2007 Denunciar Share Postado Abril 16, 2007 gabrielO resultado já sai no formato HH:MM, não precisa realizar a função FORMAT(variavel,"HH:MM")T+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Abril 17, 2007 Autor Denunciar Share Postado Abril 17, 2007 Ok.....já tirei akela linha....ficou assim..Private Sub cmdOK_Click()Dim descontarhora As IntegerDim descontarminuto As Integertempo = mkeTempo1.TexttxtResultado.Text = TimeSerial(Hour(tempo) - descontarhora, Minute(tempo) - descontarminuto, 0)End Submas eu coloco 05:00 na mkeTempo1 e 30 no mkeTempo2.....e o txtResultado fica 05:00:00qr dizer que não está subtraindo não é????o que está errado??akelas variaveis são necessarias??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 17, 2007 Denunciar Share Postado Abril 17, 2007 Você não deu nenhum valor a "descontarhora" e "descontarminuto", então ambas são 0. E você sabe que qualquer coisa menos zero é igual a própria coisa... :PAbraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Abril 17, 2007 Autor Denunciar Share Postado Abril 17, 2007 nossa...é mesmo........hsauhsuahsuahusmas 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 IntegerDim descontarminuto As Integertempo = mkeTempo1.Textdescontarhora = mkeTempo1.Textdescontarminuto = mkeTempo1.TexttxtResultado.Text = TimeSerial(Hour(tempo) - descontarhora, Minute(tempo) - descontarminuto, 0)End Submas continua dando erro....... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 17, 2007 Denunciar Share Postado Abril 17, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Abril 18, 2007 Autor Denunciar Share Postado Abril 18, 2007 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 mkeTempo1Vlw gntateh a proxima..... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Abril 18, 2007 Autor Denunciar Share Postado Abril 18, 2007 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 IntegerDim descontarminuto As Integerdescontarhora = Hour(mkeTempo.Text)descontarminuto = Minute(mkeTempo.Text)cmdIncluir.Enabled = TruecmdGravar.Enabled = FalsemkeData.Enabled = FalsemkeTempo.Enabled = FalsecboCliente.Enabled = FalseDadosAtendimentos.Recordset.Fields("Data") = mkeDataDadosAtendimentos.Recordset.Fields("Tempo") = TimeSerial(Hour(mkeTempo.Text), Minute(mkeTempo.Text), 0)DadosAtendimentos.Recordset.Fields("Cliente") = cboCliente.TextDadosAtendimentos.Recordset.UpdateClientes.Recordset.FindFirst "NomeFantasia = '" & cboCliente.Text & "'"If Clientes.Recordset.NoMatch = False ThenIf IsNull(Clientes.Recordset.Fields("TempoDisp")) = False ThenClientes.Recordset.EditClientes.Recordset.Fields("TempoDisp") = TimeSerial(Hour(Clientes.Recordset.Fields("TempoDisp")) - descontarhora, Minute(Clientes.Recordset.Fields("TempDisp")) - descontarminuto, 0)Clientes.Recordset.UpdateMsgBox "Este cliente possui " & Clientes.Recordset.Fields("TempoDisp") & " disponíveis para atendimento este mês."Clientes.RefreshDadosAtendimentos.RefreshEnd If End IfEnd SubObrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Gabriel Cabral
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
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.