Sou iniciante no VBA ACCESS e ao codificar um Botão próximo registro, no qual objetivo que ao clica-lo, este venha transferir os dados do próximo registro subsequentes aos que constavam anteriormente nas caixas de texto (variáveis minúsculas) de um formulário chamado FrmItens. Estou a semanas tentando varias maneiras e acontecem até mesmo situações em que nem mesmo erro é acusado, conforme o código abaixo. Parece-me que o uso do rs.moveNext não movimenta corretamente dentro do recordset (a partir da tabela Tb01RPAItens). Coloquei uma caixa de texto para observação dessa movimentação, através do rs.AbsolutePosition e percebi que de qualquer posição vai para o segundo registro somente ou quando particularizo o registro (no caso referência, usando: WHERE NRPA='" & Me.nrpa & "', complementando a variável PQ), vai a -1. Consegui executar todos os botões, de pesquisa, inserção de registros, alteração, etc, porém esse botão próximo registro, e seu oposto de registro anterior não consigo. Sendo assim solicito a ajuda de vocês, pois é algo que meu nível de conhecimento não esta alcançando.
Private Sub CmbProximoRegistro_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim PQ As String
Dim Msg As String
Set db = CurrentDb
PQ = "SELECT NRPA, SAT, DESCSERV, TIPSERV, TIPDOC, NDOC, PRODSERV, QTDM, CONTPROD," _
& " DATINSERV, LOCASERV, EMPR, CNPJ, DATARPA From Tb01RPAItens"
Set rs = db.OpenRecordset(PQ, dbReadOnly)
If rs.EOF = True Then
MsgBox "Atenção; Último Registro!", , "Atenção!"
rs.MoveLast
Else
rs.MoveNext
Texto0 = rs.AbsolutePosition
If Not rs.EOF Then
Me.nrpa.Value = rs.Fields("NRPA")
Me.sat.Value = rs.Fields("SAT").Value
Me.descserv = rs.Fields("DESCSERV")
Me.tipserv = rs.Fields("TIPSERV")
Me.tipdoc = rs.Fields("TIPDOC")
Me.ndoc = rs.Fields("NDOC")
Me.prodserv = rs.Fields("PRODSERV")
Me.qtdm = rs.Fields("QTDM")
Me.contprod = rs.Fields("CONTPROD")
Me.datinserv = rs.Fields("DATINSERV")
Me.locaserv = rs.Fields("LOCASERV")
Me.empr = rs.Fields("EMPR")
Me.cnpj = rs.Fields("CNPJ")
Me.datarpa = rs.Fields("DATARPA")
End If
End If
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
End Sub
Private Sub CmbProximoRegistro_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim PQ As String
Dim Msg As String
Set db = CurrentDb
PQ = "SELECT NRPA, SAT, DESCSERV, TIPSERV, TIPDOC, NDOC, PRODSERV, QTDM, CONTPROD," _
& " DATINSERV, LOCASERV, EMPR, CNPJ, DATARPA From Tb01RPAItens"
Set rs = db.OpenRecordset(PQ, dbReadOnly)
If rs.EOF = True Then
MsgBox "Atenção; Último Registro!", , "Atenção!"
rs.MoveLast
Else
rs.MoveNext
Texto0 = rs.AbsolutePosition
If Not rs.EOF Then
Me.nrpa.Value = rs.Fields("NRPA")
Me.sat.Value = rs.Fields("SAT").Value
Me.descserv = rs.Fields("DESCSERV")
Me.tipserv = rs.Fields("TIPSERV")
Me.tipdoc = rs.Fields("TIPDOC")
Me.ndoc = rs.Fields("NDOC")
Me.prodserv = rs.Fields("PRODSERV")
Me.qtdm = rs.Fields("QTDM")
Me.contprod = rs.Fields("CONTPROD")
Me.datinserv = rs.Fields("DATINSERV")
Me.locaserv = rs.Fields("LOCASERV")
Me.empr = rs.Fields("EMPR")
Me.cnpj = rs.Fields("CNPJ")
Me.datarpa = rs.Fields("DATARPA")
End If
End If
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
End Sub