PROBLEMAS COM MOVENEXT, MOVEPREVIOUS...
Pessoal, meu MoveNext só funciona do primeiro para o segundo registro, quando uso o MovePrevious dá erro, o MoveFirst funciona.
exemplo de como estrou usando:
Dim cnncomando As New ADODB.Command
Dim rs_Pronaf As New ADODB.Recordset
agradeço a força!
exemplo de como estrou usando:
Dim cnncomando As New ADODB.Command
Dim rs_Pronaf As New ADODB.Recordset
Private Sub Command1_Click()
With cnncomando
.ActiveConnection = cnnProjetos
.CommandType = adCmdText
.CommandText = " select * from projetos "
Set rs_Pronaf = .Execute
End With
With rs_Pronaf
rs_Pronaf.movenext
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
Private Sub Form_Load()
With cnncomando
.ActiveConnection = cnnProjetos
.CommandType = adCmdText
.CommandText = " select * from projetos "
Set rs_Pronaf = .Execute
End With
With rs_Pronaf
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
agradeço a força!
Isso Acontece porque quando vc chega no primeiro registro não tem um anterior ou quando você chega no último registro não tem como move para o proxÃÂÂmo para resolver coloque isso:
Se tiver movendo para o começo faz assim
Se tiver movendo para o final faz assim
No seu caso, seria assim:
Se tiver movendo para o começo faz assim
If Not rs.BOF Then
rs.MovePrevious
If rs.BOF Then rs.MoveNext
End If
Se tiver movendo para o final faz assim
If Not rs.EOF Then
rs.MoveNext
If rs.EOF Then rs.MovePrevious
End If
No seu caso, seria assim:
Private Sub Command1_Click()
With cnncomando
.ActiveConnection = cnnProjetos
.CommandType = adCmdText
.CommandText = " select * from projetos "
Set rs_Pronaf = .Execute
End With
With rs_Pronaf
If Not rs_Pronaf.EOF Then
rs_Pronaf.MoveNext
If rs_Pronaf.EOF Then rs_Pronaf.MovePrevious
End If
rs_Pronaf.movenext
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
Cara ainda não consegui, coloquei desta forma e agora ficou pulando do primeiro para o ultimo, fiz modificações e fica sempre assim, ou pula do primeiro para o ultimo ou do primeiro para o segundo...vou continuar tentando
Amigo o problema contece pq vc abre sempre a conecao
Coloca essa parte no form Load ou em outro lugar fora do botao senao ele sempre da um sleect *
Deixa o botao desse jeito
Coloca essa parte no form Load ou em outro lugar fora do botao senao ele sempre da um sleect *
With cnncomando
.ActiveConnection = cnnProjetos
.CommandType = adCmdText
.CommandText = " select * from projetos "
Set rs_Pronaf = .Execute
End With
Deixa o botao desse jeito
Private Sub Command1_Click()
With rs_Pronaf
If Not rs_Pronaf.EOF Then
rs_Pronaf.MoveNext
If rs_Pronaf.EOF Then rs_Pronaf.MovePrevious
End If
rs_Pronaf.movenext
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
LANDOSP, pus desta forma, mas quando ocorre o Form_Load da erro na linha:
Set rs_Pronaf = .execute
erro = Argument not optional, e fica em destaque o ". execute"
Agradeço se puder pensar em outra saÃÂÂda para este pequeno porém Enorme problema, não pensei que fosse quebrar tanto a cabeça com um simples código para paginar registros.
Set rs_Pronaf = .execute
erro = Argument not optional, e fica em destaque o ". execute"
Agradeço se puder pensar em outra saÃÂÂda para este pequeno porém Enorme problema, não pensei que fosse quebrar tanto a cabeça com um simples código para paginar registros.
Acho que esqueci as referencias dos campos, porém colocando as mesmas o problema que citei anterior desaparece, mas ainda não consigo mover entre os campos pus assim:
no general:
Dim cnncomando As New ADODB.Command
Dim rs_Pronaf As New ADODB.Recordset
aqui está preenchendo os valores nos campos OK, mas o botão para passar os registros esse tá dificil!
colocando assim:
Pula para o ultimo registro
no general:
Dim cnncomando As New ADODB.Command
Dim rs_Pronaf As New ADODB.Recordset
Private Sub Form_Load()
With cnncomando
.ActiveConnection = cnnProjetos
.CommandType = adCmdText
.CommandText = " select * from projetos "
Set rs_Pronaf = .Execute
End With
With rs_Pronaf
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
aqui está preenchendo os valores nos campos OK, mas o botão para passar os registros esse tá dificil!
colocando assim:
Private Sub Command1_Click()
With rs_Pronaf
If Not rs_Pronaf.EOF Then
rs_Pronaf.MoveNext
If rs_Pronaf.EOF Then rs_Pronaf.MovePrevious
End If
rs_Pronaf.MoveNext
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
Pula para o ultimo registro
Opa! agora consegui, foi só tirar as condições e deixar simplesmente:
Agora é só arrumar um jeito de tratar o erro que dá quando chega ao final! hehehehehe se não fossem essas dificuldades realmente não seria tão interessante trabalhar com esse VB hehehehe!
Aceito opniões agora de como tratar esse erro valeu!, obrigado ROBIU e obrigado LANDOSP que até agora se aproximou mais da perfeição da resposta ao meu problema.
Private Sub Command1_Click()
With rs_Pronaf
rs_Pronaf.MoveNext
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
Agora é só arrumar um jeito de tratar o erro que dá quando chega ao final! hehehehehe se não fossem essas dificuldades realmente não seria tão interessante trabalhar com esse VB hehehehe!
Aceito opniões agora de como tratar esse erro valeu!, obrigado ROBIU e obrigado LANDOSP que até agora se aproximou mais da perfeição da resposta ao meu problema.
Faz assim:
Private Sub Command1_Click()
if rs_Pronaf.EOF = true then
rs_Pronaf.MoveFirst' Vai para o primeiro se chegar no ultimo
else
rs_Pronaf.MoveNext
End if
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End Sub
Private Sub Command2_Click()
if rs_Pronaf.BOF = true then
rs_Pronaf.MoveLast' Vai para o último se chegar no primeiro
else
rs_Pronaf.MovePrevious
End if
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End Sub
Resumo do problema/solução até agora:
Já consigo passar registro por registro com o MoveNext OK!
Consigo também mover para o primeiro registro com o MoveFirst OK!
O MovePrevious não funciona e dá o seguinte erro:
Run Time Error '3219' Operação não permitida neste contexto
O MoveLast não funciona e dá o seguinte erro:
Run time error '2147217884(80040e24)
o conjunto de linhas não oferece suporte para busca regressiva
abaixo todo o codigo:
general declarations
Dim cnncomando As New ADODB.Command
Dim rs_Pronaf As New ADODB.Recordset
quanto ao erro de quando o EOF = TRUE acho que posso ver isto depois sendo que pus um tratamento de erro e ta satisfatorio no momento, ele avisa que chegou ao final com um msgbox e fica parado no ultimo.
Já consigo passar registro por registro com o MoveNext OK!
Consigo também mover para o primeiro registro com o MoveFirst OK!
O MovePrevious não funciona e dá o seguinte erro:
Run Time Error '3219' Operação não permitida neste contexto
O MoveLast não funciona e dá o seguinte erro:
Run time error '2147217884(80040e24)
o conjunto de linhas não oferece suporte para busca regressiva
abaixo todo o codigo:
general declarations
Dim cnncomando As New ADODB.Command
Dim rs_Pronaf As New ADODB.Recordset
Private Sub Command1_Click()
With rs_Pronaf
rs_Pronaf.MoveNext
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
Private Sub Command2_Click()
With rs_Pronaf
rs_Pronaf.MoveFirst
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
Private Sub Command3_Click()
With rs_Pronaf
rs_Pronaf.MoveLast
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
Private Sub Command4_Click()
With rs_Pronaf
rs_Pronaf.MovePrevious
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
Private Sub Form_Load()
With cnncomando
.ActiveConnection = cnnProjetos
.CommandType = adCmdText
.CommandText = " select * from projetos "
Set rs_Pronaf = .Execute
End With
With rs_Pronaf
Text1 = !cod
Text2 = !nome
Text3 = !municipio
End With
End Sub
quanto ao erro de quando o EOF = TRUE acho que posso ver isto depois sendo que pus um tratamento de erro e ta satisfatorio no momento, ele avisa que chegou ao final com um msgbox e fica parado no ultimo.
Obrigado ROBIU pela as alterações que vc fez no projeto, além de ter deixado com os comentários com os quais eu pude entender como se deu a mudança no código.
Valeu!
Valeu!
Tópico encerrado , respostas não são mais permitidas