Hola GabrielLoq,
Con el siguiente código, que es el mismo que tu utilizas, si se ve lo que contiene TEMPLANT.DBF. Y en mi opinión deber de checar en que momento se borra lo que tienes en TemPlant.DBF o para asegurarte lo que estas haciendo siempre llama a la base de datos que quieres mostrar antes de la Grid, pon: dbSelectArea( "TemPlant" ).
Code: Select all
/*
* HMG Hello World Demo
* (c) 2002 Andrea M.
*/
#include "hmg.ch"
Function Main
use TemPlant EXCLUSIVE NEW
DEFINE WINDOW Form_1 ;
AT 10,10 ;
WIDTH 1100 HEIGHT 650 ;
TITLE " PLANTILLAS " ;
MAIN
@ 50,10 GRID Grid_P1 ;
WIDTH 1050 ;
HEIGHT 400 ;
HEADERS { 'Selecciona', 'Descripcion', 'Prescripcion', 'Via', 'Cant'} ;
WIDTHS { 50, 400, 300, 120, 80} ;
ROWSOURCE "TemPlant" ;
COLUMNFIELDS { 'Si', 'Nombre', 'Prescribe', 'Via', 'Cantidad' } ;
EDIT ;
VALUE { 1 , 1 } ;
COLUMNCONTROLS { {'TEXTBOX','CHARACTER'}, {'TEXTBOX','CHARACTER'}, {'TEXTBOX','CHARACTER'}, {'TEXTBOX','CHARACTER'}, {'TEXTBOX','NUMERIC','999'} } ;
ALLOWAPPEND
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return

- ProbGrid.jpg (128.19 KiB) Viewed 4287 times
Y una segunda opinión, si me permites, se que cada quien tiene su forma de programar pero veo que tienes por ahí varios, muchos, dbUnlock(), que no se cuando bloqueas tu DBF, creo que una buena costumbre es bloquearlo y desbloquearlo en un mismo procedimiento y función para que sea más claro.
También observo que cuando haces una búsqueda con DbSeek() no sabes si lo encontró o no, por qué no poner un IF con cada DbSeek(), por ejemplo:
IF TemPlant->(DbSeek(cBusca))
MsgBox("Lo Encontro")
ELSE
MsgBox("NOOOOOOO lo Encontro")
ENDIF
Eso me ayuda a que me asegure que lo encontró.
Y por ultimo, por tiempo no puedo revisar más tu programa pero, también hay funciones que facilitan el trabajo, por ejemplo al inicio de tu programa pones para saber el tamaño de tu pantalla, para eso están las funciones:
Code: Select all
#define nWIDTH GetDeskTopWidth()
#define nHEIGHT GetDeskTopHeight()
y no tienes que llamarlas en código C.
Creo que es solo de rastrear donde se pierde el programa.
Saludos y espero que te sirva.