Olá pessoal, boa noite!
Estou com um problema curioso e não consigo enxergar onde estou errando. Fiz um formulário com um campo para a entrada de dados com uma máscara de data, o que faço com este Form e verificar se a data de término do contrato de qualquer um dos locatários (armazenada no Form "Vagas_quartos") é maior ou igual a 15. O código informa se dentro de quinze dias aquela vaga estará disponível ou se já está disponível, pois não há ocupante. O código está funcionando direitinho, mas o problema é que no final ele apresenta a MsgBox com a informação: "está vago!". Ele não encerra ao completar o Loop e na MsgBox não faz referência a quarto algum. Só para constar os nomes dos quartos estão armazenados numa tabela, pois a quantidade de vagas é limitada (só usei o DCount para ficar mais dinâmico) e verifiquei direitinho se não há quarto sem nome. Se alguém puder me dar uma luz!
Aqui está o código:
Dim varA As Date
Dim varB As Variant
Dim varc As Date
Dim varD As Integer
Dim varE As Variant
Dim varx As Variant
Dim vart As Integer
Dim vary As Integer
On Error Resume Next
'
vary = DCount("*", "Vagas_quartos")
vart = 0
Do While vart <= vary
vart = vart + 1
If IsNull(Me.data_busca) Then
MsgBox "Informe uma data para a busca!", vbCritical, "Erro"
Exit Sub
Else
varA = Me("data_busca")
If IsNull(DLookup("[contratante]", "Vagas_quartos", "[Autonumeracao] =" & vart)) Then
varx = DLookup("[quarto]", "Vagas_quartos", "[Autonumeracao] =" & vart)
MsgBox varx & " está vago!", vbInformation, "Resultado"
Else
varA = Me.data_busca
varB = DLookup("[verificacao]", "Vagas_quartos", "[Autonumeracao] =" & vart)
If varB = "-1" Then
varE = DLookup("[quarto]", "Vagas_quartos", "[Autonumeracao] =" & vart)
varc = DLookup("[fim_contrato]", "Vagas_quartos", "[Autonumeracao] =" & vart)
varD = DateDiff("d", varc, varA)
If varD >= 15 Then
MsgBox varE & " estará vago!", vbInformation, "Resultado"
End If
End If
End If
End If
Loop
'
'Finalizando busca
'
MsgBox "Busca finalizada, " & vary & " registros analisados!", vbInformation, "Sucesso"
Pessoal, aqui está o banco de dados, tirei tudo que não precisa, só deixei o problema mesmo!
Link: https://drive.google.com/file/d/0B52QNjNdV488YTM5WkdYVDNFb3M/edit?usp=sharing
Desde já agradeço pela ajuda! Não sou da área e este Fórum tem me ajudado MUITO!
Estou com um problema curioso e não consigo enxergar onde estou errando. Fiz um formulário com um campo para a entrada de dados com uma máscara de data, o que faço com este Form e verificar se a data de término do contrato de qualquer um dos locatários (armazenada no Form "Vagas_quartos") é maior ou igual a 15. O código informa se dentro de quinze dias aquela vaga estará disponível ou se já está disponível, pois não há ocupante. O código está funcionando direitinho, mas o problema é que no final ele apresenta a MsgBox com a informação: "está vago!". Ele não encerra ao completar o Loop e na MsgBox não faz referência a quarto algum. Só para constar os nomes dos quartos estão armazenados numa tabela, pois a quantidade de vagas é limitada (só usei o DCount para ficar mais dinâmico) e verifiquei direitinho se não há quarto sem nome. Se alguém puder me dar uma luz!
Aqui está o código:
Dim varA As Date
Dim varB As Variant
Dim varc As Date
Dim varD As Integer
Dim varE As Variant
Dim varx As Variant
Dim vart As Integer
Dim vary As Integer
On Error Resume Next
'
vary = DCount("*", "Vagas_quartos")
vart = 0
Do While vart <= vary
vart = vart + 1
If IsNull(Me.data_busca) Then
MsgBox "Informe uma data para a busca!", vbCritical, "Erro"
Exit Sub
Else
varA = Me("data_busca")
If IsNull(DLookup("[contratante]", "Vagas_quartos", "[Autonumeracao] =" & vart)) Then
varx = DLookup("[quarto]", "Vagas_quartos", "[Autonumeracao] =" & vart)
MsgBox varx & " está vago!", vbInformation, "Resultado"
Else
varA = Me.data_busca
varB = DLookup("[verificacao]", "Vagas_quartos", "[Autonumeracao] =" & vart)
If varB = "-1" Then
varE = DLookup("[quarto]", "Vagas_quartos", "[Autonumeracao] =" & vart)
varc = DLookup("[fim_contrato]", "Vagas_quartos", "[Autonumeracao] =" & vart)
varD = DateDiff("d", varc, varA)
If varD >= 15 Then
MsgBox varE & " estará vago!", vbInformation, "Resultado"
End If
End If
End If
End If
Loop
'
'Finalizando busca
'
MsgBox "Busca finalizada, " & vary & " registros analisados!", vbInformation, "Sucesso"
Pessoal, aqui está o banco de dados, tirei tudo que não precisa, só deixei o problema mesmo!
Link: https://drive.google.com/file/d/0B52QNjNdV488YTM5WkdYVDNFb3M/edit?usp=sharing
Desde já agradeço pela ajuda! Não sou da área e este Fórum tem me ajudado MUITO!