FoxPro

Hola por favor necesito una ayuda, necesito tener un grid donde carga unos cobros hasta aquí todo bien pero, necesito que en ese mismo grid se cargue los renglones del cobro, a nivel de información, osea que solo se pueda realizar selección en el checkbox de las filas de los cobros, ¿se me ocurría que se viera solo los cobros y que una crucecita que me indique que se puede desplegar una sublista que me cargue los reglones del cobro esto se puede hacer con un grid en FoxPro con Base de datos SQL?
Lo que necesito es que el usuario me selecciones los Cobros pero que en la misma pantalla le muestre los reglones de ese cobro a nivel informativo, no se si me recomiendas otra forma más fácil y más visual de hacerlo.
Gracias de antemano

1 respuesta

Respuesta
1
Pues hasta donde yo sé, creo que no es posible hacer eso con "Grids" de Visual FoxPro. Tendrías que hacerlo con controles externos utilizando "ActiveX Control (OleControl)" pero no estoy seguro cuál es el que te podría servir.
Una alternativa que se me ocurre que podrías usar es poner dos "Grids" en el formulario y utilizar tablas relacionadas para que cuando se seleccione un cobro, en el "Grid" 1, se muestren sólo los renglones correspondientes a ese cobro en el "Grid" 2.
Subí un ejemplo a Internet para que veas cómo funciona esto que te menciono. Lo puedes descargar desde el siguiente enlace:
http://www.megaupload.com/?d=N2BMNQP9
Gracias, muy buena esta idea me gusta y es bastante fácil visualizar rápidamente la información que es lo que el usuario quiere, pero no sé que estoy haciendo mal pues coloque todo como me indicaste la única diferencia es que yo estoy trabajando con cursores, ósea no es que me da errores es que no me está enlazando el grid1 con el grid2 por número del cobro, me muestra los reglones de otro cobro, ordene los cursores y aun así no me lo asocia
Probablemente el índice que estás usando en la tabla de detalle de cobro (la del "grid2") no sea el adecuado. Y si son "cursores" como mencionas, entonces debes generar el índice cada vez que los crees y la exprexión que utilices para dicho índice debe ser nada más la que identifique a un registro del detalle como parte de un cobro específico.
Un ejemplo podría ser:
** Se crea el cursor de cobros
SELECT * FROM Cobros INTO CURSOR _Cobros
** Se crea el detalle
SELECT * FROM DetalleCobros INTO CURSOR _DetCobros
** Se crea el índice del detalle para relacionarse con los cobros
INDEX ON IdCobro TAG IdCobro
** Se crea la relación
SET RELATION TO IdCobro INTO _DetCobros IN _Cobros
Si todavía no funciona, mándame más detalles del entorno cómo lo estás ejecutando para tratar de entender mejor y poderte dar opciones más certeras.
Perfecto me corrige el error, gracias!, perooo me genera otro en cuanto a:
En el grid1 yo cargo tipo_doc, donde podrían ser CHEQ o COBRO y num_doc, ahora como el índice es el número si estoy en el cheque 1 me muestra el reglón del cobro del mismo numero
No se me ocurría solventar esto colocando un Optiongroup1 donde el usuario elija si quiere ver doc tipo cobros o tipo cheques pero tengo dudas como se le realiza para que cuando le asigne un Recordsource un cursor diferente para cada caso, me refresque inmediatamente los grids.
Claro no sé si tú me recomiendas algo más practico.
Gracias y disculpa lo largo de la consulta
No entiendo. ¿Tienes dos tablas de detalle, una para cheques y otra para cobros? Si es así y viendo que usas "Cursores" creo que podrías juntarlas en una y poner esa como fuente de datos del "Grid". Aunque esto sólo será posible si haces que las estructuras de ambas tablas sean iguales.
** Se crea el cursor de cobros
SELECT * FROM Cobros INTO CURSOR _Cobros
** Se crea el detalle de ámbos, cheques y cobros
SELECT "CHEQ" AS Tipo_Doc, * FROM DetalleCheques
UNION ALL
SELECT "COBRO" AS Tipo_Doc, * FROM DetalleCobros
INTO CURSOR _DetCobros
** Se crea el índice del detalle para relacionarse con los cobros
INDEX ON Tipo_Doc + LTRIM(STR(Num_Doc)) TAG TipoMasNum
** Se crea la relación
SET RELATION TO Tipo_Doc + LTRIM(STR(Num_Doc)) INTO _DetCobros IN _Cobros
** Se ligan las tablas con los "Grid"
ThisForm.grdCobros.RecordSource = "_Cobros"
ThisForm.grdCobros.RecordSource = "_DetCobros"
Ahh perfecto así me funcionaria perfectamente!.
Ya para terminar será que existe la posibilidad que explicaras si lo tendría que hacer de la otra forma que te comentaba, ósea como seria, así tengo los grid1 y grid2, pero tengo unos optiongroup si activas option1 entonces en el grid1 cargo cobros y grid2 renglones del cobro pero si activas opción2 le asigno al grid1 cheques y al grid2 detalles del cheque, hasta aquí bien.
Mi problema es que haciendo las pruebas no logro que me actualice inmediatamente al seleccionar una de las opciones e igual me está pasando con otros casos cuando tildas un check que dice "seleccionar todos" para activar todos los check1 que tengo en el grid.
** Se "limpian" los "Grid"
ThisForm.grdCobros.RecordSource = ""
ThisForm.grdCobros.ColumnCount = -1
ThisForm.grdDetCobros.RecordSource = ""
ThisForm.grdDetCobros.ColumnCount = -1
** Aquí se deben obtener los cursores según la selección del "OptionGroup"
** Se reasigna la fuente de datos de los "Grid"
ThisForm.grdCobros.RecordSource = "_Cobros"
ThisForm.grdDetCobros.RecordSource = "_DetCobros"
** Si eso no bastara, se actualizan
ThisForm. GrdCobros. Refresh()
ThisForm. GrdDetCobros. Refresh()
Lo del "CheckBox" no lo entendí.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas