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

    [Resolvido]Ajuda com lembrete de prazo

    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1042
    Registrado : 23/08/2010

    [Resolvido]Ajuda com lembrete de prazo Empty [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Mylton 18/8/2024, 22:43

    Boa noite a todos.
    Estou tentando criar uma rotina que me mostre no Form Frm_Prazos_Processos os processos cujo prazo se encontram a vencer em até 5 dias.
    Criei a consulta CNS_PrazosProximos
    Código:
    SELECT Processo_Numero, Data_Inicial, (Data_Inicial + Prazo_Dias) AS Data_Final
    FROM tbl_Processos
    WHERE (Data_Inicial + Prazo_Dias) <= Date() + 5 AND (Data_Inicial + Prazo_Dias) >= Date();
    que me da os números certos.
    Contudo quando abro o respectivo form não mostra nada na ListBox lst_PrazosProximos.
    Os códigos nesse form são....
    Código:

    Option Compare Database

    Private Sub Form_Open(Cancel As Integer)
       ' Atualiza a ListBox e mostra o aviso
       Call AtualizarListBox
       
       Dim rs As DAO.Recordset
       Dim strAviso As String
       ' Consulta para gerar o aviso de processos próximos
       Set rs = CurrentDb.OpenRecordset("SELECT Processo_Numero, (Data_Inicial + Prazo_Dias) AS Data_Final FROM tbl_Processos_Prazos WHERE (Data_Inicial + Prazo_Dias) <= Date() + 5 AND (Data_Inicial + Prazo_Dias) >= Date()")

       If Not rs.EOF Then
           strAviso = "Os seguintes processos precisam ser resolvidos em breve:" & vbCrLf & vbCrLf
           
           Do While Not rs.EOF
               strAviso = strAviso & "Processo: " & rs!Processo_Numero & " - Prazo: " & rs!Data_Final & vbCrLf
               rs.MoveNext
           Loop

           MsgBox strAviso, vbExclamation, "Aviso de Prazos Próximos"
       End If

       rs.Close
       Set rs = Nothing
    End Sub

    Private Sub AtualizarListBox()
       Dim rs As DAO.Recordset
       Dim strSQL As String
       ' Consulta para preencher a ListBox com processos próximos
       strSQL = "SELECT Processo_Numero, (Data_Inicial + Prazo_Dias - Date()) AS Dias_Restantes, ID_Processos " & _
                "FROM tbl_Processos " & _
                "WHERE (Data_Inicial + Prazo_Dias) <= Date() + 5 AND (Data_Inicial + Prazo_Dias) >= Date()"

       Set rs = CurrentDb.OpenRecordset(strSQL)

       ' Limpa a ListBox antes de adicionar novos itens
       Me.lst_PrazosProximos.RowSourceType = "Value List" ' Garantir que o tipo de origem é "Value List"
       Me.lst_PrazosProximos.RowSource = ""

       Me.lst_PrazosProximos.ColumnCount = 3
       Me.lst_PrazosProximos.ColumnWidths = "2cm;2cm;0cm" ' Oculta a coluna do ID

       ' Adiciona itens à ListBox
       Do While Not rs.EOF
           Me.lst_PrazosProximos.AddItem rs!Processo_Numero & ";" & rs!Dias_Restantes & ";" & rs!Id_Processos
           rs.MoveNext
       Loop

       rs.Close
       Set rs = Nothing
    End Sub

    Private Sub lst_PrazosProximos_Click()
       Dim selectedID As Long
       ' Verifica se um item foi selecionado
       If Me.lst_PrazosProximos.ListIndex <> -1 Then
           selectedID = Me.lst_PrazosProximos.Column(2) ' A terceira coluna contém o ID do processo
           ' Abre o formulário com base no ID selecionado
           DoCmd.OpenForm "frm_Processos", , , "ID_Processos = " & selectedID
       End If
    End Sub

    Em anexo o Bd para que alguém possa dizer onde estou errando.
    Obrigado a todos.
    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1042
    Registrado : 23/08/2010

    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Mylton 20/8/2024, 14:29

    Bom dia.
    Refiz o projeto e funciona, mas não da forma que preciso.
    Ele mostra as pendências de forma geral (Form_Load0000), estipulei um prazo para avisar faltando cinco dias (Form_Load1) que roda tranquilo, entretanto, quando modifiquei (Form_Load) para mostrar de cinco dias até a data de vencimento nada ocorre.

    A linha que modifiquei é essa abaixo...

    Código:
       intStore = DCount("[Processo_Numero]", "[Tbl_Processos]", "[Prazo_Data_Tarefa] Between Now() And DateAdd('d', 5, Now()) AND [Tarefa_Cumprida] = 0")

    Para

    Código:
        intStore = DCount("[Processo_Numero]", "[Tbl_Processos]", "[Prazo_Data_Tarefa] Between DateAdd('d', -5, Date()) And Date() AND [Tarefa_Cumprida] = 0")

    Abaixo os códigos utilizados e o anexo do projeto.
    Alguém poderia ajudar a resolver por favor?
    Obrigado.
    Código:

    Option Compare Database

    'funciona!!!
    Private Sub Form_Load0000()
    'Ao carregar o Frm__, verifique a tabela Processos para ver se há trabalhos incompletos
    Dim intStore As Integer
    'Contagem de trabalhos incompletos que ultrapassaram a data prevista de conclusão
    intStore = DCount("[Processo_Numero]", "[Tbl_Processos]", "[Prazo_Data_Tarefa] <=Now() AND [Tarefa_Cumprida] =0")

    'Se a contagem de trabalhos incompletos for zero, exibe o painel de controle
    'Senão exibe uma caixa de mensagem detalhando a quantidade de trabalhos
    'e dá ao usuário a opção de visualizá-los ou não.
       If intStore = 0 Then
    ' Se não houver trabalhos não concluídos, sair do procedimento
               Exit Sub
                   Else
    ' Se houver trabalhos não concluídos, exibe uma mensagem perguntando ao usuário se deseja visualizá-los
                       If MsgBox("Existem " & intStore & " processos não concluidos" & _
                       vbCrLf & vbCrLf & "Você gostaria de ver isso agora?", _
                       vbYesNo, "Você tem trabalhos incompletos...") = vbYes Then
                       
    ' Se o usuário clicar em "Sim", minimiza o formulário atual
                       DoCmd.Minimize
    ' Abre o formulário "Frm_Informe_Prazo" em modo normal
                       DoCmd.OpenForm "Frm_Informe_Prazo", acNormal
                   Else
    ' Se o usuário clicar em "Não", sair do procedimento
               Exit Sub
           End If
       End If
    End Sub


    'funciona!!!
    Private Sub Form_Load()
       ' Ao carregar o Frm__, verifica a tabela Processos para ver se há trabalhos com prazo de conclusão nos próximos 5 dias
       Dim intStore As Integer
       ' Contagem de trabalhos com prazo de conclusão dentro dos próximos 5 dias e que ainda não foram cumpridos
       intStore = DCount("[Processo_Numero]", "[Tbl_Processos]", "[Prazo_Data_Tarefa] Between Now() And DateAdd('d', 5, Now()) AND [Tarefa_Cumprida] = 0")

       ' Se a contagem de trabalhos for zero, sair do procedimento
       If intStore = 0 Then
           Exit Sub
       Else
           ' Se houver trabalhos, exibe uma mensagem perguntando ao usuário se deseja visualizá-los
           If MsgBox("Existem " & intStore & " processos com prazo de conclusão nos próximos 5 dias." & _
           vbCrLf & vbCrLf & "Você gostaria de ver isso agora?", _
           vbYesNo, "Você tem trabalhos com prazos próximos...") = vbYes Then
           
               ' Se o usuário clicar em "Sim", minimiza o formulário atual
               DoCmd.Minimize
               ' Abre o formulário "Frm_Informe_Prazo" em modo normal
               DoCmd.OpenForm "Frm_Informe_Prazo", acNormal
           Else
               ' Se o usuário clicar em "Não", sair do procedimento
               Exit Sub
           End If
       End If
    End Sub


    'não funciona!!!
    Private Sub Form_Load1()
       ' Ao carregar o Frm__, verifica a tabela Processos para ver se há trabalhos com prazo de conclusão entre 5 dias atrás e hoje
       Dim intStore As Integer
       ' Contagem de trabalhos com prazo de conclusão entre 5 dias antes e a data de vencimento e que ainda não foram cumpridos
       intStore = DCount("[Processo_Numero]", "[Tbl_Processos]", "[Prazo_Data_Tarefa] Between DateAdd('d', -5, Date()) And Date() AND [Tarefa_Cumprida] = 0")

       ' Se a contagem de trabalhos for zero, sair do procedimento
       If intStore = 0 Then
           Exit Sub
       Else
           ' Se houver trabalhos, exibe uma mensagem perguntando ao usuário se deseja visualizá-los
           If MsgBox("Existem " & intStore & " processos com prazo de conclusão entre 5 dias atrás e hoje." & _
           vbCrLf & vbCrLf & "Você gostaria de ver isso agora?", _
           vbYesNo, "Você tem trabalhos com prazos próximos...") = vbYes Then
           
               ' Se o usuário clicar em "Sim", minimiza o formulário atual
               DoCmd.Minimize
               ' Abre o formulário "Frm_Informe_Prazo" em modo normal
               DoCmd.OpenForm "Frm_Informe_Prazo", acNormal
           Else
               ' Se o usuário clicar em "Não", sair do procedimento
               Exit Sub
           End If
       End If
    End Sub
    Anexos
    [Resolvido]Ajuda com lembrete de prazo AttachmentTeste_Prazo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (35 Kb) Baixado 7 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7995
    Registrado : 15/03/2013

    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Alvaro Teixeira 20/8/2024, 14:54

    Olá Mylton,

    No que não funciona tente assim:

    Código:
    intStore = DCount("[Processo_Numero]", "[Tbl_Processos]", "[Prazo_Data_Tarefa] Between " & DateAdd("d", -5, Date()) &" AND Date() AND [Tarefa_Cumprida] = 0")

    Abraço


    Última edição por Alvaro Teixeira em 20/8/2024, 16:00, editado 1 vez(es) (Motivo da edição : faltava o sinal =)
    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1042
    Registrado : 23/08/2010

    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Mylton 20/8/2024, 15:05

    Obrigado pela ajuda Álvaro.

    Modifiquei mas não mostrou o evento cadastrado para amanhã.

    Vou reanexar o projeto com a modificação sugerida.
    Anexos
    [Resolvido]Ajuda com lembrete de prazo AttachmentTeste_Prazo1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (35 Kb) Baixado 20 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7995
    Registrado : 15/03/2013

    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Alvaro Teixeira 20/8/2024, 16:01

    Olá,

    Apenas verifiquei no código e na janela imediata, não testei no projeto nem tive a ver.
    Como seria no projeto o que deveria acontecer com base no ultimo ficheiro que disponibilizou?

    Abraço
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7995
    Registrado : 15/03/2013

    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Alvaro Teixeira 20/8/2024, 16:14

    Olá,

    Estive a ver no projeto e o formulário atualiza com base na consulta e não no código (o código está apenas a contar para verificar se existe)
    Altere na consulta desta forma e teste se é o pretendido:

    Código:
    SELECT Tbl_Processos.Id_Processo, Tbl_Processos.Processo_Numero, Tbl_Processos.Prazo_Data_Tarefa, Tbl_Processos.Tarefa_Cumprida
    FROM Tbl_Processos WHERE Tbl_Processos.Prazo_Data_Tarefa  >= DateAdd('d', -5, Date()) And Tbl_Processos.Tarefa_Cumprida=0;

    Abraço
    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1042
    Registrado : 23/08/2010

    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Mylton 20/8/2024, 16:30

    Sim.
    Mas teria como também mostrar aqueles que o prazo já acabou?
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7995
    Registrado : 15/03/2013

    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Alvaro Teixeira 21/8/2024, 10:37

    Olá Mylton,

    Tudo depende de como pretende filtrar os dados, será só ajustar

    Abraço
    Mylton
    Mylton
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1042
    Registrado : 23/08/2010

    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Mylton 21/8/2024, 15:37

    Obrigado pela ajuda e dicas.
    Abs e boa semana.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7995
    Registrado : 15/03/2013

    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Alvaro Teixeira 21/8/2024, 22:36

    cheers

    Conteúdo patrocinado


    [Resolvido]Ajuda com lembrete de prazo Empty Re: [Resolvido]Ajuda com lembrete de prazo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 23:46