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


3 participantes

    [Resolvido]Consulta com DateAdd

    avatar
    Luís André Ramos
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Consulta com DateAdd Empty Consulta com DateAdd

    Mensagem  Luís André Ramos 25/6/2012, 15:14

    Bom dia Pessoal!
    Procurei no fórum e não encontrei. Utilizo o Access 2007. Tenho um Formulário simples para cadastro de visitantes e uma tabela para gravar os dados. Neste formulário tem um campo onde informo a data da primeira visita. Minha necessidade é que a partir da data da primeira visita a cada 15 dias fosse gerada uma lista com os visitantes que tem direito a visita no periodo que eu informar. Criei uma consulta que está fazendo o que eu preciso, mas apenas uma vez, usei o DateAdd("d";15;[DataVisita]).
    Tem como ir criando automaticamente as listas de 15 em 15 dias para cada registro partindo da data informada no campo PrimeiraVisita. Isso tudo é para poder gerar um relatório com os visitantes do dia.
    Também gostaria de utilizar via VBA. O código SQL da consulta é este:

    SELECT DateAdd("d",15,[PrimeiraVisita]) AS DataVisita, Cad_visitantes.Nipen, Cad_visitantes.[Nome do(a) Visitante], Cad_visitantes.[Número do Prontuário do Detento(a)], Cad_visitantes.[Nome do(a) Detento(a)], Cad_visitantes.Inativo
    FROM Cad_visitantes
    WHERE (((Cad_visitantes.Inativo)=No));
    Desde já agradeço a atenção dos amigos,
    Um Grande Abraço
    André


    Boa Noite Pessoal, será que é um caso sem solução. Estou tentando uma maneira de fazer e não estou conseguindo. Agradeço se algum amigo puder me dar uma idéia.
    Anexos
    [Resolvido]Consulta com DateAdd AttachmentAndre_RltResumo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (155 Kb) Baixado 15 vez(es)
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Consulta com DateAdd Empty Re: [Resolvido]Consulta com DateAdd

    Mensagem  Leandro 2/7/2012, 15:14

    Veja:

    http://www.4shared.com/zip/SCYno4MS/Andre_RltResumo.html

    Dê uma olhada na consulta:

    ConsTesteLuis

    Está com o critério >=15 mas se quiser pode alterar para 15.

    Está sendo multiplicado por -1 para transformar em valor positivo.

    avatar
    Luís André Ramos
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Consulta com DateAdd Empty Ainda não consegui resolver este problema

    Mensagem  Luís André Ramos 2/7/2012, 15:51

    Bom dia Leandro, obrigado pela ajuda, mas o que eu preciso é que a partir da data informada seja criado uma agenda futura com as datas com intervalo de 15 dias entre uma e outra. Pensei num botão onde abriria um formulário para indicar a data inicial e final do relatório e ao abrir o relatório, seriam apresentados apenas os registros que fazem parte do intervalo de datas. Por exemplo: na sexta feira quero deixar impresso o relatório dos que tem direito a visita no sábado e no domingo. Não sei se estou me fazendo entender, já estou dando nó nos miolos e não tem jeito de resolver.

    Um grande Abraço.

    André
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Consulta com DateAdd Empty Re: [Resolvido]Consulta com DateAdd

    Mensagem  Leandro 2/7/2012, 16:00

    Mude aquele critério que coloquei na consulta e em vez de ter o campo [DataVisita] coloque: [Informe a data] Assim ele vai te perguntar qual data você quer verificar, se quiser um intervalo de datas escreva:

    Entre[Digite a data Início]E[Digite a data Fim]

    avatar
    Luís André Ramos
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Consulta com DateAdd Empty Re: [Resolvido]Consulta com DateAdd

    Mensagem  Luís André Ramos 2/7/2012, 16:33

    Leandro, para filtrar o periodo eu até ja fiz um formulário que tem dois objetos não acoplados onde informo a data de inicio e data de fim e ao clicar em OK abre o relatório com base na consulta. O problema é que não sei como fazer essa progressão de datas.
    exemplo:
    Pessoa 1 - primeira visita=31/05/2012 - dataVisita2=15/06/2012 - DataVisita3=30/06/2012...
    Pessoa 2 - primeira visita=16/05/2012 - dataVisita2=31/05/2012 - DataVisita3=15/06/2012...
    Pessoa 3 - primeira visita=17/05/2012 - dataVisita2=01/06/2012 - DataVisita3=16/06/2012...
    e assim por diante...

    Caso selecione como data inicial=31/05/2012 e data final=01/06/2012, no relatório queria que retornassem apenas esses tres registros ref. às pessoas 1 e 2 do dia 31/05/2012 e a pessoa 3 do dia 01/06/2012.

    Caso selecione como data inicial=01/06/2012 e data final=30/06/2012, no relatório queria que retornassem:
    Pessoa 1 - 2 vezes ref. aos dias 15/06/2012 e 30/06/2012
    Pessoa 2 - 1 vez ref. ao dia 15/06/2012
    Pessoa 3 - 2 vezes ref aos dias 01/06/2012 e 16/06/2012

    Att.
    André

    avatar
    Luís André Ramos
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Consulta com DateAdd Empty Re: [Resolvido]Consulta com DateAdd

    Mensagem  Luís André Ramos 7/7/2012, 21:48

    Boa tarde Pessoal,ainda não consegui fazer funcionar esta consulta. Agradeço se alguém puder ajudar com alguma idéia.
    Att.
    André

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Consulta com DateAdd Empty Re: [Resolvido]Consulta com DateAdd

    Mensagem  Alexandre Neves 7/7/2012, 22:38

    Boa noite, Luís

    Não entendi a explicação dada:

    exemplo:
    Pessoa 1 - primeira visita=31/05/2012 - dataVisita2=15/06/2012 - DataVisita3=30/06/2012...
    Pessoa 2 - primeira visita=16/05/2012 - dataVisita2=31/05/2012 - DataVisita3=15/06/2012...
    Pessoa 3 - primeira visita=17/05/2012 - dataVisita2=01/06/2012 - DataVisita3=16/06/2012...
    e assim por diante...

    Caso selecione como data inicial=31/05/2012 e data final=01/06/2012, no relatório queria que retornassem apenas esses tres registros ref. às pessoas 1 e 2 do dia 31/05/2012 e a pessoa 3 do dia 01/06/2012.

    Caso selecione como data inicial=01/06/2012 e data final=30/06/2012, no relatório queria que retornassem:
    Pessoa 1 - 2 vezes ref. aos dias 15/06/2012 e 30/06/2012
    Pessoa 2 - 1 vez ref. ao dia 15/06/2012
    Pessoa 3 - 2 vezes ref aos dias 01/06/2012 e 16/06/2012
    avatar
    Luís André Ramos
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Consulta com DateAdd Empty Re: [Resolvido]Consulta com DateAdd

    Mensagem  Luís André Ramos 7/7/2012, 22:59

    Boa noite Alexandre,
    Não tenho muito conhecimento sobre o assunto e estou aventurando. Criei uma consulta que é base para um relatório.
    Não estou conseguindo fazer com que a partir da data informada no Formulário de cadastro, no campo [PrimeiraVisita] seja adicionado 15 dias de forma sequencial, como se fosse uma progressão, 15, 30, 45, 60,...
    E ao clicar em um botão para visualizar o relatório informaria num outro formulário [FrmPeriodo] a data de inicio e de fim do relatório.
    Caso essas datas tiverem um intervalo de 45 dias, o relatório apresentaria os registros que estão dentro deste intervalo, com a repetição dos campos.
    Fiz funcionar, mas apenas para 15 dias com o DateAdd, mas dai aparecia só as datas com + 15 dias e o que eu preciso é que apareçam as datas da primeira visita e as posteriores que serão criadas conforme o periodo informado em DataInicio e DataFim.
    O Relatório ficaria mais ou menos assim:(DataInicio=01/06/2012 e DataFim=30/06/2012)
    Visitas do dia 01/06/2012
    Visitante 1
    Visitante 2
    Visitante 3
    Visitante 4
    Visitas do dia 02/06/2012
    Visitante 5
    Visitante 6
    Visitas do dia 16/06/2012
    Visitante 1
    Visitante 2
    Visitante 3
    Visitante 4
    Visitas do dia 17/06/2012
    Visitante 5
    Visitante 6

    Vou enviar o arquivo com algumas alterações que fiz, acho que fica mais facil visualizar o que eu preciso.
    Anexos
    [Resolvido]Consulta com DateAdd AttachmentAndre_RltResumo (2).zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (188 Kb) Baixado 4 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Consulta com DateAdd Empty Re: [Resolvido]Consulta com DateAdd

    Mensagem  Alexandre Neves 8/7/2012, 15:54

    Boa tarde, Luís
    Tem de ir lendo os assuntos tratados no fórum, de forma a aprender as melhores técnicas e tirar proveito das dúvidas resolvidas
    Melhore a nomenclatura dos campos da tabela e dos controlos do formulário
    Preparei-lhe o essencial, já que não justifica ter de lhe alterar quase toda a bd.
    Anexos
    [Resolvido]Consulta com DateAdd AttachmentAndre_RltResumo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (256 Kb) Baixado 41 vez(es)
    avatar
    Luís André Ramos
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Consulta com DateAdd Empty Re: [Resolvido]Consulta com DateAdd

    Mensagem  Luís André Ramos 8/7/2012, 16:16

    Muitíssimo Obrigado Alexandre. Vou seguir as tuas dicas. Ficou perfeito.
    Um Grande Abraço
    Luís André Ramos

    Com as alterações que fiz nos nomes dos campos,seguindo as dicas do Mestre Alexandre Neves, o código no formulário que informa o período ficou assim:
    Option Compare Database
    Option Explicit
    'Este Código foi uma colaboração do Sr. Alexandre Neves, do Fórum MaximoAccess.

    Private Sub CmdRelatorio_Click()
    Dim dtData As Date, Rst As DAO.Recordset
    If IsNull(TxtDataInicio) Or IsNull(TxtDataFim) Then
    MsgBox "As datas inicial e final têm de ser preenchidas."
    ElseIf TxtDataInicio > TxtDataFim Then
    MsgBox "A data de inicial tem de ser anterior à data final."
    Else
    CurrentDb.Execute "DELETE * FROM tdfVisitas;"
    For dtData = TxtDataInicio To TxtDataFim
    Set Rst = CurrentDb.OpenRecordset("SELECT Nipen, NomeVisitante, Parentesco, NipenDetento, NomeDetento FROM Cad_Visitantes WHERE Inativo=False AND Multiplo15(DateDiff('d',PrimeiraVisita,#" & Format(dtData, "mm-dd-yyyy") & "#)) ORDER BY ContadorAccess;")
    Do While Not Rst.EOF
    CurrentDb.Execute "INSERT INTO TdfVisitas(Nipen, NomeVisitante, Parentesco, NipenDetento, NomeDetento, DataVisita) VALUES ('" & Rst("Nipen") & "','" & Rst("NomeVisitante") & "','" & Rst("Parentesco") & "','" & Rst("NipenDetento") & "','" & Rst("NomeDetento") & "',#" & Format(dtData, "mm-dd-yyyy") & "#);"
    Rst.MoveNext
    Loop
    Next
    DoCmd.OpenReport "Visitas", acViewPreview
    DoCmd.Close acForm, "FrmPeriodo"

    End If
    End Sub

    E no módulo, assim:
    Option Compare Database
    Option Explicit

    Function Multiplo15(intValor As Integer) As Boolean
    If intValor / 15 = Int(intValor / 15) Then Multiplo15 = True Else Multiplo15 = False
    End Function

    Está funcionando bem como eu precisava, mais uma vez muito obrigado pela grande ajuda.

    Um Grande Abraço,

    Conteúdo patrocinado


    [Resolvido]Consulta com DateAdd Empty Re: [Resolvido]Consulta com DateAdd

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 07:34