Vengo de Vb6

25/01/2006 - 01:02 por Mariano | Informe spam
Hola a todos. He logrado abrir un Recordset de adodb, pero no puedo
asignarlo a un datagrid como en el VB6.
Soy programador de VB6 y la idea es empezar a usar VB.NET con ADO que lo
conozco mas y no ADO.NET, por lo menos hasta que me habitue con el lenguaje.
Hay alguna forma de asignar un recordset abierto atraves de adodb ?
Agradezco cualquier tipo de información

Saludos a todos

Mariano

Preguntas similare

Leer las respuestas

#1 Leonardo Azpurua [mvp vb]
25/01/2006 - 04:45 | Informe spam
"Mariano" escribió en el mensaje
news:
Hola a todos. He logrado abrir un Recordset de adodb, pero no puedo
asignarlo a un datagrid como en el VB6.
Soy programador de VB6 y la idea es empezar a usar VB.NET con ADO que lo
conozco mas y no ADO.NET, por lo menos hasta que me habitue con el
lenguaje.
Hay alguna forma de asignar un recordset abierto atraves de adodb ?
Agradezco cualquier tipo de información



Hola, Mariano:

Los datagrid de VB.NET están diseñados para usarse con objetos de ADO.NET.

De manera que o usas ADO.NET, o te importas los OCX de VB6 (no lo he
intentado, y creo que no todos se pueden incorporar a proyectos en .NET), y
para eso es mejor quedarse en VB6 :-)

No te recomiendo que te quedes en VB6, sino que si te vas a poner a aprender
VB.NET, lo aprendas como Dios manda: una familiarizacion general con los
controles de Windows Forms (que son bastante diferentes, e incomparablemente
mejores, de lo que teniamos en VB6), ADO.NET (olvida el DataGrid hasta
haberte familiarizado con el modelo de ADO.NET) y luego una revisión de los
millares de clases que incluye la FCL.

Traer recursos de VB6 puede ayudarte si tienes una aplicación que migrar, y
si es posible migrarla gradualmente. De lo contrario, te estarías
familiarizando con un VB.NET severamente lisiado, y la motivación real para
aprender -que es el inmenso potencial de VB.NET en cuanto lenguaje y la
extrema riqueza de posibilidades de la FCL y de ADO.NET- tenderá a
desaparecer.

Tómatelo con calma, no esperes resultados a corto plazo (a mi me tomó seis
meses alcanzar mi actual nivel de "aprendiz competente") y hazte a la idea
de que "VB" delante de .NET representa una cosa totalmente diferente de lo
que representa "VB" delante de 6.

Salud!
Respuesta Responder a este mensaje
#2 SoftJaén
25/01/2006 - 09:27 | Informe spam
"Mariano" escribió:

He logrado abrir un Recordset de adodb, pero no puedo
asignarlo a un datagrid como en el VB6.



Hola, Mariano:

Aunque suscribo totalmente las recomendaciones efectuadas por Leonardo,
existe la posibilidad de visualizar en un control DataGrid de VB .NET, los
datos existentes en un objeto Recordset de ADO, pero no de la misma forma en
la que se hacía en Visual Basic 6.0. Recalco bien lo de «visualizar los
datos», porque que yo sepa es lo único que vas a poder hacer, ver datos, ya
que no vas a poder actualizar el origen de los mismos.

Cuando se lanzó Visual Basic .NET, entiendo que los diseñadores de Microsoft
previeron que muchos desarrolladores de aplicaciones de bases de datos
efectuadas con Visual Basic 6.0, iban a ser reacios a migrar sus
aplicaciones a ADO .NET, de ahí que implementaran la posibilidad para que el
método «Fill» de un adaptador de datos, puediera tomar como argumento un
objeto Recordset de ADO clásico mediante la Interoperabilidad COM, de hecho,
añadieron la biblioteca de ADO en el GAC (Caché de Ensamblados Global), la
cual puedes observarla en la pestaña .NET del cuadro de diálogo «Agregar
referecia», por lo que no es necesario hacer una referencia expresa al
componente COM «Microsoft ActiveX Data Objects 2.x Library».

Bueno, como lo que deseas es saber la manera de mostrar los datos en un
control DataGrid, me dejo de rollos y voy al ejemplo. Una vez que tengas
referenciada la biblioteca de ADO, e insertado en el formulario un control
DataGrid de .NET, ejecuta lo siguiente:

' Declaramos los objetos que vamos a utilizar
'
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ds As New Data.DataSet
Dim da As New Data.OleDb.OleDbDataAdapter

' Configuramos la conexión con la base de datos,
' en éste caso una base de datos Access, cuya
' cadena de conexión sería prácticamente igual
' que si la construyeras con Visual Basic 6.0
'
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Bd1.mdb"

' Todo el proceso lo vamos a incluir en un bloque
' Try ... End Try, para atrapar cualquier excepción
' (error) que se produzca
'
Try
' Abrimos la conexión
cnn.Open()

' Configuramos el objeto Recordset para ejecutar
' una simple consulta SQL de selección
With rst
.CursorType = ADODB.CursorTypeEnum.adOpenStatic
.LockType = ADODB.LockTypeEnum.adLockOptimistic
' Abrimos el objeto Recordset
.Open("SELECT * FROM Clientes", cnn, , , _
ADODB.CommandTypeEnum.adCmdText)
End With

' Utilizamos el objeto Recordset para rellenar
' un objeto DataSet, y crear de ésta manera un
' objeto DataTable llamado "Clientes", que no
' tiene por qué llamarse de igual manera que
' la tabla que deseas abrir. Asimismo el objeto
' Recordset se cerrará automáticamente, por lo que
' no es necesario cerrarlo explícitamente.
'
da.Fill(ds, rst, "Clientes")

' Ahora enlazamos el control DataGrid con el
' conjunto de datos (DataSet)
'
With DataGrid1
.DataSource = ds
.DataMember = "Clientes"
End With

Catch ex As System.Data.OleDb.OleDbException
MessageBox.Show(ex.Errors(0).Message)

Catch ex As Exception
MessageBox.Show(ex.Message)

Finally
' Cerramos la conexión
cnn.Close()
cnn = Nothing

End Try

Vuelvo a insistir que solamente es un ejemplo que demuestra la posibilidad
de ver los datos de un objeto Recordset de ADO clásico. En una aplicación
real desarrollada con VB .NET, no sería recomendable su uso. Mi
recomendación sería que ocuparas tu tiempo en estudiar los objetos de ADO
.NET, en lugar de preocuparte en cómo utilizar un Recordset de ADO en Visual
Basic .NET. Cuanto antes empieces a trabajar directamente con los objetos de
ADO .NET, apreciarás las grandes diferencias existentes entre ambos modelos
de objetos. :-)

Un saludo

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.
Respuesta Responder a este mensaje
#3 Leonardo Azpurua [mvp vb]
25/01/2006 - 14:08 | Informe spam
"SoftJaén" escribió en el mensaje
news:%

Aunque suscribo totalmente las recomendaciones efectuadas por Leonardo,
existe la posibilidad de visualizar en un control DataGrid de VB .NET, los
datos existentes en un objeto Recordset de ADO, pero no de la misma forma
en
la que se hacía en Visual Basic 6.0. Recalco bien lo de «visualizar los
datos», porque que yo sepa es lo único que vas a poder hacer, ver datos,
ya
que no vas a poder actualizar el origen de los mismos.



Hola, Enrique:

Los objetos Dataset y DataAdapter son objetos de ADO.NET (creo). Una vez has
comprendido como usarlos, basta con que agregues Connection y Command
(conceptualmente parecidísimos a sus "ancestros" en ADO con A de ActiveX
¿tienes idea de qué puede significar la "A" de ADO.NET?), para poder
comenzar a usar ADO.NET.

Sin desmerecer tu aporte (cuyo valor intrinseco es indiscutible) creo que su
utilidad es evidente para interactuar con un recordset de ADO desde una
aplicacion en .NET, pero los objetos con los que llenas el Grid son objetos
de ADO.NET.

En términos bizantinos, es la aproximacion mejor argumentada a la cantidad
de angeles que caben en la cabeza de un alfiler. En la practica, no veo uso
para semejante construcción salvo en el caso de que un componente externo
nos devuelva un Recordset de ADO, componente que a su vez tendría serios
problemas para justificar su existencia.

Salud!
Respuesta Responder a este mensaje
#4 Mariano
25/01/2006 - 14:21 | Informe spam
Leonardo/Enrique: Ante todo, les agradezco infinitamente la rpta, y tienen
razón, voy a dedicarme de lleno a ADO.NET.
Como Enrique mencionaba, vengo de VB6 y tambien le he dedicado muchas horas
al empleo de ADO y como usarlo de la mejor forma, entonces me cuesta
bastante dejarlo y meterme con ADO.NET que he leido algunas cosas, y cambia
bastante.

Vuelvo a agradecer sus comentarios y la voluntad de compartir sus
conocimientos.

Un abrazo

Mariano Ferreiro

"Mariano" escribió en el mensaje
news:
Hola a todos. He logrado abrir un Recordset de adodb, pero no puedo
asignarlo a un datagrid como en el VB6.
Soy programador de VB6 y la idea es empezar a usar VB.NET con ADO que lo
conozco mas y no ADO.NET, por lo menos hasta que me habitue con el


lenguaje.
Hay alguna forma de asignar un recordset abierto atraves de adodb ?
Agradezco cualquier tipo de información

Saludos a todos

Mariano


Respuesta Responder a este mensaje
#5 Lluís Franco
25/01/2006 - 15:42 | Informe spam
...a mi me tomó seis meses alcanzar mi actual nivel de "aprendiz


competente"

:-)
Tiene gracia Leonardo,

Si bien hoy en día ya me desenvuelvo muy bien (creo) con .NET, creo que será
muy difícil llegar a alcanzar el nivel de conocimientos que tenía con VB6.
Básicamente es una cuestión de envergadura, ya que si en VB6 podía decir que
conocía un % muy elevado de todo lo que se podía (y NO se podía hacer), así
como las limitaciones "by design" de la herramienta, con .NET hay
"demasiado" terreno para explorar.

Hace aproximadamente un par de años y medio que estoy trabajando con .NET
(versión 2003 y ahora con la 2005) y aunque hay muchas cosas que conozco,
hay muchísimas que desconozco... y creo que me llevará años llegar al nivel
anterior.

Eso si el framework me deja, ya que no se si crece a un ritmo mayor del que
puedo aprender :-S

De todas formas, quiero decir que el Framework es la plataforma para
desarrollar que siempre estuve esperando, y el IDE de VS 2005 es la mejor
herramienta que jamás he visto para desarrollar.

Salud!

Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]

This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho

(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm
FIMARGE, S.A.
Principat d'Andorra

Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profileaa1615-1a2f-4202-bc3f-aec297d967d2
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida