Problemas con Refresh

HMG en Español

Moderator: Rathinagiri

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

Problemas con Refresh

Post by gabrieloq »

Hola a todos.

Tengo el siguiente codigo:
*-----
@ 280,210 GRID grid_2 ;
WIDTH 860 ;
HEIGHT 245 ;
HEADERS { 'Codigo','Detalle', 'Cant', 'Vr Unitario', 'Total', 'Iva', 'Peso' } ;
WIDTHS { 80, 350, 60, 120, 130, 80, 100 } ;
ROWSOURCE "TempKarx" ;
COLUMNFIELDS { 'Codigo','Nombre', 'Cant', 'Valor', 'Total', 'Iva', 'Peso' } ;
JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_RIGHT, BROWSE_JTFY_RIGHT, BROWSE_JTFY_RIGHT, BROWSE_JTFY_RIGHT, BROWSE_JTFY_LEFT, } ;
ON DBLCLICK ( AgregarVta2() )

*-----
Procedure Eliminar
If MsgYesNo ( 'Esta Seguro ?')
dbSelectArea("TempKarx" )
rblokado( 5, "TempKarx", cQuien ) // Bloquea el Registro ya que el archivo esta abierto Shared
delete
dbUnlock()

Win_x01.grid_2.Refresh
EndIf
*------
Existen 2 grid en la ventana activa (estoy trabajando en el detalle de la factura).
Lo hace bien cuando el grid tiene mas de dos items.
Cuando tiene 1 o 2 items muestra el item que yo deseo borrar y oculta el que deseo dejar, internamente en el archivo temporal marca bien el item a borrar.

Gracias de antemano x su ayuda.
Leopoldo Blancas
Posts: 388
Joined: Wed Nov 21, 2012 7:14 pm
Location: México

Re: Problemas con Refresh

Post by Leopoldo Blancas »

Hola...

Bueno yo lo que hago es obtener el valor del registro con

GRID (Standard): Numeric (Row Selected).
GRID (Multiselect): Numeric Array (Rows Selected).
GRID (CellNavigation): Numeric Array (Row and col selected).

Code: Select all

LOCAL aSelec :=  Win_x01.Grid_2.VALUE // EN EL CASO DE GRID (CellNavigation)
LOCAL nReg := Win_x01.Grid_2.Cell(aSelec[1],1) // OBTENGO NUMERO DE CODIGO

dbSelectArea("TempKarx" )
DBGOTOP()
IF DBSEEK(TempKarx->nReg) // BUSCA EL CODIGO
   IF MsgYesNo ( 'Esta Seguro ?') // PREGUNTAMOS SI LO BORRA
       rblokado( 5, "TempKarx", cQuien ) // Bloquea el Registro ya que el archivo esta abierto Shared
      delete
      dbUnlock()
      Win_x01.grid_2.Refresh
   ENDIF
ENDIF
Espero te ayude...
Polo
gabrieloq
Posts: 46
Joined: Thu Jan 24, 2013 9:45 pm
Location: Bucaramanga

Re: Problemas con Refresh

Post by gabrieloq »

Gracias por responder Leopoldo,

Hice las correciones sugeridas por Ud pero da error:

EN LA LINEA ==> LOCAL nReg := Win_x01.Grid_2.Cell(aSelec[1],1) // OBTENGO NUMERO DE CODIGO

Error BASE/1068 Error de argumento : acceso al array
llamado from _HMG_GETGRIDCELLVALUE(1551)

Que puedo hacer?
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: Problemas con Refresh

Post by Pablo César »

Remueve el numero 1 y la coma que está en rojo y pruebas nuevamente.

LOCAL nReg := Win_x01.Grid_2.Cell(aSelec[1],1)

Eso debe ocurrir porque tu grid está como SET NAVIGATION .F.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
Leopoldo Blancas
Posts: 388
Joined: Wed Nov 21, 2012 7:14 pm
Location: México

Re: Problemas con Refresh

Post by Leopoldo Blancas »

Hola, así es Cesar...

Grabriel por eso puse... depende como estes trabajando:

GRID (Standard): Numeric (Row Selected).
GRID (Multiselect): Numeric Array (Rows Selected).
GRID (CellNavigation): Numeric Array (Row and col selected).


