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


4 participantes

    [Resolvido]Criticar intervalo de datas / horas

    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1098
    Registrado : 23/03/2010

    [Resolvido]Criticar intervalo de datas / horas Empty [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Finformática 21/10/2010, 23:44

    Grandes Mestres

    Estou com dificuldades em uma crítica, procurei ajuda na web e até agora nada. Encontrei este forum, gostei e estou aqui pedir ajuda.

    Tenho um sisteminha de AGENDA em um cliente que contém os campos DATA e HORA como chaves e outros campos simples. Acontece que o cliente pediu para colocar um campo HORAFIM do compromisso e este campo pode ser vazio. Como faço para criticar no momento de agendar novo compromisso se o mesmo não está dentro de um outro intervalo de horas HORA (início) e HORAFIM (término) de outro compromisso. Sei que se colocar mesma DATA e HORA não passa por serem chaves mas colocando 1 minuto a mais na HORA passa, mas pode está entre um intervalo de INÍCIO e FIM ou até começando antes e terminando depois. Alguém pode me ajudar? Já fiz várias tentativas e termina furando e o cliente é chato pacas.

    Conforme já citei o campo HORAFINAL não é obrigatório, mas se for preenchido teremos que respeitar o intervalo de horas para não cadastrar nada dentro, não deixar um intervalo já existente dentro de outro que estamos cadastrando no momento ou intervalos que peguem parte de outros existentes.

    Vou exemplificar para ver se sou mais claro.

    Suponhamos a tabela de AGENDA (campo DATA e DATAINICIAL são chaves primárias):
    DATA ............ HORAINICIAL.....HORAFINAL ...............Outros campos
    15/10/10 .......... 12:00 ..........14:00
    15/10/10 .......... 14:01
    15/10/10 ...........15:00 ..........15:40
    15/10/10 .......... 21:00 ..........21:30
    15/10/10 .......... 22:00

    Digamos que o usuário queira cadastrar:
    15/10/10 ............12:30 ............. Vai aceitar e está dentro do intervalo 12:00 às 14:00 e a pessoa já tem compromisso.

    Se o usuário quizer cadastrar:
    15/10/10 ..........14:30 ..........16:00 ....... Vai aceitar e o intervalo 15:00 às 15:40 vai ficar dentro deste intervalo que o usuário quer cadastar.

    Se o usário quizer cadastar:
    15/10/10..........21:15 ..........23:00 ....... Vai aceitar e vai pegar parte do intervalo 21:00 às 21:30 e mais o compromisso de 22:00.

    Esperando ter sido mais claro, pergunto: Como posso validar esses buracos? Tem alguma sugestão, mesmo que seja alterando chaves da tabela ou mesmo criando outra tabela para ficar relacionada a tabela AGENDA??

    Com MESTRES eu sei que obterei uma solução.

    Muito grato

    Grande abraço
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Alexandre Neves 22/10/2010, 19:42

    Boa noite, kinhosinfo

    Utilize esta função para validar a datahora

    Function DataLivre(DataInicial As Date, DataFinal As Date, DataAValidar As Date) As Boolean
    'devolve Sim se a DataAValidar está fora do intervalo entre as datas DataInicial e DataFinal
    'criado por Alexandre Neves
    'em 2010-10-22
    'para kinhosinfo
    'do fórum MaximoAccess
    If DataAValidar < DataInicial Or DataAValidar > DataFinal Then DataLivre = True Else DataLivre = False
    End Function

    Cumprimentos,
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1098
    Registrado : 23/03/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Finformática 22/10/2010, 23:18

    Grande Alexandre,

    Muito grato pelo seu interesse, no entanto não é bem essa a minha dificuldade, ou seja, o problema não é exatamente a data, o problema é a hora.
    Como exemplifiquei no tópico acima, tenho determinada data e registro um compromisso que tem início 11:00hs e término 13:00hs, outro iniciando 15:00hs e término 15:15, outro que inicia 08:00hs e não tem hora de término (que estou considerando o final como sendo a mesma hora). Depois de 10, 11 ou 12 compromissos como critico qual o intervalo que tem espaço para registrar um outro compromisso.
    Tomando como exemplo os intervalos que citei agora e o usuário quer cadastrar um compromisso que inicia 14:00hs e termina 16:00hs, como faço para criticar se este intervalo está disponível??
    Espero ter sido mais claro e lhe fico muito grato pelo seu interesse com o meu problema.

    Abração
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  vieirasoft 23/10/2010, 00:55

    Pelo que entendi você só necessita saber as horas que estão vagas, certo?

    Então na consulta e no campo horas, digite o seguinte critério É nulo. Assim a consulta retorna só a data com as horas em branco, uma vez que nada foi assinalado para esse intervalo.

    Teste e retorne p.f.
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1098
    Registrado : 23/03/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Finformática 23/10/2010, 02:21

    Grande Mestre,

    É o seguinte:

    Isto é um sisteminha de AGENDA pessoal que possui, entre outros objetos, um pequeno formulário por onde o usuário alimenta o sistema. Este formulário possui os campos: DATA, HORA_INÍCIO, HORA_FIM, DESC_COMPROMISSO e LOCAL (este formulário vem de uma consulta, que vem de uma tabela com os mesmos campos). É aí que o usuário informa uma DATA e todos os compromissos da mesma. É aí o problema: coloco determinada data, hora de início e fim, outra hora de início e fim, e vai cadastrando. Como critico os intervalos de datas já cadastradas para poder cadastrar outras. Os intervalos não podem coincidir, nenhuma hora de início pode ser igual (neste caso não é problema por DATA e HORA_INÍCIO são chaves primárias), não pode começar um outro compromisso em um horário que já faz parte de outro. Como critico ao colocar a DATA, DATA_INÍCIO e DATA_FIM se este intervalo está livre.
    Muito grato pelo interesse em me ajudar, espero ter sido mais claro, um grande abraço.
    avatar
    Convidad
    Convidado


    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Convidad 23/10/2010, 10:22


    esperimente assim

    If DCount("*", "AGENDA", "DATA=#" & Me!DATA & "# And HORA_INÍCIO=#" & Me!HORA_INÍCIO & "#") > 0 Then
    MsgBox "Periodo indisponivel, marque noutra hora !!!", vbExclamation, "Aviso"


    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  vieirasoft 23/10/2010, 11:03

    Bom Dia Amigo

    Nem Grande, nem Mestre (rsrsrs), sou seu colega apenas.

    Tente testar assim:

    If Not IsNull(HoraInicio) Or Me.HoraInicio = "" Or Not IsNull(Me.HoraFim) Or Me.HoraFim = "" Then
    Call MsgBox("A data em questão está livre", vbInformation, "Preencher")
    Else
    Coloque aqui uma instrução
    End If
    avatar
    Convidad
    Convidado


    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Convidad 23/10/2010, 11:22

    Caraca Vieira, assim está a validar apenas no form, e tem de validar se já tá ocupado no cadastro da tabela.

    Como eu fiz lá em cima valida na tabela.

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  vieirasoft 23/10/2010, 11:42

    Ói Raquel
    Tudo bem,sem tirar a sua razão pergunto; mas os dados vem de onde? E ele vai trabalhar no form ou na tabela? Se o campo estiver está em branco na tabela ele pode verificar através do form, certo! Espero é que ele não esteja a sobrepor agendamentos? Assim nada vai funcionar.

    Abraço
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Alexandre Neves 23/10/2010, 11:49

    Bom dia, kinhosinfo

    Carregue a bd para se analisar em concreto.

    Cumprimentos,
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1098
    Registrado : 23/03/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Finformática 23/10/2010, 16:28

    Grandes Mestres,

    Estou vendo que agora vai.
    Estou mandando o BD. Pressione o SHIFT para abrir (está fixo com série do HD).
    O nome do formulário é AGENDA COMPROMISSOS. Está cheio de tentativas feitas por mim, mas ainda está furado.

    Abraços


    Última edição por kinhosinfo em 23/10/2010, 16:49, editado 1 vez(es)
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1098
    Registrado : 23/03/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Finformática 23/10/2010, 16:38

    Estou tentando anexar e não estou visualizando o resultado.
    Vou em PROCURAR, localizo e ENVIAR CONSULTA. Demora alguns segundos, atualiza a página e onde está o anexo. É por aqui mesmo????

    Muito grato
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1098
    Registrado : 23/03/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Finformática 23/10/2010, 16:44

    Agora está aparecendo. Mandei agora como ZIP.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Alexandre Neves 23/10/2010, 19:19

    Novamente, kinhosinfo

    Atenção aos nomes reservados do Access.
    Não nomeie controles com o mesmo nome de campos
    Evite nomes de campo acentuados

    Pelo que vi, aconselho a introduzir sempre hora de fim, mesmo que seja igual à de início

    Coloque

    Private Sub HoraFim_Enter()
    Me.HoraFim = Me.HORA
    End Sub

    Private Sub HoraFim_Exit(Cancel As Integer)
    If Not (IsNull(HoraFim) Or IsNull(HORA)) Then
    If DCount("*", "Agenda", "Data=#" & Format(Me.DATA, "mm-dd-yyyy") & "# and " _
    & "((Hora>=#" & Me.HORA & "# and Hora <=#" & Me.HoraFim & "#) or " _
    & "(HoraFim>=#" & Me.HORA & "# and HoraFim <=#" & Me.HoraFim & "#) or " _
    & "(Hora<=#" & Me.HORA & "# and HoraFim >=#" & Me.HORA & "#) or " _
    & "(Hora<=#" & Me.HoraFim & "# and HoraFim>#" & Me.HoraFim & "#))" _
    ) > 0 Then
    MsgBox "O horário pretendido não está disponível."
    DoCmd.CancelEvent
    End If
    End If
    End Sub
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1098
    Registrado : 23/03/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Finformática 24/10/2010, 10:14

    Caro Alexandre,

    A hora final vazia que fazes referência é de cadastros anteriores (antes do usuário pedir para acrescentar hora final).
    Onde é melhor colocar os códigos enviados ????

    Muito grato

    Abraços
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Alexandre Neves 24/10/2010, 11:51

    kinhosinfo

    Pensei que sabia...

    No acontecimento ao entrar de HoraFim
    Private Sub HoraFim_Enter()
    Me.HoraFim = Me.HORA
    End Sub

    No acontecimento Ao sair de HoraFim
    Private Sub HoraFim_Exit(Cancel As Integer)
    If Not (IsNull(HoraFim) Or IsNull(HORA)) Then
    If DCount("*", "Agenda", "Data=#" & Format(Me.DATA, "mm-dd-yyyy") & "# and " _
    & "((Hora>=#" & Me.HORA & "# and Hora <=#" & Me.HoraFim & "#) or " _
    & "(HoraFim>=#" & Me.HORA & "# and HoraFim <=#" & Me.HoraFim & "#) or " _
    & "(Hora<=#" & Me.HORA & "# and HoraFim >=#" & Me.HORA & "#) or " _
    & "(Hora<=#" & Me.HoraFim & "# and HoraFim>#" & Me.HoraFim & "#))" _
    ) > 0 Then
    MsgBox "O horário pretendido não está disponível."
    DoCmd.CancelEvent
    End If
    End If
    End Sub
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1098
    Registrado : 23/03/2010

    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Finformática 24/10/2010, 12:20

    Grande Alexandre,

    Fiz alguns ajustes e está funcionando tudo PERFEITO.

    MUITO OBRIGADO, MUITO OBRIGADO MESMO, GRANDE MESTRE.

    Um grande abraço
    avatar
    vertemati
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 25/10/2012

    [Resolvido]Criticar intervalo de datas / horas Empty Agradecimento

    Mensagem  vertemati 11/10/2013, 18:31

    bounce Estou desenvolvendo um bd para emissão de ordens de serviço e controle de horario de almoço de funcionarios e esse exemplo de "critica de intervalos" me salvou!!! muito obrigado a todos!

    Conteúdo patrocinado


    [Resolvido]Criticar intervalo de datas / horas Empty Re: [Resolvido]Criticar intervalo de datas / horas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 06:05