Me estoy volviendo Loco
Moderator: Rathinagiri
Me estoy volviendo Loco
Hola amigos necesito por favor una ayuda con una aplicacion sencilla, el manejo del "DEFINE GRID" me esta causando problemas, anexo dbf, fuentes y un documento de Word que explica mis dolores de cabeza.
Utilizo Win 7 a 32 bits
Ya he consultado los ejemplos que anexa HMG y no logro encontrar la solucion.
Les agradezco su colaboracion.
Utilizo Win 7 a 32 bits
Ya he consultado los ejemplos que anexa HMG y no logro encontrar la solucion.
Les agradezco su colaboracion.
- Attachments
-
- Fuentes.rar
- (2.3 MiB) Downloaded 278 times
-
- dbf.rar
- (389.91 KiB) Downloaded 256 times
Me estoy volviendo Loco
Anexo el Documento de Word
- Attachments
-
- leame.rar
- (759.86 KiB) Downloaded 248 times
-
- Posts: 684
- Joined: Tue Jun 04, 2013 6:33 pm
- Location: Argentina
Re: Me estoy volviendo Loco
Hola Gabriel:
Estuve viendo tu problema.-
No me quedó muy claro tu rutina de filtrado, pero creo que ahí radica tu problema con el Grid.-
Intenta lo siguiente: (lo utilizo en una aplicación de agenda y funciona)
TU_TABLA->(DbClearFilter())
SET FILTER TO SUBSTR(TU_TABLA->TU_CAMPO_DONDE_CLASIFICARALABUSQUEDA, 1, 1) == TU_PALABRA_QUE_ESTABLECE_EL_PATRON_DE FILTRADO
TU_VENTANA_MODAL.GRID_TUGRID.REFRESH
En teoría esto solucionaría la falta de exhibición de tu GRID.-
Espero de momento te sirva.-
Abrazo. Eduardo
Estuve viendo tu problema.-
No me quedó muy claro tu rutina de filtrado, pero creo que ahí radica tu problema con el Grid.-
Intenta lo siguiente: (lo utilizo en una aplicación de agenda y funciona)
TU_TABLA->(DbClearFilter())
SET FILTER TO SUBSTR(TU_TABLA->TU_CAMPO_DONDE_CLASIFICARALABUSQUEDA, 1, 1) == TU_PALABRA_QUE_ESTABLECE_EL_PATRON_DE FILTRADO
TU_VENTANA_MODAL.GRID_TUGRID.REFRESH
En teoría esto solucionaría la falta de exhibición de tu GRID.-
Espero de momento te sirva.-
Abrazo. Eduardo
- danielmaximiliano
- Posts: 2625
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Me estoy volviendo Loco
Estoy revisando tú codígo y resolviendo las rutas de las tablas.
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
-
- Posts: 1275
- Joined: Tue Sep 03, 2013 4:22 am
- Location: Tecámac, México
Re: Me estoy volviendo Loco
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" ).
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:
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.
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
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()
Creo que es solo de rastrear donde se pierde el programa.
Saludos y espero que te sirva.
-
- Posts: 1275
- Joined: Tue Sep 03, 2013 4:22 am
- Location: Tecámac, México
Re: Me estoy volviendo Loco
Hola GabrielLoq,
También veo que confundes tus funciones, por ejemplo:
Y en tus programas pones
Saludos
También veo que confundes tus funciones, por ejemplo:
Code: Select all
function Amplia(nSegundos,cNombre)
local nSiempre := nTiempo := 0
do while .t.
nTiempo := nSegundos
nSiempre := (nTiempo==0)
do while (nSiempre .or. nTiempo > 0)
dbappend()
if !neterr()
return (.t.)
endif
inkey(.5)
nTiempo-=.5
enddo
Mueveiz("..Archivo: "+cNombre+" ocupado, espere por favor..")
enddo
Code: Select all
Amplia( 5, "TemPlant", cQuien )
- danielmaximiliano
- Posts: 2625
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Me estoy volviendo Loco
No importa el 3° parametro. ya que recibe "TemPlant" o cQuien....Javier Tovar wrote:Hola GabrielLoq,
También veo que confundes tus funciones, por ejemplo:
Y en tus programas ponesCode: Select all
function Amplia(nSegundos,cNombre) local nSiempre := nTiempo := 0 do while .t. nTiempo := nSegundos nSiempre := (nTiempo==0) do while (nSiempre .or. nTiempo > 0) dbappend() if !neterr() return (.t.) endif inkey(.5) nTiempo-=.5 enddo Mueveiz("..Archivo: "+cNombre+" ocupado, espere por favor..") enddo
SaludosCode: Select all
Amplia( 5, "TemPlant", cQuien )
Code: Select all
Amplia( nSegundos , cNombre )
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Me estoy volviendo Loco
Pero irá dar error por falta de definicion de la variable cNombre en:danielmaximiliano wrote: No importa el 3° parametro. ya que recibe "TemPlant" o cQuien....
Code: Select all
Amplia( nSegundos , cNombre )
Mueveiz("..Archivo: "+cNombre+" ocupado, espere por favor..")
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
- danielmaximiliano
- Posts: 2625
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Me estoy volviendo Loco
no,para nada..Pablo César wrote:Pero irá dar error por falta de definicion de la variable cNombre en:danielmaximiliano wrote: No importa el 3° parametro. ya que recibe "TemPlant" o cQuien....
Code: Select all
Amplia( nSegundos , cNombre )
Mueveiz("..Archivo: "+cNombre+" ocupado, espere por favor..")
aqui esta la funcion completa. cNombre puede recibir "Tempxxx" o cQuien
Code: Select all
function Amplia( nSegundos , cNombre )
local nSiempre := nTiempo := 0
do while .t.
nTiempo := nSegundos
nSiempre := (nTiempo==0)
do while (nSiempre .or. nTiempo > 0)
dbappend()
if !neterr()
return (.T.)
endif
inkey(.5)
nTiempo-=.5
enddo
Mueveiz("..Archivo: " + cNombre + " ocupado, espere por favor..")
enddo
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Re: Me estoy volviendo Loco
Tenés razón, Daniel. Me equivoqué. Perdon.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein