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]Dlookup (Comparação)

    APJesus
    APJesus
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 367
    Registrado : 21/09/2010

    [Resolvido]Dlookup (Comparação) Empty Dlookup (Comparação)

    Mensagem  APJesus 16/7/2012, 17:42

    Boas Feras...
    Gostaria de saber como faço para comparar horários de eventos por exemplo:

    Tenho uma tabela chamada Tab_Reserva e nesta tabela tenho os campos
    Data_Evento (Formato Data geral)
    Hora_inicio(Formato hora abreviada)
    Hora_final (Formato hora abreviada)
    Tipo_reserva ( Este chave estrangeira da Tab_Lazer- Ex: Churrasqueira, salão de festas, etc...)
    E queria que no formulario Frm_Reserva após atualizar o campo Tipo_Reserva que é o último deste, emitisse um aviso caso o período da hora inicial até a hora final daquela data do evento para o tipo de reserva já estaria ocupado caso fosse com os parâmetros iguais.

    Pensei uma função Dlookup e And, mas não vejo como fazer. Alguém pode me dar uma força?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  Alexandre Neves 16/7/2012, 18:30

    Boa tarde, APJesus

    Seria melhor trabalhar com dados concrectos, mas vamos tentar
    Supondo que nenhum registo abrange mais que uma data:
    Id Dcount("*","TabelaReservas","Data_Evento=#" & TxtDataEvento & "# and ((Hora_inicio<=#" & TxtHoraInicial & "# and Hora_final>=#" & txtHoraInicial &#) or (Hora_inicio<=#" & TxtHoraFinal & "# and Hora_final>=#" & txtHoraFinal &#))")>0 then 'existe incompatibilidade de agendamento
    APJesus
    APJesus
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 367
    Registrado : 21/09/2010

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  APJesus 16/7/2012, 21:02

    Amigão, desculpa a demora, mas não deu certo ainda... Eu não colei pois não estou acessando do meu pc, então digitei, mas acho que devo ter digitado algo errado.

    O erro é o seguinte: Erro de compilação. (No fechamento do 2º parêntese - #) vou verificar....

    mais uma dúvida no início do código é Id DCount mesmo?

    No código TxtHoraInicial é a cx de texto no Form e a Hora_Inicio a tabela certo?

    Abraços...



    Última edição por APJesus em 16/7/2012, 21:03, editado 1 vez(es) (Motivo da edição : Complemento do código)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  Alexandre Neves 16/7/2012, 22:02

    Será
    If Dcount("*","SuaTabela","Data_Evento=#" & TxtDataEvento & "# and ((Hora_inicio<=#" & TxtHoraInicial & "# and Hora_final>=#" & TxtHoraInicial & "#) or (Hora_inicio<=#" & TxtHoraFinal & "# and Hora_final>=#" & txtHoraFinal & "#))")>0 then 'existe incompatibilidade de agendamento

    Pelas regras de boa nomeação de controlos, nomeie os controlos com prefixo que informe o tipo de controlo (Txt-caixa de texto, Rtl-rótulo, Cxc-Caixa de combinação, etc.) seguido de nome que ilustre o que faz: entende melhor Texto25 ou TxtHoraSaida?
    APJesus
    APJesus
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 367
    Registrado : 21/09/2010

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  APJesus 17/7/2012, 00:38

    Alexandre, Boas! Desculpe o horário pois aí em Portugal já é tarde...

    Funcionou quase na perfeicão e agradeço muito pela dedicação e ajuda. aconteceu o seguinte:

    Se agendar um evento dia 18/07/2012 de:08:00 às 11:00hs para Churrasqueira e agendar no mesmo dia para este intervalo e tipo de lazer fica perfeito (Show), mas para outro tipo de lazer como (Salão de festas) na mesma data e horário ou intervalo acima ele não aceita/recusa. e na verdade poderia ter duas reservas 1 para Churrasqueira e 1 para salão de festas no mesmo dia e horário, etc...

    Muito fera....

    será que é possível?

    Mais uma vez agradeço antecipadamente...


    Última edição por APJesus em 17/7/2012, 00:50, editado 1 vez(es) (Motivo da edição : Complemento do tópico)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  Alexandre Neves 17/7/2012, 10:06

    Bom dia, APJesus

    Então? não deu um empurrãozinho?
    If Dcount("*","SuaTabela","Data_Evento=#" & TxtDataEvento & "# and ((Hora_inicio<=#" & TxtHoraInicial & "# and Hora_final>=#" & TxtHoraInicial & "#) or (Hora_inicio<=#" & TxtHoraFinal & "# and Hora_final>=#" & txtHoraFinal & "#)) and TipoAgendamento=" & TxtTipoAgendamento)>0 then 'existe incompatibilidade de agendamento
    APJesus
    APJesus
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 367
    Registrado : 21/09/2010

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  APJesus 17/7/2012, 17:35

    Empurrãozinho???rsrsrsr você mastigou e só faltou eu engolir.rsrsr
    Amigão, mais uma vez bateu na trave...

    Continua rejeitando... Lembrando que o campo para escolher a área de lazer é uma CombBox proveniente de chave estrangeira. pode ser isso?. Se não conseguir vou tentando adaptar..
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  Alexandre Neves 17/7/2012, 17:42

    APJesus
    Se o campo for número tem de funcionar.
    Não se esqueça que todos os controlos que entram na função já têm que estar preenchidos no form
    APJesus
    APJesus
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 367
    Registrado : 21/09/2010

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  APJesus 17/7/2012, 17:46

    O campo é texto...
    todos campos preenchidos...
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  Alexandre Neves 17/7/2012, 17:54

    O normal seria número mas, mesmo assim, deveria saber adaptar!
    If Dcount("*","SuaTabela","Data_Evento=#" & TxtDataEvento & "# and ((Hora_inicio<=#" & TxtHoraInicial & "# and Hora_final>=#" & TxtHoraInicial & "#) or (Hora_inicio<=#" & TxtHoraFinal & "# and Hora_final>=#" & txtHoraFinal & "#)) and TipoAgendamento='" & TxtTipoAgendamento &"'")>0 then 'existe incompatibilidade de agendamento
    APJesus
    APJesus
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 367
    Registrado : 21/09/2010

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  APJesus 17/7/2012, 21:07

    Esse nome não vai sair da minha cabeça!!!!! Alexandre Neves

    Muito Obrigado... Fera, Fera, Fera...

    100% Resolvido e concluído. Adoro o Fórum e as pessoas que nela estão dispostas a ajudar o próximo.

    Mais uma vez meus agradecimentos...
    wsenna
    wsenna
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    [Resolvido]Dlookup (Comparação) Empty Ah tristeza !!!

    Mensagem  wsenna 4/12/2012, 16:49

    Caríssimos amigos, boa tarde.

    Fiquei muito interessado neste tópico e resolvi criar um BD com os campos sugeridos no entanto após atualizar a minha caixa de combinação o sistema não impediu que um mesmo evento fosse inserido na data e horários programados do evento anterior.
    Já analisei o código diversas vezes e não compreendo o porque de não funcionar comigo.

    Abraços, WSenna
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  JPaulo 4/12/2012, 17:10

    Grande Rei, tudo joia ?

    Só vendo o código mesmo, ou parte do banco, provavelmente a diferença estará na formatação.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Dlookup (Comparação) Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Dlookup (Comparação) Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Dlookup (Comparação) Folder_announce_new Instruções SQL como utilizar...
    wsenna
    wsenna
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  wsenna 4/12/2012, 23:16

    Grande Mestre JPaulo, boa noite.

    Heis o código:

    Private Sub cboTipoEvento_AfterUpdate()
    If DCount("*", "tblAgenda", "DtaEvento=#" & txtDtaEvento & "# and ((HoraIni<=#" & txtHoraIni & "# and HoraFim>=#" & txtHoraIni & "#) or (HoraIni<=#" & txtHoraFim & "# and HoraFim>=#" & txtHoraFim & "#)) and TipoEvento='" & cboTipoEvento & "'") >= 1 Then 'existe incompatibilidade de agendamento
    MsgBox "Atenção:" & Chr(13) & "Existe incompatibilidade de horários para esta data e tipo de evento. ", vbCritical, " InfoBasic Smart System"
    DoCmd.CancelEvent
    Else
    MsgBox "Evento agendado com sucesso. ", vbInformation, " InfoBasic Smart System"
    End If
    End Sub

    Observe que na tabela tblAgenda possuo os campos IdEvento (Numeração automática + Chave primária), DtaEvento (Data/Hora - Data abreviada), HoraIni (Data/Hora - Hora abreviada), HoraFim (Data/Hora - Hora abreviada) e uma combox do tipo lista de valores denominada cboTipoEvento.

    Daí ...

    Um grande abraço e um beijo em vosso coração.

    WSenna
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  JPaulo 5/12/2012, 09:53

    Bom dia Grande Rei;

    O problema está na formatação da data, neste caso o VBA necessita da formatação para data americana;


    Testei aqui e funfou direito, embora eu seja da opinião que o evento mais adequado seria o BeforeUpdate;


    If Nz(DCount("*", "tblAgenda", "DtaEvento=#" & Format(Me.txtDtaEvento, "mm-dd-yyyy") & "# and ((HoraIni<=#" & txtHoraIni & "# and HoraFim>=#" & txtHoraIni & "#) or (HoraIni<=#" & txtHoraFim & "# and HoraFim>=#" & txtHoraFim & "#)) and TipoEvento='" & cboTipoEvento & "'"), 0) >= 1 Then 'existe incompatibilidade de agendamento
    MsgBox "Atenção:" & Chr(13) & "Existe incompatibilidade de horários para esta data e tipo de evento. ", vbCritical, " InfoBasic Smart System"
    DoCmd.CancelEvent
    Else
    MsgBox "Evento agendado com sucesso. ", vbInformation, " InfoBasic Smart System"
    End If



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Dlookup (Comparação) Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Dlookup (Comparação) Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Dlookup (Comparação) Folder_announce_new Instruções SQL como utilizar...
    wsenna
    wsenna
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  wsenna 5/12/2012, 12:14

    Grand Mestre JPaulo, bom dia.

    Caraca Meu !!! Não havia prestado atenção pra esse detalhe...
    Nada passa desapercebido pelo olhar penetrante do Águia não é mesmo?
    Valew Mestre.

    Abraços, WSenna
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  JPaulo 5/12/2012, 16:12

    Valew, abraço grande amigo.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Dlookup (Comparação) Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Dlookup (Comparação) Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Dlookup (Comparação) Folder_announce_new Instruções SQL como utilizar...
    wsenna
    wsenna
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  wsenna 5/12/2012, 20:45

    Grande JPaulo, boa noite.

    Experimentando o BD verifiquei que caso se escolha um horário de início anterior ao horário de início já agendado e o Horário de Término maior que o Horário de Início já agendado o sistema aceitava esse novo registro. Daí fiz mais algumas modificações e a "coisa" funfou bem legal.

    Veja as alterações grifadas em vermelho:

    Private Sub cboTipoEvento_BeforeUpdate(Cancel As Integer)
    If Nz(DCount("*", "tblAgenda", "DtaEvento=#" & Format(Me.txtDtaEvento, "mm-dd-yyyy") & "# and ((HoraIni>=#" & txtHoraIni & _
    "# and HoraFim>=#" & txtHoraFim & "#)
    or (HoraIni<=#" & txtHoraIni & "# and HoraFim>=#" & txtHoraIni & "#) or (HoraIni<=#" & txtHoraFim & _
    "# and HoraFim>=#" & txtHoraIni & "#)) and TipoEvento='" & cboTipoEvento & "'"), 0) >= 1 Then 'existe incompatibilidade de agendamento
    MsgBox "Atenção:" & Chr(13) & "Existe incompatibilidade de horários para esta data e tipo de evento. ", vbCritical, " InfoBasic Smart System"
    DoCmd.CancelEvent
    Else
    Me.VlrTaxa = Me.cboTipoEvento.Column(1)
    MsgBox "Evento agendado com sucesso. ", vbInformation, " InfoBasic Smart System"
    End If
    End Sub

    Abraços, WSenna

    Bacabal gosta desta mensagem


    Conteúdo patrocinado


    [Resolvido]Dlookup (Comparação) Empty Re: [Resolvido]Dlookup (Comparação)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 9/5/2024, 13:53