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

    [Resolvido]Erro em If Else

    avatar
    ewertonms
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 83
    Registrado : 20/09/2012

    [Resolvido]Erro em If Else Empty [Resolvido]Erro em If Else

    Mensagem  ewertonms 11/2/2019, 13:19

    Bom dia pessoal estou com o seguinte problema, tenho uma agenda de atendimentos dividida em 2 períodos manhã e tarde, ela não é limitada por horário nem por quantidade devido a peculiaridades da forma como é o fluxo de atendimento, até aí funciona certinho, acontece que precisei limitar em alguns dias específicos a quantidade de um certo atendimento, criei uma tabela onde cadastro a data e quantidade e ele faz a limitação conforme esperado, porém estou tendo problema em um dia especifico, para todos os outros dias aleatórios que fiz o bloqueio funcionou normalmente mas no dia 12/03/19 ele simplesmente não abre o form para cadastro independente se atingiu ou não a quantidade,  o código está assim:

    Código:

    Private Sub btnCadPaciente_Click()
    On Error GoTo Err_btnCadPaciente_Click

        Dim stDocName As String
        Dim stLinkCriteria As String
        Dim databloq
        Dim crit2
        Dim crit3
        Dim crit4
        
        
        
    databloq = DCount("[data]", "bloqueiosus", "[data]= Forms![frmAgenda]![txtdtreg]")

    crit2 = DCount("[id_data]", "tblsusagenda", "[hora]<=#12:00# and [id_data]=#" & _
            Forms![frmAgenda]![txtdtreg] & "# and [convenio]='sus'")

    crit3 = DCount("[id_data]", "tblsusagenda", "[hora]>#12:00# and [id_data]=#" & _
            Forms![frmAgenda]![txtdtreg] & "# and [convenio]='sus'")

    crit4 = DLookup("[quantidade]", "bloqueiosus", "[data]= Forms![frmAgenda]![txtdtreg]")
        
    '-----------------------------------------------------------------------
        
        If databloq = 1 Then
          
           Select Case Weekday(Forms![frmAgenda]![txtdtreg])
        Case 3, 5
                If crit2 >= crit4 And crit3 >= crit4 Then
                      
                    If MsgBox("A quantidade de agendamentos SUS para hoje chegou ao limite!" + vbCrLf & _
                    "Deseja agendar para outro convenio?", vbCritical + vbYesNo, "Limite agendamentos SUS") = vbYes Then
                    stDocName = "FrmCadConsultaSUS"
                    DoCmd.OpenForm stDocName, , , stLinkCriteria
                    End If
                ElseIf crit2 >= crit4 Then
                MsgBox "A quantidade de agendamentos SUS para parte da manhã chegou ao limite!" + vbCrLf & _
                "Agendamentos SUS disponiveis somente na parte da TARDE", vbCritical + vbOKOnly, "Limite agendamentos SUS"
                stDocName = "FrmCadConsultaSUS"
                DoCmd.OpenForm stDocName, , , stLinkCriteria
            
                ElseIf crit3 >= crit4 Then
                MsgBox "A quantidade de agendamentos SUS para parte da tarde chegou ao limite!" + vbCrLf & _
                "Agendamentos SUS disponiveis somente na parte da MANHÃ", vbCritical + vbOKOnly, "Limite agendamentos SUS"
                stDocName = "FrmCadConsultaSUS"
                DoCmd.OpenForm stDocName, , , stLinkCriteria
                Else
                stDocName = "FrmCadConsultaSUS"
                DoCmd.OpenForm stDocName, , , stLinkCriteria
                
            
             End If
              
            Case 6
             If crit2 >= crit4 Then
                If MsgBox("A quantidade de agendamentos SUS para parte da manhã chegou ao limite! Disponibilidade somente na parte da tarde!" + vbCrLf & _
                "Deseja agendar?", vbCritical + vbYesNo, "Limite agendamentos SUS") = vbYes Then
                stDocName = "FrmCadConsultaSUS"
                DoCmd.OpenForm stDocName, , , stLinkCriteria
                End If
            Else
                stDocName = "FrmCadConsultaSUS"
                DoCmd.OpenForm stDocName, , , stLinkCriteria
            End If
        
        
        End Select
        
        Else
        stDocName = "FrmCadConsultaSUS"
                DoCmd.OpenForm stDocName, , , stLinkCriteria
        End If
        

    Exit_btnCadPaciente_Click:
        Exit Sub

    Err_btnCadPaciente_Click:
        MsgBox Err.Description
        Resume Exit_btnCadPaciente_Click
        
    End Sub

    se alguém puder dar uma luz agradeço
    avatar
    FabioGO
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 106
    Registrado : 22/08/2012

    [Resolvido]Erro em If Else Empty Re: [Resolvido]Erro em If Else

    Mensagem  FabioGO 11/2/2019, 14:03

    tenta usar o Format no criterio da data

    Código:
    DCount("[data]", "bloqueiosus", "[data]=#" & Format(Forms![frmAgenda]![txtdtreg]), "MM/DD/YYYY") & "#")

    ou simplesmente use coloque o campo de data de comparação entre ##

    Código:
    DCount("[data]", "bloqueiosus", "[data]=#Forms![frmAgenda]![txtdtreg]#")

    eu sempre uso a msgbox para verificar se as funções estão calculando certo, você pode fazer isso com as variáveis para saber

    Código:
    MsgBox crit2 & crit3 & crit4

    e uma outra observação: como é comparação entre números inteiros, acho que seria bom declarar as variáveis como Integer e a data de bloqueio como Date

    Código:
    Dim databloq as Date
    Dim crit2 as Integer
    Dim crit3 as Integer
    Dim crit4 as Integer
    avatar
    ewertonms
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 83
    Registrado : 20/09/2012

    [Resolvido]Erro em If Else Empty Re: [Resolvido]Erro em If Else

    Mensagem  ewertonms 11/2/2019, 14:24

    Fabio, eu verifiquei a formula na janela de verificação imediata o "databloq" está contando normalmente, declarei as variáveis como sugeriu, na janela de verificação imediata descobri que o crit2 e crit3 somente no dia 12/03/2019 está retornando 0 registros mesmo tendo vários já cadastrados, só não consegui identificar o porque disso estar acontecendo

    EDIT

    mudei no criterio a data para pegar mm/dd ao inves de dd/mm e resolveu, obrigado Fabio pelo tempo gasto, acredito que agora deva funcionar para todas as datas.


    Última edição por ewertonms em 11/2/2019, 14:50, editado 1 vez(es)
    avatar
    FabioGO
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 106
    Registrado : 22/08/2012

    [Resolvido]Erro em If Else Empty Re: [Resolvido]Erro em If Else

    Mensagem  FabioGO 11/2/2019, 14:48

    Ah sim, o databloq é numero inteiro também, e não data

    Eu imagino que a comparação está sendo feita erroneamente.

    Sem usar o Format para a data, ele vai comparar a data ao contrário

    Por exemplo:

    Na tabela No campo de comparação

    12/03/2019 03/12/2019

    Se ainda sim não conseguir, poste seu programa para verificar
    avatar
    ewertonms
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 83
    Registrado : 20/09/2012

    [Resolvido]Erro em If Else Empty Re: [Resolvido]Erro em If Else

    Mensagem  ewertonms 11/2/2019, 14:54

    no crit2 e crit3 formatei como "dd/mm/yyyy" e deu errado tentei formatar para "mm/dd/yyyy" e resolveu testei em umas 3 datas que verificou corretamente, obrigado Fabio!!!
    avatar
    FabioGO
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 106
    Registrado : 22/08/2012

    [Resolvido]Erro em If Else Empty Re: [Resolvido]Erro em If Else

    Mensagem  FabioGO 11/2/2019, 14:56

    Foi como eu postei na formula. O formato "mm/dd/yyyy" é o americano e é usado assim nas funções e/ou SQL
    Que bom que resolveu.

      Data/hora atual: 29/7/2021, 14:17