MOVENEXT E MOVEPREVIOUS

USUARIO.EXCLUIDOS 04/09/2007 13:40:40
#234040
Olá gente...

Estou tendo problemas com os meus botões "registro anterior" e "próximo registro"
fala q precisa de um registro atual .. e q BOF ou EOF é verdadeiro...

no meu BD tem 7 registros... a primeira vez q clico do proximo.. funciona normalmente... mas qd clico de novo não acontece nd... e toda vez q clico do anterior da o erro comentado acima...

Private Sub cmdProximo_Click()
SQL = "Select * from tbProdutos"
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
If Tabela.EOF = False Then
Tabela.MoveNext
txtCodigo.Text = Tabela.Fields("Codigo")
txtFormula1.Text = Tabela.Fields("Formula1")
txtFormula2.Text = Tabela.Fields("Formula2")
txtFormula3.Text = Tabela.Fields("Formula3")
txtFormula4.Text = Tabela.Fields("Formula4")
txtPorcentagem1.Text = Tabela.Fields("Porcentagem1")
txtPorcentagem2.Text = Tabela.Fields("Porcentagem2")
txtPorcentagem3.Text = Tabela.Fields("Porcentagem3")
txtPorcentagem4.Text = Tabela.Fields("Porcentagem4")
txtProduto.Text = Tabela.Fields("Produto")
txtPassada1.Text = Tabela.Fields("Passada1")
txtPassada2.Text = Tabela.Fields("Passada2")
txtPassada3.Text = Tabela.Fields("Passada3")
txtPassada4.Text = Tabela.Fields("Passada4")
Else
MsgBox "Esse é o último registro!", vbInformation, "Aviso"
End If
Tabela.Close
End Sub


Private Sub cmdAnterior_Click()
SQL = "Select * from tbProdutos"
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
If Tabela.BOF = False Then
Tabela.MovePrevious
txtCodigo.Text = Tabela.Fields("Codigo")
txtFormula1.Text = Tabela.Fields("Formula1")
txtFormula2.Text = Tabela.Fields("Formula2")
txtFormula3.Text = Tabela.Fields("Formula3")
txtFormula4.Text = Tabela.Fields("Formula4")
txtPorcentagem1.Text = Tabela.Fields("Porcentagem1")
txtPorcentagem2.Text = Tabela.Fields("Porcentagem2")
txtPorcentagem3.Text = Tabela.Fields("Porcentagem3")
txtPorcentagem4.Text = Tabela.Fields("Porcentagem4")
txtProduto.Text = Tabela.Fields("Produto")
txtPassada1.Text = Tabela.Fields("Passada1")
txtPassada2.Text = Tabela.Fields("Passada2")
txtPassada3.Text = Tabela.Fields("Passada3")
txtPassada4.Text = Tabela.Fields("Passada4")
Else
MsgBox "Esse é o primeiro registro!", vbInformation, "Aviso"
End If
Tabela.Close
End Sub

Private Sub Form_Load()
Set Conexao = New ADODB.Connection
Set Tabela = New ADODB.Recordset
Conexao.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & App.Path & "\Dados.mdb"
SQL = "Select * from tbProdutos"
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
If Tabela.RecordCount > 0 Then
Tabela.MoveFirst
End If
Tabela.Close
End Sub


não sei o q pode ser ... jah q fiz até as condições.... por favor alguem pode me ajudar? ... e logico me ajuda?
USUARIO.EXCLUIDOS 04/09/2007 13:47:55
#234043
Faz assim amigo...ai vira um loop caso seja BOF vai para o ultimo caso seja EOF vai para o primeiro

Private Sub cmdProximo_Click()
SQL = "Select * from tbProdutos"
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
If Tabela.EOF = False Then
Tabela.MoveNext
txtCodigo.Text = Tabela.Fields("Codigo")
txtFormula1.Text = Tabela.Fields("Formula1")
txtFormula2.Text = Tabela.Fields("Formula2")
txtFormula3.Text = Tabela.Fields("Formula3")
txtFormula4.Text = Tabela.Fields("Formula4")
txtPorcentagem1.Text = Tabela.Fields("Porcentagem1")
txtPorcentagem2.Text = Tabela.Fields("Porcentagem2")
txtPorcentagem3.Text = Tabela.Fields("Porcentagem3")
txtPorcentagem4.Text = Tabela.Fields("Porcentagem4")
txtProduto.Text = Tabela.Fields("Produto")
txtPassada1.Text = Tabela.Fields("Passada1")
txtPassada2.Text = Tabela.Fields("Passada2")
txtPassada3.Text = Tabela.Fields("Passada3")
txtPassada4.Text = Tabela.Fields("Passada4")
Else
Tabela.MoveFirst
End If
Tabela.Close
End Sub



