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

    [Resolvido]Correr tabela por Mês ou 15 dias anteriores

    avatar
    juliobertoso
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 104
    Registrado : 23/10/2017

    [Resolvido]Correr tabela por Mês ou 15 dias anteriores Empty [Resolvido]Correr tabela por Mês ou 15 dias anteriores

    Mensagem  juliobertoso 21/8/2018, 21:33

    Galera, boa tarde!

    Desenvolvi um sistema de agendamentos aqui no trabalho no qual o usuário recebe os agendamentos dos fornecedores e transportadoras e após registrar o agendamento é disparado um e-mail para portaria do condomínio, portaria interna da empresa que trabalho e aproveito as informações e disponibilizo em uma TV de 60” mostrando os agendamentos de entregas e coletas. Tudo funciona perfeitamente, porém eu tenho um problema que só irá aumentar, pois quanto mais registro mais tempo demora para aparecer as informações na TV.

    Aí vem a dúvida: Gostaria de saber como faço para correr a tabela dentro do mês vigente  ou nos últimos 15 dias(esse seria ideal, pois também não precisaria me preocupar com a virada do mês)

    No código abaixo ele corre a "tblAgendamentoAZUL" do início até o fim e como tem muito registro e está em rede demora para aparecer o resultado

    Se puderem me ajudar.


    Código:

    Public Sub ProgramacaoTela()
    On Error Resume Next
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
        
    Set db = Application.CurrentDb
    Set rs = db.OpenRecordset("tblAgendamentoAZUL") ' Corre a Tabela
        'EOF = End Of File
    Do Until rs.EOF 'faça até o fim do arquivo
        'faz a comparação
       'PRIMEIRA COLUNA
      
       If rs.Fields("Data").Value = Date - 3 And rs.Fields("Horario").Value = "06:00:00" And rs.Fields("Tipo").Value = "ENTREGA" And rs.Fields("AprnaPortaria").Value >= rs.Fields("Horario").Value Then
       Form_frmAcompanhamento.txtEntrada_06.Visible = True
       Form_frmAcompanhamento.txtEntrada_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
       Form_frmAcompanhamento.txtEntrada_06.ForeColor = RGB(0, 0, 0)    'LETRAS PRETAS
       Form_frmAcompanhamento.txtEntrada_06.BackColor = RGB(255, 255, 0) 'FUNDO AMARELO
        
    ElseIf rs.Fields("Data").Value = Date - 3 And rs.Fields("Horario").Value = "06:00:00" And rs.Fields("Tipo").Value = "ENTREGA" And rs.Fields("AprnaPortaria").Value < rs.Fields("Horario").Value Then
        Form_frmAcompanhamento.txtEntrada_06.Visible = True
        Form_frmAcompanhamento.txtEntrada_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
        Form_frmAcompanhamento.txtEntrada_06.ForeColor = RGB(255, 255, 255) 'LETRAS BRANCAS
        Form_frmAcompanhamento.txtEntrada_06.BackColor = RGB(34, 177, 76)   'FUNDO VERDE
            
    'ElseIf rs.Fields("Data").Value = Date - 3 And rs.Fields("Horario").Value = "06:00:00" And rs.Fields("Tipo").Value = "ENTREGA" Then
     '  Form_frmAcompanhamento.txtEntrada_06.Visible = True
      ' Form_frmAcompanhamento.txtEntrada_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
      
    ElseIf rs.Fields("Data").Value = Date - 3 And rs.Fields("Horario").Value = "06:00:00" And rs.Fields("Tipo").Value = "COLETA" Then
       Form_frmAcompanhamento.txtSaida_06.Visible = True
       Form_frmAcompanhamento.txtSaida_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
      
    ElseIf rs.Fields("Data").Value = Date - 3 And rs.Fields("Horario").Value = "06:00:00" And rs.Fields("Tipo").Value = "ENTREGA E COLETA" Then
      
       Form_frmAcompanhamento.txtSaida_06.Visible = True
       Form_frmAcompanhamento.txtSaida_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
       Form_frmAcompanhamento.txtEntrada_06.Visible = True
       Form_frmAcompanhamento.txtEntrada_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")

    End If

       rs.MoveNext

       Loop

        'fechar conexão
        rs.Clone
        db.Close

        'libera memória
       Set rs = Nothing
       Set db = Nothing

    End Sub

    Este é uma parte do código, pois tem muito mais If...ElseIf
    avatar
    Coltro
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 13/08/2016

    [Resolvido]Correr tabela por Mês ou 15 dias anteriores Empty Re: [Resolvido]Correr tabela por Mês ou 15 dias anteriores

    Mensagem  Coltro 21/8/2018, 23:05

    Algumas contribuições:
    1 - Carregue somente a parte da tabela que interessa no momento. Digamos que quer pegar apenas o dia de hoje, faça:
    Set rs = db.OpenRecordset("SELECT * FROM tblAgendamentoAZUL WHERE [Data] = " & Cdate(now()) & "; )

    2 - Abra a tabela em modo leitura (dbOpenSnapshot), pois fica mais rápido:
    Set rs = db.OpenRecordset("SELECT * FROM tblAgendamentoAZUL WHERE [Data] = " & Cdate(now()) & "; ),dbOpenSnapshot

    3 - Jamais use palavras reservadas do MS-Access como nome de campo. Ter um campo chamado Data "quebra as pernas " do Access e pode lhe trazer resultados inesperados.

    Montei essa resposta sem testar, portanto pode ter algum erro de sintaxe.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Correr tabela por Mês ou 15 dias anteriores Empty Re: [Resolvido]Correr tabela por Mês ou 15 dias anteriores

    Mensagem  Alexandre Neves 22/8/2018, 21:38

    Boa noite,

    Atente aos bons conselhos do colega Coltro

    Altere também o código para
    Código:
    Public Sub ProgramacaoTela()
    On Error Resume Next
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
       
    Set db = Application.CurrentDb
    Set rs = db.OpenRecordset("SELECT * FROM tblAgendamentoAZUL WHERE Data=Date()-3") ' Corre a Tabela
        'EOF = End Of File
    Do Until rs.EOF 'faça até o fim do arquivo
        'faz a comparação
      'PRIMEIRA COLUNA
     
      If rs.Fields("Horario").Value = "06:00:00" And rs.Fields("Tipo")= "ENTREGA" And rs.Fields("AprnaPortaria") >= rs.Fields("Horario") Then
      Form_frmAcompanhamento.txtEntrada_06.Visible = True
      Form_frmAcompanhamento.txtEntrada_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
      Form_frmAcompanhamento.txtEntrada_06.ForeColor = RGB(0, 0, 0)    'LETRAS PRETAS
      Form_frmAcompanhamento.txtEntrada_06.BackColor = RGB(255, 255, 0) 'FUNDO AMARELO
       
    ElseIf rs.Fields("Horario") = "06:00:00" And rs.Fields("Tipo") = "ENTREGA" And rs.Fields("AprnaPortaria") < rs.Fields("Horario") Then
        Form_frmAcompanhamento.txtEntrada_06.Visible = True
        Form_frmAcompanhamento.txtEntrada_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
        Form_frmAcompanhamento.txtEntrada_06.ForeColor = RGB(255, 255, 255) 'LETRAS BRANCAS
        Form_frmAcompanhamento.txtEntrada_06.BackColor = RGB(34, 177, 76)  'FUNDO VERDE
           
    'ElseIf rs.Fields("Data") = Date - 3 And rs.Fields("Horario") = "06:00:00" And rs.Fields("Tipo") = "ENTREGA" Then
     '  Form_frmAcompanhamento.txtEntrada_06.Visible = True
      ' Form_frmAcompanhamento.txtEntrada_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
     
    ElseIf rs.Fields("Horario") = "06:00:00" And rs.Fields("Tipo") = "COLETA" Then
      Form_frmAcompanhamento.txtSaida_06.Visible = True
      Form_frmAcompanhamento.txtSaida_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
     
    ElseIf And rs.Fields("Horario") = "06:00:00" And rs.Fields("Tipo") = "ENTREGA E COLETA" Then
     
      Form_frmAcompanhamento.txtSaida_06.Visible = True
      Form_frmAcompanhamento.txtSaida_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")
      Form_frmAcompanhamento.txtEntrada_06.Visible = True
      Form_frmAcompanhamento.txtEntrada_06 = rs.Fields("Transportadora") & " - " & rs.Fields("Placa") & " - " & rs.Fields("Motorista")

    End If

      rs.MoveNext

      Loop

        'fechar conexão
        rs.Clone
        db.Close

        'libera memória
      Set rs = Nothing
      Set db = Nothing

    End Sub


    .................................................................................
    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
    juliobertoso
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 104
    Registrado : 23/10/2017

    [Resolvido]Correr tabela por Mês ou 15 dias anteriores Empty Re: Correr tabela por Mês ou 15 dias anteriores

    Mensagem  juliobertoso 24/8/2018, 12:38

    Obrigado Alexandre / Coltro


    vou testar e logo respondo se deu certo.

    valeu
    avatar
    juliobertoso
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 104
    Registrado : 23/10/2017

    [Resolvido]Correr tabela por Mês ou 15 dias anteriores Empty Re: Correr tabela por Mês ou 15 dias anteriores

    Mensagem  juliobertoso 24/8/2018, 14:36

    Tentei os código acima, mas não obtive sucesso

    vasculhando na internet achei um exemplo abaixo, vou tentar adaptar ao meu código


    Código:

    Public Sub ProgramacaoTela()
    On Error Resume Next

    Dim dbs As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim rst As DAO.Recordset

    Set dbs = CurrentDb

    'Obter a consulta de parâmetro
    Set qfd = dbs.QueryDefs("qryMyParameterQuery")

    'Forneça o valor do parâmetro
    qdf.Parameters("EnterStartDate") = Date
    qdf.Parameters("EnterEndDate") = Date + 7

    'Abra um Recordset com base na consulta de parâmetro
    Set rst = qdf.OpenRecordset()
    avatar
    juliobertoso
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 104
    Registrado : 23/10/2017

    [Resolvido]Correr tabela por Mês ou 15 dias anteriores Empty Re: Correr tabela por Mês ou 15 dias anteriores

    Mensagem  juliobertoso 24/8/2018, 21:03

    Obrigado, deu certo.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Correr tabela por Mês ou 15 dias anteriores Empty Re: [Resolvido]Correr tabela por Mês ou 15 dias anteriores

    Mensagem  Alexandre Neves 24/8/2018, 21:25

    Boa noite,
    Faltou o "Resolvido"


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

      Data/hora atual: 16/6/2021, 21:45