FoxPro/Visual FoxPro - El Grid Pierde el registro..

 
Vista:

El Grid Pierde el registro..

Publicado por Carlos Restrepo (20 intervenciones) el 01/08/2007 22:39:07
Buenas Tardes Ingenieros

Una pregunta, resulta que trabajo con vfp 8 y sql server 2005, ahora bien, tengo un formulario con un grid, el cual contiene el resultado de una consulta, que se encuentra en un cursor, el asunto es que a medida que el usuario cambia de columna, el grid indexa el cursor por esa columna, hasta ahi todo va super bien y funciona perfecto.

El problema es que yo localizo el registro que necesito exactamente y cambio de columna cuando lo hago, lo cual ocasiona que se cree un nuevo indice, pero no se por que si ya he encontrao el registro necesario, cuando cambio de columna y creo el nuevo indice, se pierde el registro en cuestion, quedando en la celda donde estaba parado, pero no en el registro.

Necesito que en el grid su pueda hacer el mismo efecto de estar sobre una tabla, que al estar parado sobre un regostro, no importa cual indice active, el siempre estara en el mismo registro, asi que en el grid es necesario que el cursor se desplaze hasta la posicion donde aparece el registro seleccionado, no importa cual indice esta activo.

Espero haberme hecho entender.

Cordialmente

Carlos Restrepo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:El Grid Pierde el registro..

Publicado por Ernesto Hernandez (4623 intervenciones) el 02/08/2007 01:02:04
cuando cambio de columna y creo el nuevo indice, se pierde el registro en cuestion, quedando en la celda donde estaba parado, pero no en el registro.

guarda el numero del registro en curso en una variable y despues de activar el indice que desees regresas al registro guardado con un

GO RecNo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El Grid Pierde el registro..

Publicado por Plinio (7841 intervenciones) el 02/08/2007 14:03:08
Tienes algún código dentro de uno de los eventos del grid?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El Grid Pierde el registro..

Publicado por Carlos Restrepo (20 intervenciones) el 02/08/2007 15:07:04
Si, si tengo codigo dentro de los eventos beforerowcolchange y afterrowcolchange

en el afterrowcolchange esta este codigo
LPARAMETERS nColIndex

IF THISFORM.nkeypress!=13 &&AND THISFORM.nkeypress!=3 AND THISFORM.nkeypress!=4 AND THISFORM.nkeypress!=5 AND THISFORM.nkeypress!=24
THISFORM.columnindex=nColIndex
SELECT CURGENERAL
IX="ix"+FIELD(THISFORM.columnindex)
IX=SUBSTR(IX,1,10)
IF TAGEXISTS_SQL(IX,"CURGENERAL")=.F.
THISFORM.createindex
ENDIF

SET ORDER TO (IX)

THISFORM.REFRESH()

ENDIF

*!* IF THISFORM.nkeypress=3 OR THISFORM.nkeypress=4 OR THISFORM.nkeypress=5 OR THISFORM.nkeypress=24
*!* IF THISFORM.RECNO!=0
*!* GO THISFORM.RECNO
*!* ENDIF
*!* ENDIF

IF THISFORM.nkeypress=13
THISFORM.strfind=""
ENDIF

en el beforerowcolchange esta este codigo

LPARAMETERS nColIndex
=DODEFAULT(nColIndex)

YA HABIA HECHO LO QUE ME DICE ERNESTO HERNANDEZ, PERO ESO CAUSA QUE DESPUES EL USUARIO NO PUEDA AVANZAR SOBRE UNA MISMA COLUMNA POR QUE SIEMPRE LO LLEVA AL MISMO RESGISTRO, POR ESO DECIR QUE NECESITO LA MISMA FUNCIONALIDAD QUE TIENE UNA TABLA CUANDO SE INDEXA Y QUE EL PUNTERO NO PIERDE EL REGISTRO.

Carlos Restrepo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El Grid Pierde el registro..

Publicado por Plinio (7841 intervenciones) el 02/08/2007 15:15:20
Que tal
LPARAMETERS nColIndex
local xposicion
IF THISFORM.nkeypress!=13 &&AND THISFORM.nkeypress!=3 AND THISFORM.nkeypress!=4 AND THISFORM.nkeypress!=5 AND THISFORM.nkeypress!=24
THISFORM.columnindex=nColIndex
SELECT CURGENERAL
xposicion = RECNO() &&&PLINIO
IX="ix"+FIELD(THISFORM.columnindex)
IX=SUBSTR(IX,1,10)
IF TAGEXISTS_SQL(IX,"CURGENERAL")=.F.
THISFORM.createindex
ENDIF

SET ORDER TO (IX)

THISFORM.REFRESH()

ENDIF
GOTO xposicion &&&PLINIO

*!* IF THISFORM.nkeypress=3 OR THISFORM.nkeypress=4 OR THISFORM.nkeypress=5 OR THISFORM.nkeypress=24
*!* IF THISFORM.RECNO!=0
*!* GO THISFORM.RECNO
*!* ENDIF
*!* ENDIF

IF THISFORM.nkeypress=13
THISFORM.strfind=""
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muchas Gracias Plinio y Ernesto

Publicado por Carlos Restrepo (20 intervenciones) el 02/08/2007 15:23:17
Ingenieros,

Muchisimas gracias por sus prontas y efectivas respuestas, gracias a ustedes ya solucione el problema.

Carlos Restrepo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Muchas Gracias Plinio y Ernesto

Publicado por Ernesto Hernandez (4623 intervenciones) el 02/08/2007 15:46:48
:-) me da gusto que se haya solucionado

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Muchas Gracias Plinio y Ernesto

Publicado por Ernesto Hernandez (4623 intervenciones) el 02/08/2007 15:46:48
:-) me da gusto que se haya solucionado

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar