Carga de registros en DataGrid

^Neo^
15 de Mayo del 2004
Bueno, el problema es el siguiente: tengo una funcion que me carga los registros de un recordset en un DataGrid, pero no funciona correctamente. La primera vez que se la llama, funciona perfectamente. El problema es cada vez que se la llama despues de esta primera carga, por ejemplo para un borrado, modificacion o añadido de un registro. Bueno, pues resulta que cuando no es la primera vez, me hace desaparecer 11 columnas de 13 y me deja solo 2 (obviamente) y completamente vacias. A Continuacion intento coger los datos de los registros del datagrid, columna a columna, pero claro, cuando llega al subindice 2 me da un error de variable fuera de intervalo, ya que el datagrid actualmente solo tiene 2 columnas. No se si me estoy expresando bien... bueno, les dejo aqui la funcion a ver si me podeis ayudar:

Public Sub MudarListaInformes(ByVal codigo As String)
SSql = "SELECT * FROM InformeDia WHERE CodTec LIKE '" & codigo & "' ORDER BY Fecha"
CierraInforme

With frmAcceso
.InformeDia.Source = SSql
.InformeDia.CursorLocation = adUseClient
.InformeDia.Open SSql, .Informes ', adOpenStatic

' Se non hai informes para ese técnico avisamos e ocultamos o datagrid
If .InformeDia.BOF = True And .InformeDia.EOF = True Then
frmAdmin.DGListas.Visible = False
Exit Sub
End If

' Se hai informes visualizamos o datagrid
frmAdmin.DGListas.Visible = True

Set frmAdmin.DGListas.DataSource = .InformeDia
frmAdmin.DGListas.Refresh
End With
End Sub

rigel07
15 de Mayo del 2004
hola NEO
mira no soy un experto en vb, pero si lo que quieres es cargar registros en un grid porque no lo haces en el evento load del formulario o desde el evento click de un boton ? para mi seria mas facil que lo que piensas hacer con la funcion que pones tu, si quieres codigo para llenar un grid con sql mandame un mail a [email protected]

^Neo^
15 de Mayo del 2004
Hola rigel. El problema es que el datagrid no sólo lo lleno, si no que también lo actualizo. A ver, me explico, he de cargar el formulario y actualizarlo en varios puntos del programa, que responden a eventos Click de botones para Añadir, Modificar y Borrar registros, así como en el evento click de un combo box, cada vez que se selecciona un item. Entonces llamo a esa función y esta debería realizar ese trabajo, en vez de escribir ese mismo código en cada evento. Bueno, muchas gracias rigel, y si se te ocurre alguna otra cosa me lo haces saber? Saludos,

^Neo^

Adrian
15 de Mayo del 2004
Hola neo
En tu codigo no veo donde cierres tu recordset,
rsTemp.Close
Set rsTemp = Nothing

saludos

Bartolom
15 de Mayo del 2004
Qué tipo de control es InformeDia ? Si es un ADO, la solución es muy simple.

InformeDia.Recordsource= "SELECT * FROM InformeDia WHERE CodTec LIKE '" & codigo & "' ORDER BY Fecha"
InformeDia.Refresh
Se Set frmAdmin.DGListas.DataSource = InformeDia

Así cada vez que se actualice el control ADO, los cambios se reflejarán automáticamente en el DataGrid.

Lo otro, en tu sentencia Set frmAdmin.DGListas.DataSource = .InformeDia ,según yo no debería ir ese .InformeDia, si no que InformeDia, sin el punto.

Saludos!
Bartolom
Chile