Private Sub cmdAnterior_Click()
SQL = "Select * from tbProdutos"
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
If Tabela.BOF = False Then
Tabela.MovePrevious
txtCodigo.Text = Tabela.Fields("Codigo")
txtFormula1.Text = Tabela.Fields("Formula1")
txtFormula2.Text = Tabela.Fields("Formula2")
txtFormula3.Text = Tabela.Fields("Formula3")
txtFormula4.Text = Tabela.Fields("Formula4")
txtPorcentagem1.Text = Tabela.Fields("Porcentagem1")
txtPorcentagem2.Text = Tabela.Fields("Porcentagem2")
txtPorcentagem3.Text = Tabela.Fields("Porcentagem3")
txtPorcentagem4.Text = Tabela.Fields("Porcentagem4")
txtProduto.Text = Tabela.Fields("Produto")
txtPassada1.Text = Tabela.Fields("Passada1")
txtPassada2.Text = Tabela.Fields("Passada2")
txtPassada3.Text = Tabela.Fields("Passada3")
txtPassada4.Text = Tabela.Fields("Passada4")
Else
Tabela.MoveLast
End If
Tabela.Close
End Sub

USUARIO.EXCLUIDOS 04/09/2007 13:54:07
#234047
Resposta escolhida
Amigos...

Erro de lógica...

vc abre a tabela toda hora que clica no botão, então o cursor volta para o primeiro registro.

Aí vc da um next, ele volta pro segundo, dando a impressão de que não acontece nada...

e quando da um previous ele dá erro, pois já está no primeiro registro e não tem registro anterior.

Tente assim:


Private Sub cmdProximo_Click()
Tabela.MoveNext
If Tabela.EOF = True Then
Tabela.MoveLast
MsgBox "Esse é o último registro!", vbInformation, "Aviso"
Exit sub
End if

txtCodigo.Text = Tabela.Fields("Codigo")
txtFormula1.Text = Tabela.Fields("Formula1")
txtFormula2.Text = Tabela.Fields("Formula2")
txtFormula3.Text = Tabela.Fields("Formula3")
txtFormula4.Text = Tabela.Fields("Formula4")
txtPorcentagem1.Text = Tabela.Fields("Porcentagem1")
txtPorcentagem2.Text = Tabela.Fields("Porcentagem2")
txtPorcentagem3.Text = Tabela.Fields("Porcentagem3")
txtPorcentagem4.Text = Tabela.Fields("Porcentagem4")
txtProduto.Text = Tabela.Fields("Produto")
txtPassada1.Text = Tabela.Fields("Passada1")
txtPassada2.Text = Tabela.Fields("Passada2")
txtPassada3.Text = Tabela.Fields("Passada3")
txtPassada4.Text = Tabela.Fields("Passada4")
End Sub




Private Sub cmdAnterior_Click()
Tabela.MovePrevious
If Tabela.BOF = True Then
Tabela.MoveFirst
MsgBox "Esse é o primeiro registro!", vbInformation, "Aviso"
Exit sub
End if

txtCodigo.Text = Tabela.Fields("Codigo")
txtFormula1.Text = Tabela.Fields("Formula1")
txtFormula2.Text = Tabela.Fields("Formula2")
txtFormula3.Text = Tabela.Fields("Formula3")
txtFormula4.Text = Tabela.Fields("Formula4")
txtPorcentagem1.Text = Tabela.Fields("Porcentagem1")
txtPorcentagem2.Text = Tabela.Fields("Porcentagem2")
txtPorcentagem3.Text = Tabela.Fields("Porcentagem3")
txtPorcentagem4.Text = Tabela.Fields("Porcentagem4")
txtProduto.Text = Tabela.Fields("Produto")
txtPassada1.Text = Tabela.Fields("Passada1")
txtPassada2.Text = Tabela.Fields("Passada2")
txtPassada3.Text = Tabela.Fields("Passada3")
txtPassada4.Text = Tabela.Fields("Passada4")

End Sub

USUARIO.EXCLUIDOS 04/09/2007 14:18:28
#234057
era isso msm... eu tava fechando a tabela em toda rotina... Obrigado kra

vlws msm!
USUARIO.EXCLUIDOS 04/09/2007 14:19:57
#234058
Esquenta não brother..

Qualquer coisa posta aí que a galera te dá um help.
Tópico encerrado , respostas não são mais permitidas