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


    [Resolvido]Horários Duplicados

    avatar
    Curty123
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 19
    Registrado : 02/01/2019

    [Resolvido]Horários Duplicados Empty [Resolvido]Horários Duplicados

    Mensagem  Curty123 em 9/6/2019, 00:28

    Galera, boa noite!!


    Estou precisando de um apoio.


    O sistema é referente a agendamentos de hórarios de determinados veículos e estou querendo restringir de não realizem agendamento no período em que outro horário foi marcado.

    Consegui fazer uma restrição, porém não está 100%.

    Ex: Cadastrei uma programação Início: 07:00:00 às  Fim:17:00:00
    Se eu tentar cadastrar de Início: 07:00:00 à qualquer outra hora até 17:00:00, o sistema não deixa.
    Se eu tentar cadastrar com final 17:00:00, o sistema não deixa.

    Porém se eu cadastrar de 08:00:00 às 16:00:00, o sistema permite.


    Queria algum código ou maneira de bloquear de fato aquele tempo completo que foi agendado.

    Obs: JÁ PESQUISEI NO FORUM E NÃO ACHEI ALGO QUE CONSEGUI TRADUZIR AO MEU SISTEMA.

    Segue em anexo, exemplo do banco.
    Anexos
    [Resolvido]Horários Duplicados AttachmentVerificarAgendamento_r1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (29 Kb) Baixado 7 vez(es)
    crysostomo
    crysostomo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 785
    Registrado : 23/01/2018

    [Resolvido]Horários Duplicados Empty Re: [Resolvido]Horários Duplicados

    Mensagem  crysostomo em 9/6/2019, 15:40



    .................................................................................
    Uma mão ajuda a outra.
    O medo não é morrer, o medo é se alguém está morto dentro de você, assim como o fracassado é aquele que nem tentou
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Horários Duplicados Empty Re: [Resolvido]Horários Duplicados

    Mensagem  Alexandre Neves em 9/6/2019, 16:07

    Boa tarde,
    Não consegui introduzir dados que deiam erro.
    Exemplifique


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

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 652
    Registrado : 22/11/2016

    [Resolvido]Horários Duplicados Empty Re: [Resolvido]Horários Duplicados

    Mensagem  IvanJr. em 9/6/2019, 16:41

    Remova o código já existente e use o código a seguir no evento Antes de Atualizar do objeto Formulário
    Código:
    Dim objRS As DAO.Recordset
        Dim dtDataInicio As Date
        Dim dtDataFim As Date
        Dim dtTempDataInicio As Date
        Dim dtTempDataFim As Date
        Dim booTemConflito As Boolean
       
        If Nz(Me!DataEntrada) <> "" And Nz(Me!HoraInicio) <> "" And Nz(Me!HoraFim) <> "" Then
       
            dtDataInicio = Me!DataEntrada & " " & Me!HoraInicio
            dtDataFim = Me!DataEntrada & " " & Me!HoraFim
           
            Set objRS = Me.RecordsetClone
           
            If objRS.RecordCount > 0 Then
           
                Call objRS.MoveLast
           
                Do
           
                    dtTempDataInicio = objRS!DataEntrada.Value & " " & objRS!HoraInicio.Value
                    dtTempDataFim = objRS!DataEntrada.Value & " " & objRS!HoraFim.Value
                   
                    If Eval("#" & dtDataInicio & "# between #" & dtTempDataInicio & "# and #" & dtTempDataFim & "#") Or _
                      Eval("#" & dtDataFim & "# between #" & dtTempDataInicio & "# and #" & dtTempDataFim & "#") Or _
                      Eval("#" & dtTempDataInicio & "# between #" & dtDataInicio & "# and #" & dtDataFim & "#") Or _
                      Eval("#" & dtTempDataFim & "# between #" & dtDataInicio & "# and #" & dtDataFim & "#") Then
                     
                      booTemConflito = True
                      Exit Do
                     
                    End If
                   
                    Call objRS.MovePrevious
               
                Loop Until objRS.BOF
           
            End If
           
            Set objRS = Nothing

            If booTemConflito Then
                Call MsgBox("Este horário está colidindo com o horário já agendado...")
                Cancel = True
                Exit Sub
            End If
           
        Else
            Call MsgBox("Preencha todos os campos...")
            Cancel = True
            Exit Sub
        End If


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    avatar
    renpv
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 155
    Registrado : 12/01/2015

    [Resolvido]Horários Duplicados Empty Veja se atende

    Mensagem  renpv em 9/6/2019, 18:05

    Prezado, eu realizei uma pesquisa e pelo pude constatar a melhor maneira de resolver esse seu problema é usando timestamp. E para fazer isso a gente deve  gravar as datas como Número/Duplo.

    No exemplo que fiz (segue abaixo) usei apenas 4 campos (ID, Veiculo, Inicio, Fim) onde :
    - ID dispensa explicação
    - Veículo seria um campo no formato texto curto com mascara de entrada para aceitar apenas o formato das placas
    - Início seria um campo Numérico para guardar a data e hora do início do agendamento e
    - Fim teria a mesma configuração do campo início

    No formulário de entrada de dados segui o padrão mais fácil para o usuário (Veículo, Data, Início e Fim). Somente ao clicar em gravar que o sistema realiza todas as validações de conflito entre agendamentos ou data final inferior a data inicial, etc.

    Enfim, estou disponibilizando um exemplo aqui. Veja se atende.

    Espero ter ajudado.
    Anexos
    [Resolvido]Horários Duplicados AttachmentVerificarAgendamento.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (62 Kb) Baixado 7 vez(es)
    avatar
    Curty123
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 19
    Registrado : 02/01/2019

    [Resolvido]Horários Duplicados Empty Obrigado pela ajuda.

    Mensagem  Curty123 em 11/6/2019, 15:07

    renpv, muito obrigado, consegui adptar ao meu sistema.

    Aos demais, Obrigado pela ajuda também.

    avatar
    renpv
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 155
    Registrado : 12/01/2015

    [Resolvido]Horários Duplicados Empty Re: [Resolvido]Horários Duplicados

    Mensagem  renpv em 11/6/2019, 19:20

    Massa. Sempre que precisar a comunidade está à disposição. Bons estudos.
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 652
    Registrado : 22/11/2016

    [Resolvido]Horários Duplicados Empty Re: [Resolvido]Horários Duplicados

    Mensagem  IvanJr. em 12/6/2019, 02:14

    O fórum agradece o retorno. Sucesso.


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.

    Conteúdo patrocinado

    [Resolvido]Horários Duplicados Empty Re: [Resolvido]Horários Duplicados

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 18/7/2019, 16:47