FoxPro/Visual FoxPro - CREAR GRID DINAMICO

 
Vista:
sin imagen de perfil
Val: 18
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

CREAR GRID DINAMICO

Publicado por alexcoinc (40 intervenciones) el 23/04/2018 22:17:20
Hola a todos

Necesito ayuda en lo siguiente:

Tengo una tabla y obvio tiene varios campos, ejemplo DOCUMENTO,NOMBRE,APELLIDO,DIRECCION,TELEFONO,PERIODO (EJ. 2017/05)

Lo que quisiera es poder realizar unos filtros para que me muestre en un grid los campos que el
usuario decida.

TEXT1: El usuario decide un DOCUMENTO especifico
TEXT2: El usuario decide un PERIODO especifico
EN UN COMBO: Que el usuario elija EL NOMBRE DE LOS CAMPOS que quiere que se muestren en el grid:
(EJEMPLO: DOCUMENTO, NOMBRE Y PERIODO)

EL RESULTADO SERIA:

DOCUMENTO NOMBRE PERIODO

Luego el usuario podria borrar esta información y podria querer elejir OTRO DOCUMENTO, OTRO PERIODO Y
OTROS CAMPOS (escogiendolos de un combo)

EL RESULTADO SERIA:

NOMBRE APELLIDO TELEFONO

*****************************************************************
Como podria hacerse este tipo creación de un grid

Gracias por sus ideas.


alexcoinc
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

CREAR GRID DINAMICO

Publicado por Mauricio Antonio (1541 intervenciones) el 24/04/2018 11:41:20
Alex, puedes hacerlo de una manera sencilla, crea cada grid que desees y los dejas como no visible, luego cuando elijas el que quieras, lo llenas con datos y lo haces visible, yo lo estoy usando asi, pero solo 2 grids.
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: 18
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

CREAR GRID DINAMICO

Publicado por alexcoinc (40 intervenciones) el 24/04/2018 21:05:19
Buenas tardes

Gracias por contestar.

Tu idea es buena para tablas con pocos campos, pero en mi tabla hay no menos de 120 campos, entonces seria engorroso realizar ese numero de grids...me comprendes? .

Ahora bien,

Referente a tu idea, (y aunque no es descartable), lo que pasa es que mi proposito es que uno pueda estandarizar un GRID con 10 campos, 7 de los cuales siempre serán los mismos, pero tres son elegibles por el usuario y no siempre son los mismos; entonces lo que necesito es saber como porder armar ese GRID y que los tres ultimos campos contengan los campos que el usuario eligio.


Nuevamente, gracias por contestar.

Quedo atento a mas sugerencias.
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

CREAR GRID DINAMICO

Publicado por Fidel José (657 intervenciones) el 25/04/2018 12:37:06
Tienes, cuando menos, cuatro modos de conseguir eso:
1) General. Con una clase grid, que contenga un método que recibe los parámetros necesarios para crear todo el grid.
2) Formulario. Con un método en el formulario que recibe los parámetros necesarios para crear todo el grid.
3) Reasignando el ControlSource de la columna que corresponda (y su header1, su width, etc) de acuerdo a lo que se seleccione en el combo.)
4) Recurriendo a DynamicCurrentControl. Para el caso puede resultar pesado y aparatoso, aunque es posible.

Para los casos 1) y 2) los parámetros pueden estar contenidos en un objeto (nombre del cursor, lista de campos, lista de headers, ancho de campos, alignments, etc.)
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
Imágen de perfil de Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

CREAR GRID DINAMICO

Publicado por Abel (286 intervenciones) el 25/04/2018 16:03:26
Para cumplir con las opciones 1 y 2; de Filtrar en el Grid según criterios de Nro de Documento y Periodo, podrías (por ejemplo) crear un botón de acción que al presionarlo tome los valores ingresados en los campos de texto (que llamas TEXT1 y TEXT2); además, Para ésta opción que te indico el RecordSourceType del Grid debe estar ajustado en "4 - SQL Statement".

Entonces cuando presionasel botón de acción este tendrá en el método clic lo siguiente...

** Con ésto cumplirias con las opciones 1 y 2.
1
2
3
4
5
Local cDocumento, cPeriodo
cDocumento = Alltrim(Thisform.Text1.Value)
cPeriodo = Alltrim(Thisform.Text2.Value)
cFiltro = "'"+cDocumento+"'$Documento AND '"+cPeriodo+"'$Periodo"
Thisform.grid1.RecordSource = "SELECT * FROM <ElNombreDeTuTabla> WHERE "+cFiltro+" into cursor csrMitabla"

** Con aquello de ocultar campos del Grid, solo debes usar la opción Visible; es decir que si quieres ocultar columnas del Grid, por ejemplo 2, 3 y 5 harías lo siguiente...
1
2
3
thisform.grid1.column2.Visible = .f.
thisform.grid1.column3.Visible = .f.
thisform.grid1.column5.Visible = .f.

Es la idea general, te dejo a ti el desarrollo del mejor método. Exitos.
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: 18
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

CREAR GRID DINAMICO

Publicado por alexcoinc (40 intervenciones) el 26/04/2018 15:53:15
Buenos dias

De antemano a los compañeros que responden y aportan soluciones.

Referente al comentario de Abel y de Fidel JOse, les aclaro que no se quiere realizar una consulta para crear un cursor o una tabla, loq eu pretendo es armar un GRID APUNTANDO AL ALIAS DE LA TABLA , esto con el fin de que los cambios que se hagan en esos campos que el usuario escogio queden de una vez en la tabla, por ello no tendre un boton para actualizar desde un CURSOR HACIA LA TABLA ORIGINAL, sino que pretendo es que el GRID sea la tabla original pero creada DINAMICAMENTE CON LOO CAMPOS (3 EN NUESTRO EJEMPLO) seleccionados o escogidos por el usuario final.

Por ello la idea del manejo de las consultas creando vistas, cursores o tablas temporales queda descartada.

Se requere es (repito) armar el GRID CON RECORSOURCE AL ALIAS DE LA TABLA, pero mostrando ciertos campos, algunos de los caules seran escogidos por el usuario.

Me parecio pertienente realizar esta aclaración.

Mil Gracias y quedo atento.

Otra vez G R A C I A S.
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

CREAR GRID DINAMICO

Publicado por Fidel José (657 intervenciones) el 26/04/2018 22:27:49
Un control grid puede mostrar una tabla o un cursor. Da lo mismo. El tema es que tengas un método que asigne los controlSource de cada columna que quieres mostrar.
Este sería un ejemplo muy abreviado:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
lcListColumn = "Fecha,Documen,Importe,Asiento,Creador"
Get_Grid(thisform.Grid1,"MiTabla",m.lcListColumn)
 
 
PROCEDURE get_Grid
LPARAMETERS toGrid,tcCursor,tclistColumn
LOCAL i,lnLines, lnCols
LOCAL ARRAY lacolumns(1)
lnCols = ALINES(laColumn,tcListColumn,1+4,CHR(44))
WITH toGrid
        .ColumnCount = -1
	.RecordSource = m.tcCursor
	.columnCount = m.lnCols
	FOR i = 1 TO m.lnCols
		.Columns(i).ControlSource = m.tcCursor+"."+laColumn[i]
	NEXT
ENDWITH
Por supuesto, puedes agregar los Header, los ancho de columna, la alineación y el tipo de dato para crear también los objetos necesarios (checkbox, combobox, editbox, etc)

Obviamente no debes poner código en los text1 de los objetos columns, porque las columnas desaparecerán junto con su código. De ser necesario, se debe determinar si conviene crear los correspondientes objetos de clase o trabajar con BindEvent()
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
Imágen de perfil de Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

CREAR GRID DINAMICO

Publicado por Abel (286 intervenciones) el 27/04/2018 15:15:34
En ese caso Alex, lo único que cambiarias sería la primera parte...

1
2
3
4
5
6
7
Local cDocumento, cPeriodo
cDocumento = Alltrim(Thisform.Text1.Value)
cPeriodo = Alltrim(Thisform.Text2.Value)
cFiltro = "'"+cDocumento+"'$Documento AND '"+cPeriodo+"'$Periodo"
Select <NombreDeTuTabla>
Set Filter To &cFiltro
Thisform.Refresh()

El resto todo igual. No fué mi primera opción por que no me gusta mucho abrir toda la tabla y filtrarla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 115
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

CREAR GRID DINAMICO

Publicado por Luis (42 intervenciones) el 21/06/2019 16:45:42
Acá les dejo toda la información que necesitan para crear un Grid dinámico con visual foxpro. Espero les guste.

Link de Descarga :https://www.mediafire.com/file/nau1khhot12hkcp/Grid_Dinamico.rar/file
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