FoxPro/Visual FoxPro - Seleccionar registro de un grid y cargarlo en un formulario.

 
Vista:
Imágen de perfil de Gonzalo
Val: 2
Ha aumentado su posición en 38 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Seleccionar registro de un grid y cargarlo en un formulario.

Publicado por Gonzalo (1 intervención) el 04/08/2020 00:22:12
Saludos gente, la verdad no tengo mucha idea y estoy armando un pequeño proyecto para registrar miembros.
El tema es que quiero seleccionar un registro de los que me trae la búsqueda al grid y cargarlos en otro formulario...
pero no tengo idea de como hacerlo. Alguien podría tirarme un cable? Desde ya les agradezco un montón!
Anotacion-2020-08-03-191741
Anotacion-2020-08-03-192011
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
Imágen de perfil de Mauricio Antonio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Seleccionar registro de un grid y cargarlo en un formulario.

Publicado por Mauricio Antonio (1541 intervenciones) el 04/08/2020 15:02:23
Tienes identificador unico para tus registros? De ser asi, te recomendaria abrir esta tabla en una nueva ubicacion, luego en el clic de todas las columnas del grid capturar el identificador en una variable, luego llamar el FORM de presentacion de informacion, aca en el init hacer un seek con el identificador capturado a la version 2 de tu tabla. Porque abrir 2 veces la misma tabla? Porque si lo haces sobre una sola tabla, que es la que usas en el grid, cuando regreses de presentar tus datos, habras perdido la informacion 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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Seleccionar registro de un grid y cargarlo en un formulario.

Publicado por Fidel José (657 intervenciones) el 04/08/2020 20:52:55
En parte depende de cómo llamas al formulario que tiene el grid, porque hay muchas alternativas.

1) Que lo llames desde un menú, en cuyo caso la solución puede resultar compleja
2) Que lo llames desde el mismo formulario, en cuyo caso también hay opciones:
2.1) Que el formulario que contiene el grid sea modal y lo llames con la fórmula:
DO FORM (buscador) WITH (parametros) TO (variable devuelta)
2.2) Que el formulario que contiene el grid no sea modal (modeless) en cuyo caso puedes utilizar parámetros de resolución.

Lo más sencillo sería el 2.1)
Para esto tienes que hacer algunas cosas en el formulario que tiene el grid.

1) Agrega una propiedad al formulario en el Init del mismo, con el nombre que prefieras.
* La función que sigue crea una propiedad en el formulario del grid con el nombre ObjDevuelto y su valor es el valor nulo.
ADDPROPERTY(Thisform,"objDevuelto", null )

2) Agrega un botón de selección al formulario (típico botón de Aceptar) con un código como el siguiente:
SELECT (thisform.grid.RecordSource) && selecciona el área del cursor del control grid.
Thisform.ObjDevuelto = Newobject("Empty")
SCATTER NAME thisform.ObjDevuelto
Thisform.Release()

3) En el evento UNLOAD del formulario del grid, debes colocar lo siguiente:
RETURN Thisform.ObjDevuelto

En el formulario de abajo, acomodemos la sentencia, suponiendo que el formulario del grid se llama "buscador", en el evento click del botón que llama, o en un método derivado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
LOCAL loResult as Object
DO WHILE .t.
	DO FORM buscador WITH (parametros) TO loResult
	IF VARTYPE(loResult)#"O"
		EXIT
	ENDIF
 
	* Si loResult es un objeto,
	* será un objeto que contiene tantas propiedades
	* como campos tenga el cursor que lo originó con SCATTER
	* y cada propiedad el mismo nombre que en el cursor y
	* el valor del campo respectivo
 
	* Actualización de interfaz
 
	thisform.txt_Nombre = loResult.Nombre
	thisform.txt_Dni = loResult.Dni
 
	* etc.
 
	EXIT
ENDDO
loresult = null
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