Dudas sobre ADO y Visual Basic 6.0

Me gustaría saber como puedo enlazar datos desde una "*.mdb" a un control datagrid para que pueda ver los datos en forma de tabla tal y como están en la bb. Dd. Lo he hecho con controles ADODC y me funciona pero me gustaría saber si también lo puedo hacer con ADODB en un datagrid o si no es así, con que otro control que no sea un datagrid (si existe).
Mi problema es que necesito hacer para un proyecto de la universidad, varias consultas a diferentes tablas de una bb. Dd. Y necesito que me salgan, según la consulta, los datos en el mismo control Datagrid, pero no lo consigo y me estoy volviendo loco. Si fuera tan amable de echarme una mano se lo agradecería mucho.

4 respuestas

Respuesta
1
Se puede hacer, solo que debes agregar al proyecto un DataEnvironment (entorno de datos).
Este entorno lo encuentras en el menu PROYECTO... agregar DataEnvironment.
A este entorno lo asocias a la base de datos y luego creas comandos (Command1, 2, etc, no confundir con el botón de comandos), y cada uno de esos los asocias a cada una de las tablas.
Esto te crea un RecordSet para cada comando que puedes utilizar en el código, al cual debes cerrar el recordset y abrir el nuevo para que el mismo control DATAGRID pueda funcionar con todos. Esto es:
DataEnvironment1. RsCommand1. Close
DataEnvironment1. RsCommand1. Open
Refrescas el DataGrid y listo
Respuesta
1
Es posible, claro que es posible.
Yo enlazo a la BD de la siguiente forma:
Creo 1 ADODB. Connection por BD y tantos ADODB. Recordset como tablas y/o consultas quiera manejar.
Dim cn as ADODB.Connection
Dim rs as ADODB.Recordset
Form_Load
Set cn = New ADODB.Connection
'El enlace a la BD lo hago con ODBC
cn.ConnectionString = "DSN=FuenteDeDatosODBC"
cn.open
Set rs = New ADODB.Recordset
rs.Activeconection=cn
rs.LockType=Depende de lo que necesites
rs.
rs.source="SELECT * FROM Clientes"
'o rs.source="SELECT * FROM Clientes WHERE Poblacion ='Isla Perejil'" o cualquier consulta SQL
rs.open
Puede que se me pase algo...
Si quieres saber más de ADO pasate por:
http://support.microsoft.com/default.aspx?scid=kb;es;e168336
Una vez tengas los datos en el recordset puedes asignarlos al Datagrid:
set Datagrid.datasource = rs
y ya ta.
Todo lo que me dices lo hago pero no me sale nada en el Datagrid (sale en blanco).
Mi código es:
Option Explicit
Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
Private Sub Form_Load()
Set CN = New ADODB.Connection
CN.Provider = "Microsoft.Jet.OLEDB.4.0"
CN.ConnectionString = "E:\UPSAM\VISUAL\PROYECTO\VIDEOCLUB.MDB"
CN.Open
Set RS = New ADODB.Recordset
RS.ActiveConnection = CN
RS.LockType = adLockOptimistic
RS.CursorType = adOpenKeyset
RS.Source = "Select * FROM peliculas WHERE año<=2000 ORDER By nombre DESC"
RS.Open
Set DataGrid1.DataSource = RS
DataGrid1.Refresh
End Sub
----------------------------------
A lo mejor es que hay que hacer algo con el datagrid en tiempo de diseño, es decir, ¿alguna propiedad como "datasource"(aunque lo hagas también en el código)?
O a lo mejor es que la consulta SQL esta mal redactada...(los nombres de los campos y el de la tabla 'peliculas' están bien porque los he repasado ya 1000 veces, ¿así cómo el tipo numérico del campo 'Año')?, no se...
Las referencias a "Microsoft Data Objects Library y Recordset" también están incluidas en el proyecto...
Heeeelppp meeeeeeee!
Todo está bien.
¿Cuál es problema exactamente?
¿El grid se queda en blanco? ¿El rs tiene registros y no se muestra ninguno?
¿Te da un error?
El problema es que no me da ningún error pero el grid sale en blanco y no lo entiendo. ¿Será qué hay que utilizar también la propiedad del DataGrid "datamember"?
Siento no poder ayudarte pero no se me ocurre nada, todo está correcto y debería funcionar.
Se que no es una solución, lo siento.
Respuesta
-1
Ok tu pregunta es algo sencilla de contestar. Con el Microsoft DataGrid Control 6.0 integrado en el Visual Basic 6.0 si se puede y la forma es sencilla, solo tienes que establecer que todo lo que pase al recordset le pase al grid.
Set DataGrid1.Source =Recordset
Es muy sencillo
Suerte
Respuesta
-1
Algo que hay que aclarar primero: ADODC (ADO Data Control) es un ActiveX que justamente lo que te permite es la facilidad de operar con ADODB, ahora bien, para hacer lo que tu necesitas, la forma más fácil será que cambies la propiedad source del ADODC a la consulta que tu necesites y luego abras nuevamente el recordset del ADODC; quedaría algo así:
'Con este boton cambiarías el contenido del Recordset y automáticamente se actualizaría el DataGrid
Private Sub Button1_Click()
With ADODC1.Recordset
.Close
.Source="Tu Nueve Consulta SQL"
.Open
End With
End Sub
Si tienes dudas avisame!
Con el control ADODC lo se hacer.Mi pregunta era si es posible hacer lo mismo mediante código con un CON (ADODB.Connection) y un RS (ADODB. Recordset), ademas de un control Datagrid.Yo lo he intentado de esta manera pero nada:
Option Explicit
Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
Private Sub Form_Load()
Set CN = New ADODB.Connection
CN.Provider = "Microsoft.Jet.OLEDB.4.0"
CN.ConnectionString = "E:\UPSAM\VISUAL\PROYECTO\VIDEOCLUB.MDB"
CN.Open
Set RS = New ADODB.Recordset
RS.ActiveConnection = CN
RS.LockType = adLockOptimistic
RS.CursorType = adOpenKeyset
RS.Source = "Select * FROM peliculas WHERE año<=2000 ORDER By nombre DESC"
RS.Open
Set DataGrid1.DataSource = RS
DataGrid1.Refresh
End Sub
Heeelpppppp meeeeee!
La verdad es que la grilla que estas utilizando no es muy buena que se diga.
Te recomendaría para trabajar como tu quieres (que es la mejor forma de hacerlo) que utilices otra grilla ya sea de FarPoint (www.fpoint.com) o de ComponentOne (www.componentone.com) en cualquiera de estos dos casos están preparadas para lo que tu buscas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas