Autor Tema: Cargar Recordset en FlexGrid  (Leído 1837 veces)

0 Usuarios y 1 Visitante están viendo este tema.

AxioUK

  • Megabyte
  • ***
  • Mensajes: 108
  • Reputación: +17/-1
  • Modulos GSL
    • Ver Perfil
Cargar Recordset en FlexGrid
« en: Agosto 31, 2015, 12:04:43 am »
Estimados
   Estoy algo liado con esto, en Access funciona pero en VB6 no, expongo:
Tengo 2 MSFlexGrid, en el primero tomo de una columna un dato para hacer una Consulta a una DB, pero necesito que los datos retornados se ordenen en la misma fila del segundo Grid, cuando hago la consulta uno a uno en Access retorna los datos como corresponden, pero en VB6 me carga solo el primero y luego me dice "No se encontro el elemento que corresponde al nombre u ordinal solicitado"...

Este es mi código:

Código: (VB) [Seleccionar]
For iRow = 1 To Fgrid1.Rows - 1
  SQLString = "SELECT FECHACAL FROM CALIBRED WHERE EQUIPO=" & Fgrid1.TextMatrix(iRow, 0) & ";"
 
  Rst.Open SQLString, Cnn, adOpenStatic, adLockReadOnly
  Debug.Print Rst.RecordCount
  For iCol = 0 To Rst.RecordCount - 1
    Fgrid2.TextMatrix(iRow, iCol) = Rst(iCol)
  Next iCol
  Rst.Close
Next iRow

Así debiera quedar, pero sale el error:



En Google indica que error pudiera pasar por perdida de referencias o error de nombres de campo en la consulta, pero no es ningun de esos casos; Si pongo un "On Error Resume..." me carga solo el primer registro de cada consulta; A los más entendidos en trabajar con Bases de datos y FlexGrid les agradecería su observación...

Saludos Cordiales
« última modificación: Agosto 31, 2015, 12:09:11 am por AxioUK »

_____________________________
Sé un poco de todo y mucho de nada... ;)

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Cargar Recordset en FlexGrid
« Respuesta #1 en: Agosto 31, 2015, 11:54:30 am »
Hola doc, un par de cosillas:
1.- EL MSFlexGrid es un control enlazable a datos y podría volcarse el resultado con una sola linea sin recorrer el recordset, sin embargo no capto tus intenciones al decir "se ordenen en la misma fila del segundo Grid..", ademas que dada la foto que nos muestras en lo personal no usaría dos grids porque los usuarios pueden scrollear individualmente y ocasionarse un error de interpretación al no estar correctamente posicionados. En esos casos uso un solo grid y dejo una de las columnas vacías donde encima le pongo un picture para "simular" que son dos espacios (2 grids) y por tanto si scrollea pues lo hace en uno solo. Es solo una sugerencia que podrias aplica o no dependiendo de tus intenciones porque claro tambien se complica en el sentido de que quieres trasponer el segundo query.
2.- Nunca tuve necesidad de enviar el ; final de tu consulta sql, pero bueno si eso no ocasiona error no problem.
--

Y bueno el problema esta (creo yo) que no recorres el recordset, o sea, despues de esto:
Fgrid2.TextMatrix(iRow, iCol) = Rst(iCol)
falta poner esto:
Rst.Movenext

Para que el recordset se entere de que tiene que ser recorrido.

Osea, el for interno debe quedar asi:

Código: (VB) [Seleccionar]
  For iCol = 0 To Rst.RecordCount - 1
    Fgrid2.TextMatrix(iRow, iCol) = Rst(iCol)
    Rst.Movenext
  Next iCol

SAludos


« última modificación: Agosto 31, 2015, 11:56:55 am por YAcosta »
Me encuentras en YAcosta.com

AxioUK

  • Megabyte
  • ***
  • Mensajes: 108
  • Reputación: +17/-1
  • Modulos GSL
    • Ver Perfil
Re:Cargar Recordset en FlexGrid
« Respuesta #2 en: Agosto 31, 2015, 08:45:02 pm »
Estimado Yacosta:
Gracias por tus observaciones, pero tengo una duda:
- No se supone que si dentro de un FOR..(iCol)..NEXT pongo =RST(iCol) al variar el Valor de iCol debe ir recorriendo el Recordset?

- Los Grids en Cuestión son un userControl que me he creado a partir del kFlexGrid (MSFlexgrid) de RecursosVB, scrollean verticalmente a la par, permite edición con controles (combobox, listbox, textbox, botón), permiten cargar directamente e independientemente cada Grid e incluso los controles contenidos desde una Db o un Recorset; algunas otras cosillas como sumar, restar, promediar columa o fila, exportar a un excel o un html...

CORREGIDO-------------------------------------------

Hoy yá mas despejado, caí en cuenta que como la consulta retorna sólo un Campo debiera ser:

Código: (VB) [Seleccionar]
For iCol = 0 To Rst.RecordCount - 1
    Fgrid2.TextMatrix(iRow, iCol) = Rst.Fields(0).value
    Rst.Movenext
  Next iCol

y funcionó

Gracias Master Yacosta
« última modificación: Agosto 31, 2015, 08:49:30 pm por AxioUK »

_____________________________
Sé un poco de todo y mucho de nada... ;)