Me estoy volviendo Loco

HMG en Español

Moderator: Rathinagiri

gabrieloq
Posts: 46
Joined: Thu Jan 24, 2013 9:45 pm
Location: Bucaramanga

Me estoy volviendo Loco

Post by gabrieloq »

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.
Attachments
Fuentes.rar
(2.3 MiB) Downloaded 278 times
dbf.rar
(389.91 KiB) Downloaded 256 times
gabrieloq
Posts: 46
Joined: Thu Jan 24, 2013 9:45 pm
Location: Bucaramanga

Me estoy volviendo Loco

Post by gabrieloq »

Anexo el Documento de Word
Attachments
leame.rar
(759.86 KiB) Downloaded 248 times
EduardoLuis
Posts: 684
Joined: Tue Jun 04, 2013 6:33 pm
Location: Argentina

Re: Me estoy volviendo Loco

Post by EduardoLuis »

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
User avatar
danielmaximiliano
Posts: 2625
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Me estoy volviendo Loco

Post by danielmaximiliano »

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
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Me estoy volviendo Loco

Post by Javier Tovar »

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
ProbGrid.jpg (128.19 KiB) Viewed 4100 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.
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Me estoy volviendo Loco

Post by Javier Tovar »

Hola GabrielLoq,

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
Y en tus programas pones

Code: Select all

Amplia( 5, "TemPlant", cQuien )
Saludos
User avatar
danielmaximiliano
Posts: 2625
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Me estoy volviendo Loco

Post by danielmaximiliano »

Javier Tovar wrote:Hola GabrielLoq,

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
Y en tus programas pones

Code: Select all

Amplia( 5, "TemPlant", cQuien )
Saludos
No importa el 3° parametro. ya que recibe "TemPlant" o cQuien....

Code: Select all

Amplia( nSegundos , cNombre )
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Me estoy volviendo Loco

Post by Pablo César »

danielmaximiliano wrote: No importa el 3° parametro. ya que recibe "TemPlant" o cQuien....

Code: Select all

Amplia( nSegundos , cNombre )
Pero irá dar error por falta de definicion de la variable cNombre en:

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
User avatar
danielmaximiliano
Posts: 2625
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Me estoy volviendo Loco

Post by danielmaximiliano »

Pablo César wrote:
danielmaximiliano wrote: No importa el 3° parametro. ya que recibe "TemPlant" o cQuien....

Code: Select all

Amplia( nSegundos , cNombre )
Pero irá dar error por falta de definicion de la variable cNombre en:

Mueveiz("..Archivo: "+cNombre+" ocupado, espere por favor..")
no,para nada..

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
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: Me estoy volviendo Loco

Post by Pablo César »

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
Post Reply