MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Guardar resultado de uma expressão e operação em um campo

    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 17/4/2012, 00:53

    Boas, eu tenho um campo duracao e quero guardar nele a diferença entre a hora_inicio e a hora_fim.

    Tenho a seguinte expressão que uso para fazer a operação 'GetElapsedTime([hora_fim]-[hora_inicio])' onde 'GetElapsedTime' e uma funcao num modulo que me converte data e me diz por extenso o total de tempo gasto.

    O meu objetivo e guardar o valor resultante desta expressao no campo duracao para que possa usar esses valores em ocasiões futuras.


    Fico grato por uma ajudinha Wink


    Última edição por racl em 17/4/2012, 09:52, editado 2 vez(es)


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 17/4/2012, 02:11


    Olá!

    Se entendi bem, o campo 'duracao' não é acoplado.

    Então, crie o campo na tabela, e no form defina a propriedade Fonte-do-Controle do campo 'duracao' com o nome do campo.

    Assim o valor ficará armazenado na tabela.
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 17/4/2012, 04:37

    Grande amigão Norberto !!

    Só faltou dizer "como" ele grava os valor na tabela. Laughing Laughing

    Cá entre nós, na ajuda do Access, diz para nós nunca gravarmos os valores calculado em campos de uma tabela (mesmo porque isso é uma redundância e mau uso do espaço do HD).
    Se irá usar o valor calculado futuramente, use a função que calcula esse valor.

    Como?

    Diretamente no código ou através de uma consulta.

    Abraços
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 17/4/2012, 04:48


    É que pra gravar é só X=Y Laughing

    Teu argumento sobre a redundância é correto, também sempre recomendo isto.

    Mas existem casos, e não afirmo que o do colega seja um deles, em que quebramos esta regra, e trocamos um pouco de hd por memória.
    Acho, só p.ex., que gravar o resultado de quant x preço numa tabela de itens de venda, pode agilizar muito a pesquisa por estes dados, quando são muitos registros.
    Ou um valor acumulado de estoque, para limpar registros...

    Mas são as exceções que fazem a regra!

    Abraço!
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 17/4/2012, 09:28

    Muito obrigado Norberto, fico grato pela sua disponibilidade em ajudar.

    Balem, vou ter em atenção suas dicas Wink obrigado


    Cumps



    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 17/4/2012, 09:57

    Já agora uma outra questão sobre este tema, eu depois queria calcular o tempo total que cada funcionario perdeu com cada empresa, com o valor guardado no campo era so fazer a soma de todos os campos, onde funcionario=x e empresa=x, mas a chamar a funcão há alguma maneira de calcular este valor?


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 17/4/2012, 11:44


    Sim, é possível chamar a função sempre que precisar.
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 17/4/2012, 19:02

    Rui

    Como você já deve ter os campos hora_fim e hora_inicio em uma tabela, crie uma consulta com os campos que desejar incluindo esses dois campos e crie nessa consulta um outro campo chamado duracao.
    Na grade da consulta no nome desse campo ficará assim:
    duracao:GetElapsedTime([hora_fim]-[hora_inicio])
    Com essa consulta feita, vc pode fazer o que quiser com ela.
    Em um formulário/relatório, use ela como base de dados e no rodapé poderá colocar uma caixa de texto e nela colocar:
    =Soma(duracao)

    Abraços
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 17/4/2012, 23:31

    Fantástico, estou a ver que com o Access e o VB consigo fazer tudo Very Happy


    A minha falta de tempo é que não me permite estudar mais, e tenho este projeto para entregar dentro de dias, é por isso que ando um pouco ás escuras.


    Mais uma vez obrigado por tudoo, estou muito grato Very Happy


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 18/4/2012, 00:26

    Nós agradecemos teu retorno!

    Boa sorte!!
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 19/4/2012, 11:19

    Vou reabrir este tópico, pois estou com um problema, que é valores nulos, a função 'GetElapsedTime([hora_fim]-[hora_inicio])' não aceita valores nulos, o que faz com que dê erro se não colocar a hora_fim. Pois este campo não é obrigatório se a tarefa não tiver concluida.

    O que eu estava a pensar era algo do genero, executar esta função apenas se o campo estado_tarefa = "concluida"; ou quando o campo hora_fim for preenchido;

    ou

    Arranjar uma forma de a seguinte função permitir valores nulos.


    Código:
    Public Function GetElapsedTime(interval)
    ' fonte Microsoft
    ' http://support.microsoft.com/kb/210604/pt-br
     Dim totalhours As Long, totalminutes As Long, totalseconds As _
        Long
     Dim days As Long, hours As Long, minutes As Long, Seconds As Long


     days = Int(CSng(interval))  (<--- o erro do valor nulo surge aqui)
     totalhours = Int(CSng(interval * 24))
     totalminutes = Int(CSng(interval * 1440))
     totalseconds = Int(CSng(interval * 86400))
     hours = totalhours Mod 24
     minutes = totalminutes Mod 60
     Seconds = totalseconds Mod 60

     GetElapsedTime = days & " Dias " & hours & " Horas " & minutes & _
     " Minutos "

     End Function


    Espero pelas estrelas deste forum que me iluminem mais uma vez Wink


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 19/4/2012, 12:13

    Rui

    Experimente isso:


    days = Nz(Int(CSng(interval)),0)

    Caso não funcione, partiremos para a segunda solução que você mesmo indicou.

    Aguardando...
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 19/4/2012, 12:55

    obrigado pela disponibilidade, mas continua a dar erro:

    "Erro em tempo de Execução '94':
    Use de "Null" Inválido"


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 19/4/2012, 15:41

    Certo

    Por favor, me explique o que tem na variável interval.

    Coloque o código de onde ela é preechida com os valores.

    Pergunto isso porque antes era assim:

    GetElapsedTime([hora_fim]-[hora_inicio])

    Então, creio que terá que colocar o Nz() nesses campos;

    Nz([hora_fim],0)- Nz([hora_inicio],0)

    Explicando: O Nz() devolve o valor = 0 quando o campo ou variável for nulo.

    Aguardando...

    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 19/4/2012, 20:07

    Continua a dar erro, mas mudou o tipo:

    Erro em tempo de execução '6':
    Estouro"

    faço depurar e o erro surge nesta linha:

    Código:
    totalseconds = Int(CSng(interval * 86400))

    cumps


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 19/4/2012, 20:58

    Você não informou sobre a variável interval
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 19/4/2012, 22:17

    Não percebi ?!?!

    Em cima eu coloquei o códido todo da função!

    cmps


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 19/4/2012, 22:31

    Vamos tentar novamente !!

    Tua função começa com:

    Public Function GetElapsedTime(interval)

    Se possível, me diga de onde vem a variável interval, pois creio que já no inicio a mesma já está nula, por isso o erro hora de nulo, hora de estouro de memória.

    Para facilitar, podes fazer assim:

    Coloque um campo na tabela como você mesmo sugeriu:
    TarefaConcluida - tipo booleano (sim/não)

    Inclua esse campo na consulta e na grade coloque:
    Verdadeiro (True)

    Abraços
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 19/4/2012, 22:47

    Eu uso o campo 'estado' em que tenho as seguintes opções 'concluida', 'pendente' e 'em curso', colocar um campo de opção sim/nao deixava de poder usar as outras opções.


    o ideal era executar a função quando a tarefa estiver concluida.

    algo do tipo:

    If Me.cbestado.Column(1) = "Concluida" Then
    SELECT GetElapsedTime [hora_fim-hora_inicio]

    deixo em anexo a minha bd para você dar uma vista de olhos, deve facilitar a sua compreensão.
    login: administrador
    senha: admin


    cumps
    Anexos
    [Resolvido]Guardar resultado de uma expressão e operação em um campo AttachmentBackup.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (554 Kb) Baixado 9 vez(es)


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 20/4/2012, 00:06

    Rui

    Coloque assim no campo duracão, dentro da consulta:

    duracao: GetElapsedTime(SeImed(ÉNulo([hora_fim]);0;[hora_fim])-SeImed(ÉNulo([hora_fim]);0;[hora_inicio]))

    Abraços
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 20/4/2012, 00:24

    Balem antes demais quero lhe agradecer imenso pelo tempo perdido com este problema Wink estou muito grato.

    esse código dá erro 'A função SeImed não esta difinida na expressão'




    caso veja que dá muito trabalho este problema eu desenrasco-me com uma outra solução um pouco básica mas desenrasca, coloco a hora_fim e hora_inicio predifinida com Now() fazendo com que quando a tarefa estiver 'Em Curso' ou 'Pendente' a duração fique a zero, e quando o utilizador colocar concluida o campo hora_fim faz refresh ao Now() e permite a edição manual.

    É uma solução rudimentar mas caso não haja outra desenrasco com essa.


    eu tinha mais urgência na resolução deste tópico:

    http://maximoaccess.forumeiros.com/t7220-identificar-valor-de-uma-funcao-e-assumir-em-um-registo-de-uma-tabela


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 20/4/2012, 00:47

    Tem algo errado ai no teu Access. pois aqui está funcionando perfeitamente.

    Só para ter certeza, digo que é só substituir o nome do campo duracao que tem na consulta por esse que te passei.
    Bom, agora vou ter que sair, amanhã eu continuo te ajudando.

    Se souber usar a janela imediata, procure testar a função IIf() que é a mesma Seimed() ou coloque o IIF no lugar do SeImed para ver o que ocorre.



    Abraços
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 20/4/2012, 09:32

    Fantastico Balem já não dá erro, eu estava a colocar mal a expressão no campo da consulta.


    Fico muito grato pela sua ajuda, acreditem que no relatório deste meu projeto para o meu estágio eu citarei este forúm e alguns membro deste, que me estão a ajudar muitoo!

    Muito obrigado Wink


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    racl
    racl
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 77
    Registrado : 28/03/2012

    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  racl 20/4/2012, 09:56

    Já agora eu tenho um campo chamado tempo_pausa, visto que aquela função apenas me dá a diferença de horas de um ponto inicial a um ponto final eu queria subtrair também o tempo pausa.

    Esta foi a solução que eu arranjei para fazer face ás pausas no horário de trabalho, como hora de almoço, lanche, mudança de dia.


    usando a sua expressão:

    Código:
    duracao: GetElapsedTime(Ise(ÉNulo([hora_fim]);0;[hora_fim])-Ise(ÉNulo([hora_fim]);0;[hora_inicio]))

    queria subtrair também o tempo_pausa, que posso atribuir um valor predifinido de zero para não dar problemas com valores nulos. tentei a seguinte formula mas sem sucesso

    Código:
    duracao: GetElapsedTime(Ise(ÉNulo([hora_fim]);0;[hora_fim])-Ise(ÉNulo([hora_fim]);0;[hora_inicio]-[tempo_pausa]))

    cumps


    .................................................................................
    "Sábio aquele que partilha seu conhecimento, tolo aquele que anuncia sua ignorância".
    By: Édy Leonardo
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 20/4/2012, 12:58

    Rui

    Experimente fazer sozinho, usando o material que você já tem.

    Vou lembrar o seguinte:

    A função GetElapsedTime() recebe um valor decimal para transformar em dias,horas e minutos.
    Portanto, o valor do tempo de pausa deverá ser do mesmo tipo para que haja a substração desse tempo para então ser tratado pela função

    Abraços
    avatar
    Convidad
    Convidado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Convidad 10/6/2012, 18:09


    Tópico marcado como resolvido por não ter havido retorno do usuário.


    Conteúdo patrocinado


    [Resolvido]Guardar resultado de uma expressão e operação em um campo Empty Re: [Resolvido]Guardar resultado de uma expressão e operação em um campo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 20/5/2024, 21:47