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


2 participantes

    [Resolvido]Agendamento com base em 3 campos

    MauricioMenezes
    MauricioMenezes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 13/03/2013

    [Resolvido]Agendamento com base em 3 campos Empty [Resolvido]Agendamento com base em 3 campos

    Mensagem  MauricioMenezes 16/1/2014, 23:47

    Prezados Senhores

    Estou tentando desenvolver um controle para agendar provas de alunos, da minha escola.
    Num  formulário  tenho 3 textbox: datap , hora_inicio e equipto.
    Considerações:  datap = dia/mês/ano; Hora_inicio = hora cheia; Qtde de equipamentos = 15 unidades.
    Restrição: Os agendamentos não podem ser superiores ao número de equipamentos(15);
    Cada equipamento não poderá ter mais do que um usuário no mesmo dia e no mesmo horário.
    Ex.:  Se já existir  Data: 10/01/2014 – Hora: 08:00 – Equipto: Maq 5, um novo registro com os mesmos dados não poderá ser aceito.

    Usando o código abaixo para as condições Datap e Hora_inicio, consegui sucesso parcial:

    Private Sub HORA_Inicio_BeforeUpdate(Cancel As Integer)
    If  
    DCount("DATAP", "[Agendamento_Prova]", "DATAP = Forms![Agendamento_Prova]!DATAP") >= 2 And
    DCount("HORA_Inicio", "[Agendamento_Prova]", "HORA_Inicio = Forms![Agendamento_Prova]!HORA_Inicio") >= 2 Then

    MsgBox "Excedeu o número permitido de escolhas!" & Chr(13) & "Verifique o Mapa.", vbCritical, " Administrador do Sistema!"
    Cancel = True
    Me.Undo
    Exit Sub
    End If
    End Sub

    No entanto, ao entrar com a terceira condição “ Equipto “, bloqueia tudo.
    Vide código abaixo:

    Private Sub Equipto_BeforeUpdate(Cancel As Integer)
    If
    DCount("DATAP", "[Agendamento_Prova]", "DATAP = Forms![Agendamento_Prova]!DATAP") >= 2  And
    DCount("HORA_Inicio", "[Agendamento_Prova]", "HORA_Inicio = Forms![Agendamento_Prova]!HORA_Inicio") >= 2  And
    DCount("Equipto", "[Agendamento_Prova]", "Equipto = Forms![Agendamento_Prova]!Equipto") >= 2 Then

    MsgBox "Excedeu o número permitido de escolhas!" & Chr(13) & "Verifique o Mapa.", vbCritical, " Administrador do Sistema! "
    Cancel = True
    Me.Undo
    Exit Sub
    End If
    End Sub

    Diante do exposto, como devo proceder? Onde estou errando?
    Desde já obrigado pela ajuda.
    Mauricio Menezes
    João Ricardo
    João Ricardo
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 534
    Registrado : 20/01/2013

    [Resolvido]Agendamento com base em 3 campos Empty Re: [Resolvido]Agendamento com base em 3 campos

    Mensagem  João Ricardo 17/1/2014, 15:52

    Maurício, bem vindo ao fórum!!

    Não entendo muito de VBA, mas a primeira condição está no campo HORA_inicio

    Código:
    Private Sub HORA_Inicio_BeforeUpdate(Cancel As Integer)

    E a segunda está no campo Equipto

    mas com as condições do primeiro campo
    Código:
    DCount("DATAP", "[Agendamento_Prova]", "DATAP = Forms![Agendamento_Prova]!DATAP") >= 2  And
    DCount("HORA_Inicio", "[Agendamento_Prova]", "HORA_Inicio = Forms![Agendamento_Prova]!HORA_Inicio") >= 2  And
    DCount("Equipto", "[Agendamento_Prova]", "Equipto = Forms![Agendamento_Prova]!Equipto") >= 2 Then

    É assim mesmo que tem de ser ou escrevi besteira?

    Felicidades
    MauricioMenezes
    MauricioMenezes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 13/03/2013

    [Resolvido]Agendamento com base em 3 campos Empty Re: [Resolvido]Agendamento com base em 3 campos

    Mensagem  MauricioMenezes 17/1/2014, 18:20

    Prezado João Ricardo. Boa Tarde!

    Muito obrigado por ter respondido.
    Bem, quanto ao seu questionamento, ao elaborar o formulário sequenciei  assim os textbox: DATAP, HORA_Inicio e Equipto.
    Quando testei a 1ª opção, entendi que deveria ser colocado no último textbox,  HORA_Incio, pois todos os dados já teriam sido digitados.
    Segui  a mesma linha de raciocínio quando fiz a 2ª opção, colocando no último textbox, desta feita, o Equipto.
    Na 1ª opção funcionou bem. Já na 2ª, travou tudo.
    Meus conhecimentos me levaram até aqui. Agora, não sei detectar o erro e prosseguir.
    Obrigado.
    Mauricio Menezes
    MauricioMenezes
    MauricioMenezes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 13/03/2013

    [Resolvido]Agendamento com base em 3 campos Empty Re: [Resolvido]Agendamento com base em 3 campos

    Mensagem  MauricioMenezes 21/1/2014, 15:53

    Prezados do Fórum

    Para não deixar aberto o tópico no qual apresentei a minha dificuldade em concluir o controle que estava criando, apresento abaixo a solução que encontrei depois de me debruçar sobre a questão, pesquisar e estudar um pouco mais. Quem ela sirva de base para outros na mesma condição.

    -> O que fiz foi criar uma consulta de nome CS_AgProva contendo tão somente os 3 campos DATAP, HORA_Inicio e Equipto, devidamente relacionados as respectivas textbox do formulário “Agendamento_Prova”.

    Por fim, substitui na função DCount o nome da tabela pelo nome da Consulta.
    Vejam como ficou o código:

    Private Sub Equipto_BeforeUpdate(Cancel As Integer)
    If
    DCount("DATAP", "[CS_AgProva]", "DATAP = Forms![Agendamento_Prova]!DATAP") >= 15 And _
    DCount("HORA_Inicio", "[CS_AgProva]", "HORA_Inicio = Forms![Agendamento_Prova]!HORA_Inicio") >= 15 And _
    DCount("Equipto", "[CS_AgProva]", "Equipto = Forms![Agendamento_Prova]!Equipto") >=15 Then

    MsgBox "Excedeu o número permitido de escolhas!" & Chr(13) & "Verifique o Mapa.", vbCritical, " Administrador do Sistema! "
    Cancel = True
    Me.Undo
    Exit Sub
    End If
    End Sub

    Fiz os teste preliminares e funcionou como desejava.
    Obrigado a todos.
    MauricioMenezes
    MauricioMenezes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 13/03/2013

    [Resolvido]Agendamento com base em 3 campos Empty Re: [Resolvido]Agendamento com base em 3 campos

    Mensagem  MauricioMenezes 21/1/2014, 17:44

    Uma correção. No código aonde está escrito 15, leia-se 1.

    Conteúdo patrocinado


    [Resolvido]Agendamento com base em 3 campos Empty Re: [Resolvido]Agendamento com base em 3 campos

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/5/2024, 13:24