LOCAL aSelec := Win_x01.Grid_2.VALUE // EN EL CASO DE GRID (CellNavigation)
LOCAL nReg := Win_x01.Grid_2.Cell(aSelec[1],1) // OBTENGO NUMERO DE CODIGO
// Si es Stardard nReg := Win_x01.Grid_2.Cell(aSelec) // remplaza esta por la de arriba.

dbSelectArea("TempKarx" )
DBGOTOP()
IF DBSEEK(TempKarx->nReg) // BUSCA EL CODIGO
IF MsgYesNo ( 'Esta Seguro ?') // PREGUNTAMOS SI LO BORRA
rblokado( 5, "TempKarx", cQuien ) // Bloquea el Registro ya que el archivo esta abierto Shared
delete
dbUnlock()
Win_x01.grid_2.Refresh
ENDIF
ENDIF

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

Posible solucion Problemas con Refresh

Post by gabrieloq »

Hola Leopoldo, gracias por sus concejos,

No se si es la mejor manera de solucionar pero lo hice de esta manera:

If MsgYesNo ( 'Esta Seguro ?')
dbSelectArea("TempKarx" )
rblokado( 5, "TempKarx", cQuien ) // Bloquea el Registro ya que el archivo esta abierto Shared
delete
dbUnlock()

DELETE ITEM ALL FROM Grid_2 OF Win_x01 // borro todos elementos del Grid
Do While !EOF()
ADD ITEM { TempKarx->Codigo, TempKarx->Nombre, TempKarx->Cant, TempKarx->Valor, TempKarx->Total, TempKarx->Iva, TempKarx->Peso } TO Grid_2 of Win_x01 // agrego los elementos que quedan en el archivo temporal
DBsKIP()
END DO

Win_x01.grid_2.Refresh
EndIf
Leopoldo Blancas
Posts: 388
Joined: Wed Nov 21, 2012 7:14 pm
Location: México

Re: Problemas con Refresh

Post by Leopoldo Blancas »

Hola Gabriel...

Otra observación... trata de que tu forma de escribir tu código sea claro... el orden de los mandatos y funciones deben de tener una lógica...

1.- En algún lugar de tu aplicación esta la base abierta dbSelectArea("TempKarx" ) por lo regular esta antes de hacer una búsqueda.
2.- Después de seleccionar el área debemos de hacer un DBGoTop() Para asegurar que estamos al inicio.
3.- Buscas el registro a modificar o borrar. IF DBSEEK(TempKarx->nReg) el IF es por si lo encuentra....
4.- Preguntamos si lo queremos modificar o borrar...IF MsgYesNo ( 'Esta Seguro ?')
5.- Si es Shared lo bloqueamos...rblokado( 5, "TempKarx", cQuien )
6.- Hacemos lo necesario para el registro... Borramos, Modificamos...delete
7.- Desbloqueamos....dbUnlock()
8.- Refrescamos lo que haya cambiado de la pantalla...Win_x01.grid_2.Refresh

Code: Select all

dbSelectArea("TempKarx" )
DBGOTOP()
IF DBSEEK(TempKarx->nReg) // BUSCA EL CODIGO
    IF MsgYesNo ( 'Esta Seguro ?') // PREGUNTAMOS SI LO BORRA
       rblokado( 5, "TempKarx", cQuien ) // Bloquea el Registro ya que el archivo esta abierto Shared
       delete
       dbUnlock()
    ENDIF
    Win_x01.grid_2.Refresh
ENDIF
Si no de otra manera se vuelve difícil a la hora de corregir o seguir la lógica de tu rutina...

Saludos
Polo
Leopoldo Blancas
Posts: 388
Joined: Wed Nov 21, 2012 7:14 pm
Location: México

Re: Problemas con Refresh

Post by Leopoldo Blancas »

Hola Gabriel...

Y sobre tu forma de solucionarlo.... respetable...
Pero estas haciendo trabajo de más.
Saludos
Polo
gabrieloq
Posts: 46
Joined: Thu Jan 24, 2013 9:45 pm
Location: Bucaramanga

Re:Acepto con agrado sus recomendaciones

Post by gabrieloq »

Hola leopoldo es grato y beneficioso encontrar personas que lo corrigen para bien, con gusto pondre sus recomendaciones inmediatamente para mejorar mi programacion, GRACIAS
Post Reply