GRAVANDO DADOS EM BRANCO

USUARIO.EXCLUIDOS 18/04/2007 10:05:48
#212483
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?

USUARIO.EXCLUIDOS 18/04/2007 10:33:39
#212487
Posta o código ai pro pessoal dar uma olhada.. se não fica difícil.
USUARIO.EXCLUIDOS 18/04/2007 11:05:15
#212493
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


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

USUARIO.EXCLUIDOS 18/04/2007 11:35:44
#212501
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.
Tópico encerrado , respostas não são mais permitidas