Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/10/2003, 09:33
Avatar de RootK
RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Como utilizar Move First, Next, etc

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
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net