GRAVANDO DADOS EM BRANCO
Tenho form que tá gravando dados em branco no banco de dados. Até coloquei algumas rotinas tipo travar o botão OK pra campos em branco, etc, só que devo tá fazendo alguma besteira pq no primeiro registro isso funciona, no próximo ele já aceita e o botão fica habilitado o tempo inteiro. No formulário tem outras rotinas com if e ao que parece, uma tá interferindo na outra. Alguém tem uma boa sugestão?
Posta o código ai pro pessoal dar uma olhada.. se não fica difÃÂÂcil.
Blz Marcelo.
Segue o código pra que dê uma olhada. Tentei criar algumas rotinas pra travar a gravação em branco mas com certeza fiz alguma besteira, pq quando tava fazendo uma a uma, tava dando certo. No funcionamento global é que babou tudo. Como esse é um form pra digitação, quero que ele realmente fique ativo o tempo todo. Clicou ok, limpou o form pra próxima digitação.
O que pretendia era que: Só liberasse o txtNome após o txtMatrÃÂÂcula ser preenchido, depois de digitar o txtNome o lstLocalidade passase a ter o foco (setfocus ou coisa que o valha) e só depois do preenchimento do txtLocalidade(vinculado ao lstLocalidade) é que fosse liberado o botão OK.
Fiz uma a uma e deu certo. Parece é que no global do documento é que não tá funcionando, certamente é pq botei coisa repetitiva demais pq não tenho muita prática.Fiz essas rotinas apenas pra evitar a gravação da tela em branco, mas tá acontecendo isso.
Outra dúvida é que esse form tem um DBGrid com os dados digitados, só que não tá atualizando em tempo de execução. Tenho que fechar o form pra que apareça o último dado digitado. Tem como eu atualizar isso na mesma hora?
Dim BancoDeDados As Database
Dim TBMatrÃÂÂcula As Recordset
Segue o código pra que dê uma olhada. Tentei criar algumas rotinas pra travar a gravação em branco mas com certeza fiz alguma besteira, pq quando tava fazendo uma a uma, tava dando certo. No funcionamento global é que babou tudo. Como esse é um form pra digitação, quero que ele realmente fique ativo o tempo todo. Clicou ok, limpou o form pra próxima digitação.
O que pretendia era que: Só liberasse o txtNome após o txtMatrÃÂÂcula ser preenchido, depois de digitar o txtNome o lstLocalidade passase a ter o foco (setfocus ou coisa que o valha) e só depois do preenchimento do txtLocalidade(vinculado ao lstLocalidade) é que fosse liberado o botão OK.
Fiz uma a uma e deu certo. Parece é que no global do documento é que não tá funcionando, certamente é pq botei coisa repetitiva demais pq não tenho muita prática.Fiz essas rotinas apenas pra evitar a gravação da tela em branco, mas tá acontecendo isso.
Outra dúvida é que esse form tem um DBGrid com os dados digitados, só que não tá atualizando em tempo de execução. Tenho que fechar o form pra que apareça o último dado digitado. Tem como eu atualizar isso na mesma hora?
Dim BancoDeDados As Database
Dim TBMatrÃÂÂcula As Recordset
Private Sub cmdCancelar_Click()
Unload frmDigitação
End Sub
Private Sub cmdOK_Click()
AtualizaCampos
TBMatrÃÂÂcula.Update
txtMatrÃÂÂcula.SetFocus
LimpaFormulário
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
SendKeys ("{TAB}")
KeyAscii = 0
End If
End Sub
Private Sub Form_Load()
txtSérie.Text = frmCadastraAlunos.lblSérie
txtTurma.Text = frmCadastraAlunos.lblTurmas
Set BancoDeDados = OpenDatabase(App.Path & "\curso.MDB")
Set TBMatrÃÂÂcula = BancoDeDados.OpenRecordset("MatrÃÂÂcula", dbOpenTable)
TBMatrÃÂÂcula.Index = "IndNúmero"
cmdOK.Enabled = False
If TBMatrÃÂÂcula.EOF = False Then
'AtualizaCampos'
End If
LimpaFormulário
If txtTurma.Text = "A" Then
txtTurno.Text = "MATUTINO"
ElseIf txtTurma.Text = "B" Then
txtTurno.Text = "MATUTINO"
Else
txtTurno.Text = "VESPERTINO"
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
TBMatrÃÂÂcula.Close
BancoDeDados.Close
End Sub
Private Function AtualizaCampos()
TBMatrÃÂÂcula("Número") = txtMatrÃÂÂcula
TBMatrÃÂÂcula("Série") = txtSérie
TBMatrÃÂÂcula("Turma") = txtTurma
TBMatrÃÂÂcula("Nome") = txtNome
TBMatrÃÂÂcula("Localidade") = txtLocalidade
TBMatrÃÂÂcula("Turno") = txtTurno
End Function
Private Function AtualizaFormulário()
txtMatrÃÂÂcula = TBMatrÃÂÂcula("Número")
txtSérie = TBMatrÃÂÂcula("Série")
txtTurma = TBMatrÃÂÂcula("Turma")
txtNome = TBMatrÃÂÂcula("Nome")
txtLocalidade = TBMatrÃÂÂcula("Localidade")
txtTurno = TBMatrÃÂÂcula("Turno")
End Function
Private Function LimpaFormulário()
txtMatrÃÂÂcula = " "
txtNome = " "
txtLocalidade = " "
End Function
Private Sub txtEntrada_LostFocus()
End Sub
Private Sub lstLocalidade_Click()
txtLocalidade.Text = lstLocalidade.Text
If lstLocalidade = " " Then
cmdOK.Enabled = False
Else
cmdOK.Enabled = True
End If
End Sub
Private Sub txtLocalidade_LostFocus()
If txtMatrÃÂÂcula = " " Then
cmdOK.Enabled = False
Else
cmdOK.Enabled = True
End If
End Sub
Private Sub txtMatrÃÂÂcula_LostFocus()
txtMatrÃÂÂcula.Text = Format(txtMatrÃÂÂcula.Text, "000")
TBMatrÃÂÂcula.Seek "=", txtMatrÃÂÂcula.Text
If TBMatrÃÂÂcula.NoMatch = False Then
MsgBox "MatrÃÂÂcula já existente, tente outro código"
AtualizaFormulário
cmdOK.Enabled = False
Else
TBMatrÃÂÂcula.AddNew
End If
End Sub
Private Sub txtNome_LostFocus()
If txtNome.Text = " " Then
MsgBox "DIGITE UM NOME"
Else
lstLocalidade.Visible = True
End If
End Sub
Quer uma dica???
está um pouco confuso para veriricar o erro... vc poderia fazer essa validação no click do botão Ok.
QUando clicar verifica se está tudo preenchido, se não estiver, da uma mensagem e não grava no banco.
Referente o Grid vc só precisa dar um refresh no mesmo.
está um pouco confuso para veriricar o erro... vc poderia fazer essa validação no click do botão Ok.
QUando clicar verifica se está tudo preenchido, se não estiver, da uma mensagem e não grava no banco.
Referente o Grid vc só precisa dar um refresh no mesmo.
Tópico encerrado , respostas não são mais permitidas