Hola, tal vez algunos estén acostumbrados a trabar con la version de ASP o VB 6.0 para moverse por los registros de la siguiente manera con la version de ADO anterior.
rs.MoveFirst
rs.MoveNext.
... etc.
Ahora las maneras para navegar por los registros son de dos maneras:
DataReader (Foward only, es decir el cursor va hacia adelante ideal para llenar DropDownList, ComboBox, arrays, etc.)
y el
DataAdapter (Cursor dinámico, se mueve en cualquier sentido,)
Ahora.. retomando la pregunta de como desplazarse lo pueden hacer mediante un objeto llamado
CurrencyManager el cual se asocia con un datatable o un DataView de un Dataset el cual inlcuye la propiedad de
Position que puede ser usada para navegar a través de los registros.
Les mando un ejemplo que hice utilizando un cuadro de texto, y boton llamado btnMoveNext, otro llamado btnMoveFirst, btnMovePrevious y btnMoveLast, el cual tambien utilicé la BD Nothwind de SQl Server, y lo que se muestra es en el cuadro de texto el campo
CompanyName de la tabla
Customers , y mediante los botones estar navegando.
El código sería algo como esto:
Declaran de manera global (mismo form) lo siguiente:
Cita: Dim oConn As New SqlClient.SqlConnection("ponga su cadena de conexion para la base de datos Northwind"
)
Dim dAdap As New SqlClient.SqlDataAdapter("select * from customers", oConn)
Private cmCustomers As
CurrencyManager y posteriormente:
Cita: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ds As New DataSet
dAdap.Fill(ds) 'Lleno mi dataset
Dim dtCUstomers As New DataTable
dtCUstomers = ds.Tables(0) 'le asigno el Dataset a un datatable
txtCompanyName.DataBindings.Add( _
"Text", dtCUstomers , "CompanyName")
cmCustomers = CType(Me.BindingContext( _
dtCUstomers), CurrencyManager )
cmCustomers.Position = 0
End Sub
Private Sub btnMoveLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMoveLast.Click
cmCustomers.Position = cmCustomers.Count - 1
End Sub
Private Sub btnMoveNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMoveNext .Click
If cmCustomers.Position <> cmCustomers.Count - 1 Then
cmCustomers.Position += 1
End If
End Sub
Private Sub btnMoveFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMoveFirst .Click
cmCustomers.Position = 0
End Sub
Private Sub btnMovePrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovePrevious .Click
If cmCustomers.Position <> 0 Then
cmCustomers.Position -= 1
End If
End Sub
Ya lo demas depende de su imaginación y lo que podría hacer con ésto, solo es cosa de jugar con la propiedad position.
Espero que les sirva.. de todas formas cualquier cosa por aqui andamos.
Saludos