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


    Gerar um cronograma anual, agrupando registros iguais.

    avatar
    mvpinheiiro
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 04/08/2011

    Gerar um cronograma anual, agrupando registros iguais. Empty Gerar um cronograma anual, agrupando registros iguais.

    Mensagem  mvpinheiiro em 11/11/2018, 08:16

    Bom dia, estou montando um sistema para controlar as manutenções aqui do trabalho, mas estou com dificuldades em gerar um cronograma anual.

    Tenho a Tabela 01, onde tenho as colunas TAG, DATA e TIPO.
    Nessa tabela alimento as manutenções dos equipamentos, acontece que o mesmo equipamento pode ter 4 tipos de manutenção e em datas diferentes.

    Então eu posso ter:

    TAG, DATA, TIPO
    0001, 01/11/2018, MENSAL
    0001, 20/12/2018, TRIMESTRAL
    0001, 10/01/2018, SEMESTRAL
    0001, 25/02/2018, ANUAL

    Eu queria a partir dessa tabela gerar um cronograma anual onde tivessem 13 colunas, a primeira com o TAG e as outras com os meses. Para que eu pudesse visualizar que o TAG 0001, tem manutenções em novembro, dezembro, janeiro, fevereiro e qual o tipo dessa manutenção.

    Coloquei em anexo o BD com duas tabelas, na tabela 01 é o que tenho e na tabela 02 é o que eu gostaria de gerar.

    Obrigado
    Anexos
    Gerar um cronograma anual, agrupando registros iguais. AttachmentExemplo.accdb.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (20 Kb) Baixado 11 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Gerar um cronograma anual, agrupando registros iguais. Empty Re: Gerar um cronograma anual, agrupando registros iguais.

    Mensagem  Alexandre Neves em 11/11/2018, 12:40

    Boa tarde e bem-vindo ao fórum
    Denomine os objectos (tabelas, campos, etc) obedecendo a regras que facilitam a interpretação do utilizador e do Access (nomes sem espaços, não utilizar nomes reservados do Access (Data,Mes,Ano,etc), utilizar nomes sugestivos (em vez de Tabela01 ser tabEquipamentos)

    Quanto à sua dúvida, o tipo de manutenção é comulativa (se tiver mensal, trimestral, semestral e anual fazem 4 manutençõ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
    avatar
    mvpinheiiro
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 04/08/2011

    Gerar um cronograma anual, agrupando registros iguais. Empty Re: Gerar um cronograma anual, agrupando registros iguais.

    Mensagem  mvpinheiiro em 11/11/2018, 15:07

    Boa tarde,

    Sim, as manutenções são cumulativas. O mesmo equipamento pode ter esses 4 tipos de manutenções.

    Quanto os nomes, obrigado pelas dicas, mas eu criei esse banco apenas para poder tirar a dúvida mesmo e ficar o mais claro aqui para todos.

    Obrigado
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Gerar um cronograma anual, agrupando registros iguais. Empty Re: Gerar um cronograma anual, agrupando registros iguais.

    Mensagem  Alexandre Neves em 11/11/2018, 17:00

    Boa tarde,
    Cole o código e execute-o
    Código:
    Sub PreencheManutencao()
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    
        Dim B As Byte, Rst1 As DAO.Recordset, Rst2 As DAO.Recordset
        
        CurrentDb.Execute "DELETE * FROM Tabela02"
        Set Rst1 = CurrentDb.OpenRecordset("SELECT DISTINCT TAG FROM Tabela01")
        Set Rst2 = CurrentDb.OpenRecordset("SELECT * FROM Tabela02")
        
        Do While Not Rst1.EOF
            Rst2.AddNew
            Rst2("TAG") = Rst1("TAG")
            Rst2.Update
            Rst1.MoveNext
        Loop
        
        Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM Tabela01")
        Set Rst2 = CurrentDb.OpenRecordset("SELECT * FROM Tabela02")
        Do While Not Rst1.EOF
            Rst2.FindFirst "TAG='" & Rst1("TAG") & "'"
            Rst2.Edit
            Select Case Rst1("Tipo")
            Case "Mensal"
                For B = 0 To 11
                    Rst2(Format(DateAdd("m", B, Rst1("Data")), "MMMM")) = AcrescentaManutencao("Mensal", "" & Rst2(Format(DateAdd("m", B, Rst1("Data")), "MMMM")))
                Next
            Case "Trimestral"
                For B = 0 To 3
                    Rst2(Format(DateAdd("m", B * 3, Rst1("Data")), "MMMM")) = AcrescentaManutencao("Trimestral", "" & Rst2(Format(DateAdd("m", B * 3, Rst1("Data")), "MMMM")))
                Next
            Case "Semestral"
                For B = 0 To 1
                    Rst2(Format(DateAdd("m", B * 6, Rst1("Data")), "MMMM")) = AcrescentaManutencao("Semestral", "" & Rst2(Format(DateAdd("m", B * 6, Rst1("Data")), "MMMM")))
                Next
            Case "Anual"
                Rst2(Format(Rst1("Data"), "MMMM")) = AcrescentaManutencao("Anual", "" & Rst2(Format(Rst1("Data"), "MMMM")))
            End Select
            Rst2.Update
            Rst1.MoveNext
        Loop
        Set Rst1 = Nothing: Set Rst2 = Nothing
        MsgBox "Código executado."
    End Sub

    Function AcrescentaManutencao(strTipo As String, strValor As String) As String
        If Len(strValor) > 0 Then strValor = strValor & ","
        AcrescentaManutencao = strValor & strTipo
    End Function


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

    Gerar um cronograma anual, agrupando registros iguais. Empty Re: Gerar um cronograma anual, agrupando registros iguais.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/5/2019, 02:52