Problemas con datagrid

Diego
22 de Noviembre del 2005
Tengo un recordset con informacion, pero al asignar al data grid no me aparece nada, me podrian ayudar, estoy utilizando el siguiente codigo para signar los datos del rs al grid: set datagrid1.datasource = rs
Talvez sera mejor con flexgrid, o tendra que ver con el rs el rs lo tengo declarado asi:

rs.open "select...........",cn,adopenstatic,adlockreadonly,-1
Muchas gracias a quine me entienda.

Jandro
22 de Noviembre del 2005
yo he tratado bastante con el datagrid y es una mierda. lo que debes hacer el poner el open a keyset y te dejara.

suerte

Torru
22 de Noviembre del 2005
Yo estoy trabajando con un datagrid,lo que tienes que haces es insertar un control adodc y luego en la pagina de propiedades del datagrid en recordsource poner el nombre dl control adodc.

Luego puedes ir asignándole distintas consultas al control y te aparecerán en la tabla.

Las consultas en SQL se las asignas al control adodc de la forma:

consultaEX = "SELECT * From Documentos WHERE Tipo='EX';"
Controladodc.RecordSource = consultaEX
Controladodc.Refresh

Sir Antilope
22 de Noviembre del 2005
integré todo lo que ví en este foro sobre el problema que todos tuvimos ;)... así que, en un formulario con un control Datagrid1, y un Command1, el código del formulario es el siguiente:

Option Explicit
Private Sub Command1_Click()
If db.State = adStateOpen Then
db.Close
End If
db.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & App.Path & "emp01.mdb", , ""
If rs.State = adStateOpen Then
rs.Close
End If
rs.ActiveConnection = db
rs.CursorType = adOpenStatic
rs.Open "SELECT idmovinv FROM [movinv];"
If rs.RecordCount = 0 Then
rs.Close
Else
Set DataGrid1.DataSource = rs
DataGrid1.ReBind
End If

End Sub


funciona a la perfección.... cuestión de adaptarlo a la base de datos de cada quién.... pero aún tengo un problema (por lo cual caí a este foro)...

PUEDE ALGUIEN DECIRME POR QUÉ CARAJOS AL ABRIR UNA TABLA EN ACCESS (DESDE ACCESS) ABRE RAPIDISIMO???... Y POR QUÉ AL ABRIRLA CON ESTE CODIGO TARDA MAS DE 5 SEGUNDOS?... MIS PRUEBAS LAS HICE SOBRE UNA TABLA CON 307,200 REGISTROS... POR FAS, CUALQUIER AYUDA O ACLARACION, LA AGRADECERÉ ENORME....:D

patrick
22 de Noviembre del 2005
PRUEBA CON ESTO

sql = "SELECT ...... "
Set rs = New Recordset
rs.CursorLocation = adUseClient
rs.CursorType = adOpenDynamic
rs.LockType = adLockBatchOptimistic
rs.Open sql, cn
Set TUDATAGRID.DataSource = rs

Thabo Loko
22 de Noviembre del 2005
Hola soy de Mexico, me ha servido mucho lo que han escrito aqui, sobre lo del aduserClient fue lo que me arreglo el mismo problema que tienen aqui, sin embargo, me di cuenta que no funciona mi datagrid si le quito el metodo Clone (que sirve para copiar el objeto completo a otro lugar):

' Del Lado del cliente
Tabla.CursorLocation = adUseClient
' Apertura del Recordset
Tabla.Open "Sentencia SQL", Conexion, adOpenDynamic, adLockOptimistic
' Aqui uso el metodo Clone.
Set DataGrid1.DataSource = Tabla.Clone
' Solo si deseas cerrar el recorset (no necesario)
Tabla.Close

Espero que con esto solucionen su problema los que no les funciona el datagrid.

EDGAR
22 de Noviembre del 2005
ya probaste poner antes de rs.open?
rs.CursorLocation = adUserClient???

Andres
22 de Noviembre del 2005
creo que es mejor DataEnvionment


santiago
22 de Noviembre del 2005
solo tienes que definir el tipo de cursor de tipo cliente:
rs.cursorlocation=adusecliente

anonimo
22 de Noviembre del 2005

Hola bueno pues lei tu problema y pues hace poco me paso lo mismo , bueno la verdad es que cheque tu codigo y pues si vi que estaba mal .

Bueno este codigo es el que debes poner para poder poner el recultado del recordset a tu datagrid.

dim rec as new adodb recordset
dim cmd as new command
dim conexion as new adodb connection

Bueno aqui en la parte de conexion supongo que ya sabes como va...


Despues de declarar todo eso lo unico que debes hacer es poner

cmd.activeconnection = conexion (dependiendo la que hayas asignado)

cmd.commandtext= "select * from "tabla" "
cmd.execute
set rec = cmd.execute
Do while not rec.eof
set datagrid1.datasource = rec
rec.movenext
loop

Bueno eso es todo espero q te sirva

fernando valencia
22 de Noviembre del 2005
Hola amigo no se me puedas ayudar etoy desarollando una aplicacion en vb con base de datos sql, ya logramos ejecutar los sp a traves de los formularios, pero no he podido lograr que al ejecutar un sp que me devuelve una consulta en un recordset lo pueda montar una una grid, si em puedes ayudar yo te describo paso a paso lo que estoy haciendo

CESAR LARIOS
22 de Noviembre del 2005
debes usar el siguiente codigo en el evento load o en cualquier otro lado eso depende si quieres usar un boton para actualizar o cargar tu datagrid
o cuando el formulario se carga

dim Cmdsql as string
If rs.State = adStateOpen Then
rs.Close
End If
Cmdsql = " select *" & _
' el & _ es un indicador de cambio de linea
"from Personal "
rs.ActiveConnection = cn
rs.CursorType = adOpenStatic
rs.Open Cmdsql
If rs.RecordCount = 0 Then
rs.Close
Else
Set DataGrid1.DataSource = rs
End If

ekingsb
22 de Noviembre del 2005
Que foro tan garra, todos aquí parecen una bola de principiantes que nomas 'intentan' programar

Francisco
22 de Noviembre del 2005
bueno son muchas las respuestas q te dieron la verdad q si puedes asignar desde un recordset, antes de abrir el recordset has lo siguiente para q te muestre la informacion

rsClientes.CursorLocation = adUseClient
rsClientes.Open SSQL, ConPuntos, adOpenForwardOnly, adLockReadOnly

Set dgFiltro.DataSource = rsClientes

ya como lo se abre o el tipo de bloquero es tu onda pero lo bueno es decir q el cursorlocation es del lado del cliente

espero y te sirva jeje

Ph
22 de Noviembre del 2005
saludos,

estaba con el mismo problema y he probado varias de las soluciones k dais. El caso es que no keria usar ni controles data ni data enviroment, keria hacerlo a pelo, usease a codigo. Pues despues de probar y probar, komo me ha funcionado ha sido metiendo la linea de codigo k nuestro ultimo amigo ha dicho...esta es:

rs.CursorLocation=adUseClient

Por lo tanto, kedaria asi

rs.AciveConnection = cnn
rs.CursorLocation = adUseCLient
rs.open "SELECT * FROM tabla"
set Datagrid1.DataSource = rs

señores, con esas 4 lineas funciona, keria dar muuuuuuchisimas gracias, porque ya me tenia loko esto, me veia utilizando un control data, a los kuales detesto.

un saludete, cuidense

santiago
22 de Noviembre del 2005
debe ponerle antes.

rs.cursorlocation=adusecliente

luego recien hacer tu codigo normal.
este codigo hace que cree un buffer de memoria para alojar los registros en el datagrig

webJose
22 de Noviembre del 2005
Creo que no es datasource lo que usted debe de usar. Creo que la propiedad correcta es Recordsource. Pero podría estar equivocado puesto que no uso el dbgrid para nada (lo detesto!).

claudia
22 de Noviembre del 2005
DBGrid es un control ActiveX que muestra una serie de filas y columnas que representan registros y campos de un objeto Recordset. Cuando asigne a la propiedad DataSource del control DBGrid un control Data, el control DBGrid se llenará automáticamente de datos y se establecerán automáticamente sus encabezados de columna a partir del conjunto de registros del control Data.
Al contrario que la mayoría de los controles enlazados a datos, el control DBGrid le permite ver y modificar varios registros simultáneamente.
FINALMENTE SE UBICA SOBRE EL CONTROL DBGRID Y DE
clic derecho y luego recuperar campos

1
22 de Noviembre del 2005
Probe casi todos los concejos que enviaron y no podia hacer funcionar el datagrig con un record set.
Finalmente con este codigo pude motrar los datos:

Dim strSQL As String

Set DB = New ADODB.Connection

DB.Open "Provider=SQLOLEDB;" & _
"User ID=sa;" & _
"Pwd=;" & _
"Initial Catalog=Sistematica;" & _
"Data Source=(local)"

Set RS = New ADODB.Recordset

strSQL = "Zonas"
RS.Open strSQL, _
DB, _
adOpenStatic, _
adLockOptimistic, _
adCmdTable

Set dgZonas.DataSource = RS

fabian.net
22 de Noviembre del 2005
dataSource está bien para definir el origen del datagrid, lo que está mal es el tipo de objeto con el que lo estabas intentando definir. El correcto es un control adodc o una referencia a un dataenvironment. No un recordset

Ramses
22 de Noviembre del 2005
hola a todos

he leido lo que han escrito y creo que esta bien solo les falta actualizar el datagrid

datagrid1.rebind

espero les sirva adios

GLORIA
22 de Noviembre del 2005
primero defines tu recordset
'defino recordSet
Set adoHorarios = New Recordset

despues
'lleno el recordSet
adoHorarios.Open "Select distinct Inicio from horarios", cnGloria, adOpenDynami, adLockOptimistic

despues
'8 Enlazo el datasource del control de horarios

Set Me.DataGridhorarios.DataSource = adochorarios
si no me equivoco el problema en lo tuyo es que no relacionas el recordset o lo igualas con el datagrid

espero y te pueda ayudar este pequeño ejemplo
saludos
gloria