MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    Como usar as mesmas variaveis de uma funcao anterior

    Compartilhe

    skzz
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 28/05/2014

    Como usar as mesmas variaveis de uma funcao anterior

    Mensagem  skzz em Seg 14 Nov 2016, 20:25

    oi pessoal, gostaria de que me tirassem uma dúvida, primeiro se é possível e depois como pode ser feito
    tenho um módulo com 2 funções, eu teria uma função unica mas preciso de 2 resultados, então uma função para cada calculo, correto?

    uma função calcula horas extras e a outra calcula adicional noturno
    mas para calcular o adicional noturno, preciso de todo o calculo de horas antes, a duvida entra aí


    no momento estou copiando toda a função das horas pra função de adicional noturno, e ai faço o calculo do adicional, mas fica uma função gigante e me parece estranho que não tenha uma ligação entre funções
    essa gambiarra está funcionando, mas pra simplificar, seria bom que a segunda função só pegasse os resultados da operação de cima (extras) para enfim calcular o noturno.

    espero ter passado com clareza o problema, tomara que consigam me ajudar!

    agradeço desde já

    rubenscouto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 549
    Registrado : 02/10/2011

    Re: Como usar as mesmas variaveis de uma funcao anterior

    Mensagem  rubenscouto em Ter 15 Nov 2016, 01:29

    Não é possível postar as funções para melhor analise?

    skzz
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 28/05/2014

    Re: Como usar as mesmas variaveis de uma funcao anterior

    Mensagem  skzz em Ter 15 Nov 2016, 09:52

    olá rubens, segue o código


    inthora = Fix(Ent1)
    intmin = Ent1 - Fix(Ent1)


    inthora = inthora * 60
    intmin = intmin * 100

    somaent1 = (inthora + intmin) / 60


    inthora1 = Fix(Sai1)
    intmin1 = Sai1 - Fix(Sai1)


    inthora1 = inthora1 * 60
    intmin1 = intmin1 * 100

    somasai1 = (inthora1 + intmin1) / 60


    essa é a conta básica, no momento eu faço essa conta em 2 funções diferentes, pq a partir dela, faço outras ( mas são bem grandes )
    aproveitando o gancho já deixo uma outra pergunta, é possível uma função retornar mais de um resultado ?


    por exemplo, na minha função eu defino várias variáveis, eu poderia exportá-las ? porque na minha Query no access no momento eu só consigo um resultado, que é o resultado final da função

    philipp.moreira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 05/02/2016

    Re: Como usar as mesmas variaveis de uma funcao anterior

    Mensagem  philipp.moreira em Seg 21 Nov 2016, 00:07

    Para usar os valores atribuídos as variáveis usadas na primeira função:

    Forma 1:

    Declarar sua(s) variável como variáveis globais . . . Tipo:

    Dim int_Hora1 As Integer
    Dim int_Hora2 As Integer

    Sub Rotina_Principal()
    .
    .
    .

    ' Chamada da função 1
    ' Aqui como estou fazendo a chamada de uma função que vai retornar um valor, mas, como não estou atribuindo este retorno/valor a nenhuma variável usei a palavra reservada/comando [CALL],
    Call Funcao1()

    ' Chamada da função 2
    ' Aqui como estou fazendo a chamada de uma função que vai retornar um valor, mas, como não estou atribuindo este retorno/valor a nenhuma variável usei a palavra reservada/comando [CALL],
    Call Funcao2()

    .
    .
    .
    End Sub


    Function Function1 ([parâmetros]) As Double

    ' Processamento da função 1

    End Function

    Function Function2 ([parâmetros]) As Double

    ' Processamento da função 2

    End Function


    Forma 2:

    Declarar variável(is) que recebam o retorno da função 1 para reutilizar o(s) valor(es) na chamada da função 2 . . . Tipo:


    Sub Rotina_Principal()

    Dim int_Hora1 As Integer
    .
    .
    .

    ' Chamada da função 1, atribuindo o valor de retorno a variável int_Hora1

    int_Hora1 = Funcao1()

    ' Chamada da função 2 passando como parâmetro o retorno da função 1 e atribuindo o valor de retorno a variável int_Hora2

    int_Hora2 = Funcao2(int_Hora1)

    .
    .
    .
    End Sub


    Function Function1 ([parâmetros]) As Double

    ' Processamento da função 1

    End Function

    Function Function2 ([parâmetros]) As Double

    ' Processamento da função 2

    End Function

    rubenscouto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 549
    Registrado : 02/10/2011

    Re: Como usar as mesmas variaveis de uma funcao anterior

    Mensagem  rubenscouto em Ter 22 Nov 2016, 02:51

    mas você utiliza esta função pra que mesmo? tem um arquivo no repositorio que faz quase o que você precisa. no caso dele, conta o tempo que um formulario fica aberto e chegando este tempo, fecha-o.

    skzz
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 28/05/2014

    Re: Como usar as mesmas variaveis de uma funcao anterior

    Mensagem  skzz em Qui 24 Nov 2016, 03:21

    Philipp, te agradeço pela resposta e vou fazer os testes com base no que você me passou e digo a vocês se deu certo.
    apenas uma pergunta, eu tinha lido que as Subs não retornam resultado, isso é verdade? Se sim, não me adiantaria usar um sub porque preciso de um resultado ao final da função.


    Rubens, eu uso módulo para fazer cálculo de horas com direito a adicional noturno e redução de hora, não existe arquivo ou função que faça isso sozinho :p
    o que acontece é que eu uso a função1 para converter hora sexagesimal(hora relogio) em hora centesimal(ex: 30min = 0,50 ) ecalcular as horas e dar o resultado de Horas Extras
    e uso a função 2 para calcular o adicional noturno, mas preciso também da conversão de horas feita anteriormente.
    o que tenho feito(funciona mas fica feio) é fazer toda a conversão de horas na função2 novamente, mas é um calculo grande e enche a função e cria uma certa confusão na hora de editar.


    Agradeço a ajuda de vocês e tentarei fazer os testes aqui o mais rápido possível pra informar a solução usada.

      Data/hora atual: Seg 05 Dez 2016, 04:26