FILTRANDO REGISTROS ...
Oi. Estou apanhando para montar um programa para uma pequena locadora. Quase tudo está funcionando OK. Apenas quando vou registrar um movimento em um form de movimentação, é que não estou conseguindo concluir.
Nesse form, o usuário entra com um número 'x' de um filme. O sistema pesquisa no banco de dados, numa tabela de cadastro <CadastrodeFilmes>. Se localiza o registro, joga esse número na textbox <txtCodFita>. Ao tabular para fora dessa textbox, é acionado o evento <GotFocus> para a próxima textbox <txtCodCodCli>.
Nesse evento, o sistema deveria procurar pelo campo <Devolução> (tabela Andamento) que estivesse vazio. Estando vazio, então informaria que o filme está emprestado, executando a função <CancelaDigitação> (que desabilita as textbox e chama a função <AtualizaFormulario>, mostrando o registro. Já tentei de diversas maneiras modificar a rotina <GotFocus> dessa textbox <txtCodCli>, mas não consegui um resultado (abaixo, transcrevi as rotinas Load, cmdIncluir e a função AtualizaFormulario). Se alguém puder ajudar, agradeço.
Chico.
‘Tabela Andamento – Index <IndAnda> - campos indexados: <NumFilme> e <Devolução>.
Nesse form, o usuário entra com um número 'x' de um filme. O sistema pesquisa no banco de dados, numa tabela de cadastro <CadastrodeFilmes>. Se localiza o registro, joga esse número na textbox <txtCodFita>. Ao tabular para fora dessa textbox, é acionado o evento <GotFocus> para a próxima textbox <txtCodCodCli>.
Nesse evento, o sistema deveria procurar pelo campo <Devolução> (tabela Andamento) que estivesse vazio. Estando vazio, então informaria que o filme está emprestado, executando a função <CancelaDigitação> (que desabilita as textbox e chama a função <AtualizaFormulario>, mostrando o registro. Já tentei de diversas maneiras modificar a rotina <GotFocus> dessa textbox <txtCodCli>, mas não consegui um resultado (abaixo, transcrevi as rotinas Load, cmdIncluir e a função AtualizaFormulario). Se alguém puder ajudar, agradeço.
Chico.
Private Sub txtCodCli_GotFocus()
'Código novo. Verificar. Não está funcionando para filmes emprestados... O evento GotFocus abaixo é procedido pelo evento <CmdIncluir>, cujo código segue abaixo.
If TBAnd.NoMatch = False And IsEmpty(TBAnd.Fields("Devolução")) Then
MsgBox "Filme emprestado..."
CancelaDigitação
End If
End Sub
Private Sub cmdIncluir_Click()
Dim Novo As String
LimpaFormulario
cmdIncluir.Enabled = False
cmdAlterar.Enabled = False
cmdConsultar.Enabled = False
cmdExcluir.Enabled = False
cmdGravar.Enabled = False
cmdAnterior.Enabled = False
cmdPróximo.Enabled = False
Frame1.Enabled = True
cmdDevolve.Enabled = False
Novo = InputBox("Entre o nome do filme:")
TBFil.Seek "=", Novo ‘Procura na tabela CadastrodeFilmes.
If TBFil.NoMatch = True Then
MsgBox "Filme não cadastrado..."
Unload Me
Else
txtCodFita.SetFocus
txtCodFita = Novo
End If
End Sub
Private Function AtualizaFormulario()
On Error Resume Next
txtCodCli = TBAnd("NumCliente")
txtCodFita = TBAnd("NumFilme")
txtdatasaÃÂÂda = TBAnd("Retirada")
txtdataretorno = TBAnd("Devolução")
TBFil.Seek "=", txtCodFita.Text
TBCli.Seek "=", txtCodCli.Text
lblCliente = TBCli("NomedoCliente")
lblFilme = TBFil("NomedoFilme")
End Function
Private Sub Form_Load()
Set BancoDeDados = OpenDatabase(App.Path & "\FilmesVHS.mdb")
Set TBCli = BancoDeDados.OpenRecordset("CadastrodeClientes", dbOpenTable)
Set TBFil = BancoDeDados.OpenRecordset("CadastrodeFilmes", dbOpenTable)
Set TBAnd = BancoDeDados.OpenRecordset("Andamento", dbOpenTable)
TBCli.Index = "IndCódigo"
TBFil.Index = "IndCódigo"
TBAnd.Index = "IndAnda"
cmdGravar.Enabled = False
Frame1.Enabled = False
If TBAnd.EOF = False Then
AtualizaFormulario
End If
End Sub
‘Tabela Andamento – Index <IndAnda> - campos indexados: <NumFilme> e <Devolução>.
me fala exatamente o que nao esta funcionando ...
o cancela digitação ou na procura na tabela ou o que?
o cancela digitação ou na procura na tabela ou o que?
Fiz um Sistema de VideoLocadora em 1989 que funciona até hoje.
Para Movimentar um item (incluir um movimento de locacao na tabela de Movimentacao) eu Consulto a tabela de item (filmes, jogos, etc). Na tabela de item tem um campo ALUGADO (texto com 1 posição), nesse campo eu coloco "S" quando o item está alugado e "N" quando está na prateleira.
Desta forma quando o cliente digita o codigo do item a ser alugado eu verifico na tabela de itens se o item existe e se esta disponivel. Uma só consulta para resolver o problema.
Qualquer dúvida vc pode mandar mensagem interna pra mim.
Agora falando do seu problema, se quiser continuar com a mesma lógica, saia do evento GOTFOCUS para outro evento, por exemplo VALIDATE do campo anterior. Se o cliente sair do campo atual clicando em outro local seu GOTFOCUS pode não será executado.
At,
Para Movimentar um item (incluir um movimento de locacao na tabela de Movimentacao) eu Consulto a tabela de item (filmes, jogos, etc). Na tabela de item tem um campo ALUGADO (texto com 1 posição), nesse campo eu coloco "S" quando o item está alugado e "N" quando está na prateleira.
Desta forma quando o cliente digita o codigo do item a ser alugado eu verifico na tabela de itens se o item existe e se esta disponivel. Uma só consulta para resolver o problema.
Qualquer dúvida vc pode mandar mensagem interna pra mim.
Agora falando do seu problema, se quiser continuar com a mesma lógica, saia do evento GOTFOCUS para outro evento, por exemplo VALIDATE do campo anterior. Se o cliente sair do campo atual clicando em outro local seu GOTFOCUS pode não será executado.
At,
Corrigindo o erro de datilografia...
Agora falando do seu problema, se quiser continuar com a mesma lógica, saia do evento GOTFOCUS para outro evento, por exemplo VALIDATE do campo anterior. Se o cliente sair do campo atual clicando em outro local seu GOTFOCUS não será executado.
Agora falando do seu problema, se quiser continuar com a mesma lógica, saia do evento GOTFOCUS para outro evento, por exemplo VALIDATE do campo anterior. Se o cliente sair do campo atual clicando em outro local seu GOTFOCUS não será executado.
Crazy, o que não funciona é a procura na tabela. Se um filme está emprestado, então o campo <Devolução> (no form, txtDataRetorno) está vazio. Assim, a rotina <GotFocus> de txtCodCli, que deveria devolver a msgbox com a informação de que o filme está fora, não funciona... A função <CancelaDigitação> chama a função <AtualizaFormulário> e deixa as textbox Enabled = False.
Simplesmente, quando tabulo para fora da textbox txtCodFita (e, automaticamente, chama a rotina <GotFocus> da txtCodCli), o cursor vai direto para a txtCodCli (ignorando que o filme está emprestado...).
Roberto, agradeço pela idéia da criação de um campo que identifique se o filme está emprestado ou não. Vou tentar implementar, se não conseguir manter a lógica do que fiz até agora.
Obrigado a ambos.
Chico.
Simplesmente, quando tabulo para fora da textbox txtCodFita (e, automaticamente, chama a rotina <GotFocus> da txtCodCli), o cursor vai direto para a txtCodCli (ignorando que o filme está emprestado...).
Roberto, agradeço pela idéia da criação de um campo que identifique se o filme está emprestado ou não. Vou tentar implementar, se não conseguir manter a lógica do que fiz até agora.
Obrigado a ambos.
Chico.
Tópico encerrado , respostas não são mais permitidas