FoxPro/Visual FoxPro - Grid desde tabla

 
Vista:

Grid desde tabla

Publicado por ANTONIO MARTIN (55 intervenciones) el 14/10/2008 18:28:09
Saludos a todos... he creado un grid, definiendo los campos desde una tabla llamada ESTRGRID, e indexada por el campo ORDEN de la siguiente manera:

ORDEN NOMCAMPO ANCHOCAMP MASCARA
01 articulo.codigo 100
02 articulo.nombre 300
03 articulo.pcompra 75 99,999.99
04 articulo.pventa 75 99,999.99

En cualquier formulario inserto un grid en blanco y abrego la tabla ARTICULO y ejecuto una funcion llamada Agrego()

SELECT ESTRGRID
SET ORDER TO 1
GO TOP
THISFORM.GRID1.RECORDSOURCE="ARTICULO"
THISFORM.GRID1.COLUMNCOUNT=RECCOUNT()
FOR I=1 TO RECCOUNT()
COLU="COLUMN"+ALLTRIM(STR(I))
THISFORM.GRID1.&COLU..CONTROLSOURCE=NOMCAMP
THISFORM.GRID1.&COLU..WIDTH=ANCHOCAMP
THISFORM.GRID1.&COLU.INPUTMASK=MASCARA
SKIP
NEXT
RETURN

Lo aanterior me funciona excelente, el problema es cuando agrego a la tabla ESTRGRID un campo que no es de la misma base de datos por ejemplo:

05 departa.nomdepa 200

y agrego al formulario tambien la tabla DEPARTA el ciclo FOR despues de asignar el nombre del campo al CONTROLSOURCE de la columna que le corresponde en la tabla ESTRGRID se brinca a RECCOUNT()+1 con lo cual me marca el error de se ha encontrado el final del archivo.

Trato de hacer esto con la finalidad de que si el cliente quiere cambios en el orden de presentacion de columnas o informaición, no tenga que modificar el programa fuente y hacerlo solo en la tabla ESTRGRID en el negocio del cliente...

Si alguien sabe la razon de porque me hace esto o tiene alguna otra solucion, se los agradecere mucho. De antemano gracias...
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

RE:Grid desde tabla

Publicado por enrique (1041 intervenciones) el 14/10/2008 22:38:04
RECCOUNT() siempre te da el total del archivo, por lo cual no es necesario sumar 1.
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:Grid desde tabla

Publicado por ANTONIO MARTIN (55 intervenciones) el 15/10/2008 07:51:21
Gracias por tu respuesta Entique, pero lo de RECCOUNT()+1 es solo para comentarles que el puntero se mueve a esa posición si haberselo pedido en ninguna parte del programa, tambien puede haber escrito EOF(), pero como lo comento es solo informativo. Gracias...
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:Grid desde tabla

Publicado por enrique (1041 intervenciones) el 15/10/2008 18:01:26
En un grid la unica manera de mostras datos de dos tablas es relacionandolas.

Cuando queres agregar el campo de la otra tabla al grid no lo reconoce porque tenes asignada la tabla ARTICULO al RecordSource 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:Grid desde tabla

Publicado por ANTONIO MARTIN (55 intervenciones) el 16/10/2008 06:19:26
Ok Enrique, ya relacione las tablas de ARTICULO y DEPARTA y aun asi me sigue haciendo lo mismo, tedras algun otro comentario, gracias...
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:Grid desde tabla

Publicado por enrique (1041 intervenciones) el 16/10/2008 16:59:23
en el Controlsource de cada column del grid tenes que poner tabla.campo por ejemplo:

CTACTE.CLIENTE

en el RecordSource del Grid debes poner la tabla primaria (en tu caso creo que sería ARTICULO)

y en el Activate del Form selecciona la tabla primaria

SELECT ARTICULO
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