Bom dia senhores.
Sempre recorri ao fórum para tirar dúvidas e aprender mais sobre o uso do Access e já tem muito tempo que o fórum me tem sido de grande valia.
Acontece que estou com uma duvida que eu ainda não encontrei resposta por aqui, e nem em outras fontes na internet, e venho na esperança que alguém possa me ajudar.
Já estou quebrando a cabeça no problema abaixo a mais de uma semana. Segue o explicativo:
Trata-se de um sistema de autorização de acesso a salas, é cadastrado: a carteirinha do estudante, o numero da sala a data de inicio e a data final da autorização.
Tabela - Autorizacao:
*Carteirinha -> numero duplo -> sequencial possui 11 dígitos
*Sala -> numero duplo -> sequencial possui 11 dígitos
*Data_inicial -> Data abreviada
*Data_final -> Data abreviada
Formulario – Autoriza:
*Caixa de texto 1 -> num_cart -> não acoplado
*Caixa de texto 2 -> num_sala -> não acoplado
*Botão -> Verifica
A ideia é que eu entre com os dados do numero da carteirinha e da sala e clique no botão “Verifica”. O botão tem um código VBA que deve executar uma consulta na tabela “Autorização” e ver se existe alguma linha contendo os dois códigos (carteirinha e sala) e verifica se a data atual está entre a data inicial e final, caso todas essas condições esteja satisfeitas ele retorna com uma caixa de mensagem dizendo: “Autorização concedida”.
Vi aqui no fórum e em outras fontes que a função DCOUNT se encaixaria no que eu quero fazer, porem estou com muitos problemas na parte dos critérios, quando não acontece erro de sintaxe acontece uma falha que diz que os dados são incompatíveis. Segue abaixo o código feito para o botão verifica.
Agradeço muito quem puder me ajudar.
Obrigado.
Sempre recorri ao fórum para tirar dúvidas e aprender mais sobre o uso do Access e já tem muito tempo que o fórum me tem sido de grande valia.
Acontece que estou com uma duvida que eu ainda não encontrei resposta por aqui, e nem em outras fontes na internet, e venho na esperança que alguém possa me ajudar.
Já estou quebrando a cabeça no problema abaixo a mais de uma semana. Segue o explicativo:
Trata-se de um sistema de autorização de acesso a salas, é cadastrado: a carteirinha do estudante, o numero da sala a data de inicio e a data final da autorização.
Tabela - Autorizacao:
*Carteirinha -> numero duplo -> sequencial possui 11 dígitos
*Sala -> numero duplo -> sequencial possui 11 dígitos
*Data_inicial -> Data abreviada
*Data_final -> Data abreviada
Formulario – Autoriza:
*Caixa de texto 1 -> num_cart -> não acoplado
*Caixa de texto 2 -> num_sala -> não acoplado
*Botão -> Verifica
A ideia é que eu entre com os dados do numero da carteirinha e da sala e clique no botão “Verifica”. O botão tem um código VBA que deve executar uma consulta na tabela “Autorização” e ver se existe alguma linha contendo os dois códigos (carteirinha e sala) e verifica se a data atual está entre a data inicial e final, caso todas essas condições esteja satisfeitas ele retorna com uma caixa de mensagem dizendo: “Autorização concedida”.
Vi aqui no fórum e em outras fontes que a função DCOUNT se encaixaria no que eu quero fazer, porem estou com muitos problemas na parte dos critérios, quando não acontece erro de sintaxe acontece uma falha que diz que os dados são incompatíveis. Segue abaixo o código feito para o botão verifica.
- Código:
Private Sub Verifica_Click()
Dim Ncart, Nsala As Double
Dim contador As Integer
Dim data As Date
Ncart = 0
Nsala = 0
contador = 0
data = Date
If Me.num_cart <> "" Then
Ncart = CDbl(Me.num_cart)
End If
If Me.num_sala <> "" Then
Nsala = CDbl(Me.num_sala)
End If
contador = DCount("Carteirinha", "Autorizacao", "Carteirinha = " & Ncart And "Sala = " & Nsala And "Data_inicial <= #" & data & "#" And "Data_final >= #" & data & "#")
If contador > 0 Then
MsgBox "Autorização concedida!"
Else
MsgBox "Autorização NÃO concedida!"
End If
End Sub
Agradeço muito quem puder me ajudar.
Obrigado.
- Anexos
- Database1.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (106 Kb) Baixado 5 vez(es)
Última edição por diegogcoelho em 15/8/2017, 17:21, editado 1 vez(es)