Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Necesito un ejemplo para recorrer un conjunto de registros en ADO.NET.

3,803 views
Skip to first unread message

Renee

unread,
Feb 17, 2008, 2:07:15 PM2/17/08
to
Hola.

Estoy investigando este nuevo modelo de datos de Visual Basic 2005. Es muy
común que en nuestras aplicaciones recuperemos datos, recorremos registro a
registro, hagamos procesos de actualización y luego cerramos el Recordset.
Mi pregunta es qué objetos y en que forma se hace esto en ADO.NET.?

Para copiar de una tabla a otra en Ado era algo así:


Sub Copia
dim rs1 as adodb.recordset
dim rs2 as adodb.recordset

set rs2 = New Adodb.Recordset
rs2.open "SELECT * FROM SOCIOS",cnn,adOpenDynamic,adLockOptimistic,adCmdText

set rs1 = cnn.Execute("SELECT * FROM SOCIOS")
Do while not (rs.eof or rs.bof)
rs2!numero = rs1!numero
rs2!nombre = rs1!nombre
rs2.Update
rs1.MoveNext
loop
rs1.close
rs2.close
set rs2=nothing
set rs1=nothing
End Sub

Como ven es un ejemplo sencillo y tan solo ilustrativo de lo que quiero
lograr. Me diran que hay otras formas mejores de copiar registros de una
tabla a otra y estoy de acuerdo. Pero el objetivo aquí es saber como
recorrer y actualizar registros, independiente de la eficiencia.


Gracia.

Reneé.vcf

SoftJaén

unread,
Feb 17, 2008, 2:35:13 PM2/17/08
to
"Renee" escribió:

> Estoy investigando este nuevo modelo de datos de Visual Basic 2005. Es muy
> común que en nuestras aplicaciones recuperemos datos, recorremos registro
> a registro, hagamos procesos de actualización y luego cerramos el
> Recordset.
> Mi pregunta es qué objetos y en que forma se hace esto en ADO.NET.?

En ADO .NET no hay objetos Recordset ni nada que se le parezca. Como te
indiqué ayer, lo más parecido es un objeto DataTable en cuanto que éste
contiene un conjunto de datos con la clásica estructura de una tabla,
representados por las colecciones «Columns» (columnas) y «Rows» (filas).
Pero ahí se acaba la comparación.

El siguiente ejemplo utiliza el modelo desconectado de ADO .NET para abrir
una base de datos Access, y crea un objeto DataTable como resultado de
ejecutar una consulta SQL de selección que recupera todos los registros
existentes en una tabla. Luego copia los datos en otro objeto DataTable,
para finalizar recorriendo todas las filas existentes en éste último objeto:

' Condiguramos la conexión con una base de datos de Access.
Dim cnn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Bd1.mdb")

' Construimos la consulta SQL de selección
Dim sql As String = "SELECT * FROM Socios"

' Creamos un adaptador de datos
Dim da As New OleDbDataAdapter(sql, cnn)

' Creamos un nuevo objeto DataTable
Dim rs1 As New DataTable("Socios")

' Rellenamos el objeto DataTable
da.Fill(rs1)

' Lo copiamos en otro objeto DataTable
Dim rs2 As DataTable = rs1.Copy

' Mostramos los datos en un control DataGridView
Me.DataGridView1.DataSource = rs2

' Recorremos todas las filas existentes en el objeto DataTable
For Each row As DataRow In rs2.Rows
' Mostramos el nombre del primero campo
Dim value As Object = row.Item("Nombre")
MessageBox.Show(value.ToString)
Next

También puedes utilizar el modelo conectado de ADO .NET para recuperar un
conjunto de datos mediante un objeto DataReader, y recorrer una a una sus
filas, siempre hacia delante:

' Configuramos el comando
Dim cmd As New OleDbCommand(sql, cnn)

' Abrimos la conexión
cnn.Open()

' Abrimos el objeto DataReader, indicando que
' se cierre la conexión cuando cerremos el objeto
Dim dr As OleDbDataReader = _
cmd.ExecuteReader(CommandBehavior.CloseConnection)

' Si hay filas leemos los registros hasta el final
If dr.HasRows Then
Do While dr.Read
' Leemos el valor del segundo campo, que se
' supone es alfanumérico.
MessageBox.Show(dr.GetString(1))
Loop
End If

' Cerramos el lector de datos y la conexión
dr.Close()

Mejor será que abras la ayuda de Visual Studio y busques temas relacionados
con el acceso a datos con ADO .NET. También te vendrá bien revisar la ayuda
sobre los objetos que te he mencionado.


--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Renee

unread,
Feb 17, 2008, 3:55:01 PM2/17/08
to
gracias.

"SoftJaén" <grupo_n...@softjaen.es> escribió en el mensaje
news:0EC1C7DC-4B81-48FB...@microsoft.com...

roland...@gmail.com

unread,
Mar 22, 2017, 2:38:40 PM3/22/17
to
Un ejemplo bien explicadito. Masticado solo para digerirlo. Gracias
0 new messages