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


2 participantes

    Adicionar registros em datas determinadas

    avatar
    Alesk_
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 25/07/2015

    Adicionar registros em datas determinadas Empty Adicionar registros em datas determinadas

    Mensagem  Alesk_ 25/7/2015, 17:16

    Olá a todos,

    Consegui fazer um código para criar um número de registros específicos para datas semanais (de semana em semana), porém estou em dificuldades para conseguir o mesmo quando preciso criar registros de 2 em 2 semanas.
    Estou usando a função dateadd.

    Para registros semanal fiz o seguinte:
    Campos:
    TotalAulasAnual - número de aulas totais ao qual também será o mesmo número de registros a serem criados.
    DiaAula1 - data da primeira aula. Os registros devem ser criados a partir desta data, que devem ser distribuídos semanalmente ou de 2 em 2 semanas.
    AulasMensais - 4 (para registros semanais) ou 2 (para registros de 14 em 14 dias).

    Código:

    Dim db
    Dim ks
    Dim I As Integer

    Set db = CurrentDb()
    Set ks = db.OpenRecordset("TbSala1")
    For I = 1 To Me.TotalAulasAnual

    If Me.Sala = 1 And Me.AulasMensais = 4 Then
    ks.AddNew
    ks("Data") = DateAdd("ww", I - 1, Me.DiaAula1)
    ks("Hora") = Me.HoraAula1
    ks("Nome") = Me.Nome
    ks("Prf") = Me.Professor
    ks.Update

    Este código funciona perfeitamente para os devidos lançamentos nas datas especificada no cadastro, porém realmente não sei como fazer os lançamentos quando for este for para semana sim, semana não.

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alexandre Neves 25/7/2015, 19:59

    Boa tarde, e bem-vindo ao fórum
    Nomeie de forma normalizada. Data é palavra reservada de Access
    Dim db
    Dim ks
    Dim I As Integer

    Set db = CurrentDb()
    Set ks = db.OpenRecordset("TbSala1")
    For I = 1 To Me.TotalAulasAnual

    If Me.Sala = 1 And Me.AulasMensais = 2 Then
    ks.AddNew
    ks("Data") = DateAdd("ww", (I - 1)*2, Me.DiaAula1)
    ks("Hora") = Me.HoraAula1
    ks("Nome") = Me.Nome
    ks("Prf") = Me.Professor
    ks.Update


    .................................................................................
    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
    avatar
    Alesk_
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 25/07/2015

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alesk_ 26/7/2015, 02:31

    Boa noite Alexandre!

    Muito obrigado pela ajuda, funcionou perfeitamente!
    No fim era uma questão de matemática fundamental, porém eu não utilizava os parênteses para "isolar" a questão.
    Foi um ótimo aprendizado!

    Estou tentando montar um cronograma do ano letivo da minha escola de música e me deparei com mais uma questão: temos férias coletivas no mês de janeiro e 1 semana na segunda semana de julho, seria possível fazer com que as aulas que seriam agendadas nestas datas serem "jogadas" para datas funcionais?

    Obrigado!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alexandre Neves 26/7/2015, 08:10

    Bom dia,
    Não entendi o que são datas funcionais. Veja como pode declarar essas datas em código


    .................................................................................
    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
    avatar
    Alesk_
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 25/07/2015

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alesk_ 26/7/2015, 14:15

    Bom dia,
    Explicando melhor:

    Por exemplo, um cliente fecha um contrato com o período de 11 meses, sendo 42 aulas pertencentes à esse contrato.
    O total de aulas serão ministradas na disposição de uma vez por semana, com média de 4 aulas mensais.
    O sistema então irá lançar as 42 aulas a partir da data da primeira aula (até aí tudo bem), porém me deparei com a seguinte questão:
    A escola possui férias coletivas de uma semana, na segunda semana de julho e férias coletivas de 30 dias durante o mês de janeiro.

    Então caso um cliente faça a sua matrícula no mês de maio, fatalmente o sistema irá cadastrar aulas durante o período de férias!
    Há algum código ou função para que o sistema não cadastre os registros nas datas de férias?

    Obrigado.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alexandre Neves 26/7/2015, 15:34

    Faça a verificação dentro do ciclo
    Código:
    For I = 1 To Me.TotalAulasAnual
        If Me.Sala = 1 And Me.AulasMensais = 2 Then
            'verifica se é mês de Janeiro
            if Month(DateAdd("ww", (I - 1)*2, Me.DiaAula1))=1 then
                I=I-1
            else
                ks.AddNew
                ks("Data") = DateAdd("ww", (I - 1)*2, Me.DiaAula1)
                ks("Hora") = Me.HoraAula1
                ks("Nome") = Me.Nome
                ks("Prf") = Me.Professor
                ks.Update
            end if
    Fica a faltar a verificação da 2ª semana de Julho


    .................................................................................
    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
    avatar
    Alesk_
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 25/07/2015

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alesk_ 27/7/2015, 21:37

    Olá Alexandre!
    Estou tendo inúmeros erros no código.
    Segue-se:

    Dim db
    Dim ks
    Dim I As Integer
    Set db = CurrentDb()
    Set ks = db.OpenRecordset("HistóricoAulas")
    For I = 1 To Me.TotalAulasAnual

    If Me.NumeroDeAula = 2 Then
    If Month(DateAdd("ww", (I - 1) * 2, Me.DiaAula1)) = 1 Then
    I = I - 1

    Else
    ks.AddNew
    ks("CadastroAlunos") = Me.Código
    ks("DiaAula") = DateAdd("ww", (I - 1) * 2, Me.DiaAula1)
    ks("Hora") = Me.HoraAula1
    ks("Nome") = Me.Nome
    ks("Prf") = Me.Professor
    ks("Sala") = Me.Sala
    ks("Data") = DateAdd("ww", (I - 1) * 2, Me.DiaAula1)
    ks.Update
    Next
    ks.Close
    db.Close
    End if
    End If

    Ele cria milhares de registros, e sinceramente não entendo o por quê.
    Apenas para salientar, preciso que os registros que seriam gerados para o mês de janeiro, sejam gerados para o mês seguinte (no caso fevereiro), pois em janeiro estaremos em férias coletivas.

    Digamos que você contrate 42 aulas na minha escola, sendo a matrícula no mês de novembro, preciso que o sistema distribua semanalmente os dias da sua aula e quando chegar em janeiro "pule" para fevereiro e continue a lançar até que o número total (42) seja atingido.

    Obrigado!
    Obs: Desculpe se eu estiver pedindo muito, estou dando o meu máximo para desenvolver esse sistema, estou varando noites inclusive e não estou conseguindo achar solução para isso.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alexandre Neves 28/7/2015, 13:07

    Boa tarde,
    Alterou o código que eu tinha sugerido
    O que significa "If Me.NumeroDeAula = 2 Then"?


    .................................................................................
    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
    avatar
    Alesk_
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 25/07/2015

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alesk_ 28/7/2015, 14:32

    Bom dia!

    Não houve alteração no código, apenas percebi que não haveria necessidade de uma condicional para as salas, pois posso filtrar através de uma consulta.
    Em relação ao outro campo "NumeroDeAula" apenas alterei o nome do campo "AulasMensais", pois notei que não seria correto chama-lo dessa forma.

    Ou seja, o código que passei contendo a condição "If" apenas serve para saber se as aulas serão distribuídas semanalmente ou a cada duas semanas (semanalmente caso o resultado seja 4, a cada duas semanas caso o resultado seja 2).

    Peço-lhe desculpas por não ter informado.

    Vc acha necessário enviar o banco de dados?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alexandre Neves 28/7/2015, 16:06

    Tente
    Código:
    For I = 1 To Me.TotalAulasAnual
        ProximaData = DateAdd("ww", (I - 1) * 2, Me.DiaAula1)
        'se é mês de Janeiro, aumenta 1 mês
        If Month(ProximaData) = 1 Then ProximaData = DateAdd("m", 1, ProximaData)
           
        If Me.NumeroDeAula = 2 Then
            ks.AddNew
            ks("Data") = ProximaData
            ks("Hora") = Me.HoraAula1
            ks("Nome") = Me.nome
            ks("Prf") = Me.Professor
            ks.Update
        End If


    .................................................................................
    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
    avatar
    Alesk_
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 25/07/2015

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alesk_ 31/7/2015, 12:43

    Olá bom dia Alexandre!

    O código funcionou, porém o sistema estranhamente começa a salvar os registros em datas inconvenientes após o mês de janeiro (mês que é para ser pulado pelas férias).
    Enviei um print screen junto à essa mensagem para que percebas, note que após o mês de janeiro, o sistema passou a gerar registros nas terças e sextas.
    Notei que isso ocorreu por 4 vezes, e notei também que são 4 terças feiras no mês de janeiro a qual o sistema pulou.
    Será que o código "quis" compensar essas 4 aulas de janeiro no mês seguinte???
    Anexos
    Adicionar registros em datas determinadas AttachmentExemplo.docx
    Você não tem permissão para fazer download dos arquivos anexados.
    (178 Kb) Baixado 4 vez(es)
    avatar
    Alesk_
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 25/07/2015

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alesk_ 31/7/2015, 12:48

    Explicação extra!!

    Eu entendi o código ao qual você me sugeriu e o adaptei também para os alunos semanais, criei assim o "ProximaData", e o "ProximaData2", o primeiro caso seja semanal e o segundo caso seja semana sim, semana não.
    O exemplo ao qual enviei, refere-se a um aluno cadastrado semanalmente, porém o "erro" também ocorre quando lançado semana sim, semana não.

    Obrigado!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Alexandre Neves 31/7/2015, 12:52

    Boa tarde,
    Veja se funciona como pretende
    Código:
    ProximaData = Me.DiaAula1
    For I = 1 To Me.TotalAulasAnual
        ProximaData = DateAdd("ww", (I - 1) * 2, ProximaData)
        'se é mês de Janeiro, aumenta 1 mês
        If Month(ProximaData) = 1 Then ProximaData = DateAdd("m", 1, ProximaData)
           
        If Me.NumeroDeAula = 2 Then
            ks.AddNew
            ks("Data") = ProximaData
            ks("Hora") = Me.HoraAula1
            ks("Nome") = Me.nome
            ks("Prf") = Me.Professor
            ks.Update
        End If


    .................................................................................
    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

    Conteúdo patrocinado


    Adicionar registros em datas determinadas Empty Re: Adicionar registros em datas determinadas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 08:10