MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Calcular corretamente antiguidade dos funcionário

    Compartilhe

    JIR
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2016

    [Resolvido]Calcular corretamente antiguidade dos funcionário

    Mensagem  JIR em 26/4/2018, 22:29

    Olá Mestres,

    não entendo bem a construção de código VBA, mas copiei deste fórum código que informa por extenso a antiguidade de cada funcionário ou seja

    informa corretamente desde a data de admissão até cada dia atual, mas o que pretendo é :

    tenho dois campos um chamado de DATA ADMISSAO e outro Chamado DATA DEMISSAO, na caixa de texto txtAntig deveria calcular da seguinte forma

    quando a DATA DEMISSAO for nula, a antiguidade será calculada até ao dia da visualização, mas quando a DATA DEMISSAO tem alguma data registada, o calculo seria desde a DATA ADMISSAO até à DATA DEMISSAO.

    o código que estou a usar No actual Evento

    Private Sub Form_Current()
       
    'Calcula Antiguidade em Anos, Meses e Dias

       If Not IsNull(Me.DATA_ADMISSAO) Then
                  Me.txtAntig = Diff2Dates("DMY", Me.DATA_ADMISSAO, Date)
           
       Else
           Me.txtAntig = vbNullString
                 
       End If
    End Sub


    Meus agradecimentos

    José Silva
    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Calcular corretamente antiguidade dos funcionário

    Mensagem  wellingtoneo em 27/4/2018, 01:15

    Olá amigo!

    Eu usaria algo assim:

    If Not IsNull(Me!DATA_ADMISSAO) Then
    Me.txtAntig = DateDif("DMY", Me!DATA_ADMISSAO, iif(Not IsNull(Me!DATA_DEMISSAO), Me!DATA_DEMISSAO, Date))
    Else
    Me.txtAntig = vbNullString
    End if

    JIR
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2016

    Re: [Resolvido]Calcular corretamente antiguidade dos funcionário

    Mensagem  JIR em 27/4/2018, 10:41

    Olá, muito obrigado pelo interesse em ajudar

    tentei essa pequena alteração, mas não deu certo, o comportamento no calculo manteve igual como se não existisse data no campo DATA DEMISSAO.

    vou estudar melhor e se não conseguir coloco aqui parte da BD


    Abraço

    José Silva
    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Calcular corretamente antiguidade dos funcionário

    Mensagem  wellingtoneo em 27/4/2018, 15:38

    Ok, segue um exemplo para estudos e aplicação baseado no código do mestre Avelino.

    bons estudos.
    Anexos
    datas.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (40 Kb) Baixado 9 vez(es)

    JIR
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2016

    Re: [Resolvido]Calcular corretamente antiguidade dos funcionário

    Mensagem  JIR em 27/4/2018, 18:06

    Olá,

    obrigado por me ter enviado mais um exemplo que me irá ser útil, pois o código é mais pequeno para estudo e entendimento

    de qualquer forma quebrei mais um pouco a cabeça e fazendo pequenas alterações, mais por intuição, deu certo

    o wellingtoneo tinha  
    DateDif
    Me!

    eu tinha
    Diff2Dates
    Me.

    não entendi qual a diferença de ! para . mas irei estudar mais um pouco para saber a difereça

    If Not IsNull(Me.DATA_ADMISSAO) Then
    Me.txtAntig = Diff2Dates("DMY", Me.DATA_ADMISSAO, IIf(Not IsNull(Me.DATA_DEMISSAO), Me.DATA_DEMISSAO, Date))
    Else
    Me.txtAntig = vbNullString
    End If

    End Sub


    Grande Abraço e muito obrigado

    José Silva

      Data/hora atual: 21/11/2018, 12:31