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

    [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Compartilhe

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3235
    Registrado : 20/04/2011

    [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Mensagem  Silvio em Qua 17 Set 2014, 15:16

    Prezados, preciso que ao colocar a data de avaliação, seja contado 14 dias após essa data.  Porém se a data cair no sábado ou no domingo a mesma seja colocada na sexta feira.

    Porém temos um problema, a data do curso.

    Se a data de inicio do curso, cair numa segunda feira, esse laudo tem que ser entregue na sexta feira.  O txt DtEntrega, recebe os valores de ambas as datas, se não tem data de curso, ela recebe o valor da data...se tem curso, recebe o valor.
    As data colocadas na combos, são sábados e domingos e algumas segunda feiras.

    Criei um formulário com os campos que eu estou a usar, já com as tabelas  e as datas.  O mesmo está no anexo.

    Agradeço a quem puder me ajudar.
    Anexos
    Datautil.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (29 Kb) Baixado 11 vez(es)


    Última edição por Silvio em Qui 18 Set 2014, 21:28, editado 2 vez(es) (Razão : Arquivo zipado enviado errado.)


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3235
    Registrado : 20/04/2011

    Re: [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Mensagem  Silvio em Qui 18 Set 2014, 19:24

    Alguém para me ajudar ??


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3235
    Registrado : 20/04/2011

    Re: [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Mensagem  Silvio em Qui 18 Set 2014, 19:25

    UP!!!


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Mensagem  Alexandre Neves em Qui 18 Set 2014, 20:16

    Boa noite, Sílvio
    Explique a mecânica do que precisa e indique dados para nos localizarmos na situação


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3235
    Registrado : 20/04/2011

    Re: [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Mensagem  Silvio em Qui 18 Set 2014, 21:26

    Boa noite Alexandre...

    Seguinte, preciso que ao colocar a data de avaliação, seja contado 14 dias após essa data. Porém se a data cair no sábado ou no domingo a mesma seja colocada na sexta feira.
    Porém temos um problema, a data do curso.
    Se a data de inicio do curso, cair numa segunda feira, esse laudo tem que ser entregue na sexta feira.
    Exemplo, se o dia de curso é:05/10/2014, essa entrega tem que ser pelo menos na sexta feira.
    O txt DtEntrega, recebe os valores de ambas as datas, se não tem data de curso, ela recebe o valor da data...se tem curso, recebe o valor da data curso.
    As data colocadas na combos, são sábados e domingos e algumas segunda feiras.

    É isso.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Mensagem  Alexandre Neves em Qui 18 Set 2014, 21:36

    Fala em data e tem caixa de texto para data
    Fala em data do curso e não vejo de onde vem a data do curso
    Não analisei a função de datas mas é fácil entender que não se a data for 111 fica-se na dúvida se é 11 de Janeiro ou 1 de Novembro
    Reveja estas questões


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3235
    Registrado : 20/04/2011

    Re: [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Mensagem  Silvio em Qui 18 Set 2014, 21:42

    Alexandre, a data de inicio de curso, está em uma combo.

    Eu estou tentando adaptar o código que está em um módulo,  descrito abaixo de autoria do Avelino Sampaio.
    Código:
    Option Compare Database
    Private intFeriado(14) As Integer

    Public Function fncAjustaData(dataInformada As Date, Optional Federal As Boolean) As Date
    Dim j%, NovaData As Date
    '--------------------------------------
    'Feriados fixos no formato MêsDia(mdd)
    '--------------------------------------
    intFeriado(0) = 1231  '31/12 - Véspera Confraternização Universal"
    intFeriado(1) = 101   '01/01 - Confraternização Universal"
    intFeriado(2) = 421   '21/04 - Tiradentes"
    intFeriado(3) = 501   '01/05 - Dia do Trabalho
    intFeriado(4) = 907   '07/09 - Independência do Brasil"
    intFeriado(5) = 1012  '12/10 - Nossa Senhora Aparecida"
    intFeriado(6) = 1102  '02/11 - Finados"
    intFeriado(7) = 1115  '15/11 - Proclamação da República
    intFeriado(8) = 1120  '20/11 - Dia da consciência Negra
    intFeriado(9) = 1224  '24/12 - Véspera de Natal
    intFeriado(10) = 1225 '25/12 - Natal
    '--------------------------------------
    'Feriados móveis no formato MêsDia(mdd)
    '--------------------------------------
    Call fncFeriadosMoveis(Year(dataInformada))

    NovaData = dataInformada
    '----------------------------------------------------------------------------
    'Ajusta data para o dia seguinte ou para o dia anterior caso caia no feriado
    '----------------------------------------------------------------------------
    For j = 0 To 13
        If intFeriado(j) = Format(dataInformada, "mmdd") Then
            NovaData = dataInformada + IIf(Federal, -1, 1)
            Exit For
        End If
    Next
    '--------------------------------------------------------------------------
    'Ajusta data para segunda-feira ou sexta-feira caso caia no final de semana
    '--------------------------------------------------------------------------
    If Weekday(NovaData) = 7 Then NovaData = NovaData + IIf(Federal, -1, 2)
    If Weekday(NovaData) = 1 Then NovaData = NovaData + IIf(Federal, -2, 1)

    '-----------------------------------------------------------------
    'Se a data informada sofreu ajuste, chamar novamente pela função
    'para uma nova verificação.
    '----------------------------------------------------------------
    If NovaData <> dataInformada Then NovaData = fncAjustaData(NovaData, Federal)

    fncAjustaData = NovaData
    End Function

    Private Sub fncFeriadosMoveis(ano%)
    Dim dt_Pascoa As Date
    Dim A%, B%, C%, D%, E%, F%, G%, H%, I%, k%, L%, M%, p%, Q%
    A = (ano Mod 19)
    B = Int(ano / 100)
    C = (ano Mod 100)
    D = Int(B / 4)
    E = (B Mod 4)
    F = Int((B +  / 25)
    G = Int((B - F + 1) / 3)
    H = ((19 * A + B - D - G + 15) Mod 30)
    I = Int(C / 4): k = (C Mod 4)
    L = ((32 + 2 * E + 2 * I - H - k) Mod 7)
    M = Int((A + 11 * H + 22 * L) / 451)
    p = Int((H + L - 7 * M + 114) / 31)
    Q = ((H + L - 7 * M + 114) Mod 31)

    dt_Pascoa = CDate((Q + 1) & "/" & p & "/" & ano) 'Domingo de Pascoa
    intFeriado(11) = Format(DateAdd("d", -47, dt_Pascoa), "mmdd") 'Carnaval
    intFeriado(12) = Format(DateAdd("d", -2, dt_Pascoa), "mmdd") 'Sexta Feira Santa
    intFeriado(13) = Format(DateAdd("d", 60, dt_Pascoa), "mmdd") 'Corpus Crist
    End Sub

    Até fiz um pequeno progresso. Coloque uma data qualquer em data de avaliação. O código está no evento ao sair.  Veja  o anexo em questão !
    Anexos
    Datautil.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (36 Kb) Baixado 7 vez(es)


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Mensagem  Alexandre Neves em Qui 18 Set 2014, 22:08

    Bem, já devia ter nomes normalizados, máscara de entrada, etc.
    Criei-lhe nova caixa de combinação para não procurar alterações à existente.
    Veja que não considerei os feriados, porque me parece que surgiriam algumas dúvidas em caso da data final cair em feriado (nem referiu ter de contornar os feriados, apenas inferi tal situação).
    Veja e adeqúe
    Anexos
    Datautil.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (56 Kb) Baixado 11 vez(es)


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3235
    Registrado : 20/04/2011

    Re: [Resolvido]Mostrar primeiro ou segundo dia útil anterior ao mostrar a data ( contando 15 dias após a inserção da data )

    Mensagem  Silvio em Sex 19 Set 2014, 11:12

    Bom dia Alexandre, somente agora eu estou com acesso a internet....

    Mas é isso ai mesmo, de uma maneira simples e prática resolveste.

    Agradeço a si !

    Abraços.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: Ter 06 Dez 2016, 05:47