XBROWSE REFRESCO DE TABLA

XBROWSE REFRESCO DE TABLA

Postby pedroluis » Thu Jan 28, 2021 5:14 am

Hola a todos !

Tengo abierto un xbrowse con una tabla.
En la misma pantalla tengo un ícono para hacer consultas, (como por ejemplo por número de cliente).
Dicha consulta está hecha con una función dentro del mismo programa.

Luego de hacer la búsqueda del cliente, ¿ como hago que se refresque el xbrowse ,
parándose o haciendo foco el el registro del mismo ?
(Como cuando usaba clientes.dbf el refresco y el foco lo hacía pasando el parámetro
oLbx y funcionaba).

Image

Les paso el código...

* VTA0100.PRG
* Actualización maestro de clientes.

#include "vta0000.ch"
#include "report.ch"
#include "xbrowse.ch"
#include "folder.ch"

*--------------------------------------
FUNCTION VTA0100()
*--------------------------------------
local oBrw
local oBtn
local oDlg
local oLbx
local nKey
local cSql
public o03
public oR3
public xcli
cSql := "SELECT * FROM mae_cli ORDER BY cliente"
oR3 := oCn:RowSet( cSql )

DEFINE DIALOG oDlg RESOURCE "MAE_CLI" FONT m->oFontBrw // CREO EL XBROWSE...
REDEFINE XBROWSE oBrw ID 181 OF oDlg DATASOURCE oR3 ;
COLUMNS ;
"cliente",;
"nombre",;
"direccion",;
"cuit";
HEADERS ;
"Cliente",;
"Nombre",;
"Dirección",;
"C.U.I.T.";

oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL // es 3
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oBrw:lColDividerComplete := .t.
oBrw:nHeaderLines := 1 // Altura encabezamiento
oBrw:nDataLines := 1 // Altura líneas
oBrw:lRecordSelector := .t. //poner o no, COL de la flechita de la izq
oBrw:bClrStd := { || { CLR_BLACK, If( oBrw:KeyNo % 2 == 0, RGB(160,225,255), CLR_WHITE ) } } // Efecto pijama
oBrw:SetFocus()
oBrw:SetRDD()

REDEFINE BTNBMP oBtn ID 182 OF oDlg RESOURCE "plus" ;
ACTION vta0100a(oBrw) ;
PROMPT "Agregar" ;
TOOLTIP "Agregar Registro" NOBORDER TOP FONT m->oFontBmp
REDEFINE BTNBMP oBtn ID 183 OF oDlg RESOURCE "editar" ;
ACTION vta0100m(oBrw) ;
PROMPT "Editar" ;
TOOLTIP "Modificar Registro" NOBORDER TOP FONT m->oFontBmp
REDEFINE BTNBMP oBtn ID 184 OF oDlg RESOURCE "delete" ;
ACTION vta0100b(oBrw) ;
PROMPT "Borrar" ;
TOOLTIP "Borrar Registro" NOBORDER TOP FONT m->oFontBmp // --> BUSQUEDA !!!
REDEFINE BTNBMP oBtn ID 185 OF oDlg RESOURCE "search" ;
ACTION VTA0100S(oBrw) ;
PROMPT "Buscar" ;
TOOLTIP "Buscar Registro" NOBORDER TOP FONT m->oFontBmp
REDEFINE BTNBMP oBtn ID 186 OF oDlg RESOURCE "impresora" ;
ACTION vta0100l(oBrw) ;
PROMPT "Imprimir" ;
TOOLTIP "Impresion Listados" NOBORDER TOP FONT m->oFontBmp
REDEFINE BTNBMP oBtn ID 187 OF oDlg RESOURCE "quit" ;
ACTION (oDlg:End()) ;
PROMPT "Salir" ;
TOOLTIP "Salida" NOBORDER TOP FONT m->oFontBmp

sysrefresh()
return nil

*--------------------------------------
FUNCTION VTA0100S( oBrw )
*--------------------------------------
LOCAL oConDlg, xconsulta := 1
LOCAL lGoOn, oBtn
DEFAULT lGoOn:=.f.
DEFINE DIALOG oConDlg RESOURCE "VTA0100CO" FONT m->oFontBrw
REDEFINE RADIO xconsulta ID 100,120 OF oConDlg
REDEFINE BTNBMP oBtn ID 105 OF oConDlg RESOURCE "yes" ; // SI
ACTION (lGoOn:=.t.,oConDlg:End()) ;
TOOLTIP "Correcto" BORDER
REDEFINE BTNBMP oBtn ID 106 OF oConDlg RESOURCE "no2" ; // NO
ACTION (lGoOn:=.f.,oConDlg:End()) ;
TOOLTIP "Cancelar" BORDER
ACTIVATE DIALOG oConDlg CENTERED
IF lGoOn
CursorWait()
do case
case xconsulta == 1
V0100CO1(oBrw) // BUSQUEDA POR CLIENTE !!!
case xconsulta == 2
V0100CO2(oBrw)
endcase
ENDIF
cSql := "SELECT * FROM mae_cli ORDER BY cliente"
oR3 := oCn:RowSet( cSql )
sysrefresh()
RETURN

// ------------------------------------
// BUSQUEDA POR NUMERO DE CLIENTE
// ------------------------------------
*--------------------------------------
FUNCTION V0100CO1(oBrw)
*--------------------------------------
local oDlg2, oBtn
public oxccc
public xccc:=0
set cursor on
DEFINE DIALOG oDlg2 RESOURCE "VTA0100S1" FONT m->oFontBrw
REDEFINE GET oxccc VAR xccc ID 102 OF oDlg2 picture "999999"
REDEFINE BTNBMP oBtn ID 105 OF oDlg2 RESOURCE "yes" ; // SI
ACTION V0100B1(oBrw,oDlg2:End()) ;
TOOLTIP "Correcto" BORDER
REDEFINE BTNBMP oBtn ID 106 OF oDlg2 RESOURCE "no2" ; // NO
ACTION oDlg2:End() ;
TOOLTIP "Cancelar" BORDER
ACTIVATE DIALOG oDlg2 NOMODAL
oBrw:setfocus()
oBrw:Refresh()
return nil

*--------------------------------------
FUNCTION V0100B1(oBrw)
*--------------------------------------
cSql := "SELECT * FROM mae_cli ORDER BY cliente"
oR3 := oCn:RowSet( cSql )
oR3:Locate("cliente = xccc") //
oBrw:setfocus()
oBrw:Refresh()
endif
oR3:Requery()
oBrw:Update()
oBrw:Refresh()
sysrefresh()
return .t. // A PESAR QUE EL REGISTRO ES ENCONTRADO, CUANDO RETORNA AL XBROWSE NO SE PARA EN EL REGISTRO DEL CLIENTE ...



Gracias amigos !
Last edited by pedroluis on Thu Jan 28, 2021 12:39 pm, edited 3 times in total.
Pedro L. Lavallen
San Luis (Capital), Argentina
User avatar
pedroluis
 
Posts: 99
Joined: Sun Oct 08, 2017 12:51 pm
Location: San Luis (Capital), Argentina

Re: XBROWSE REFRESCO DE TABLA

Postby Antonio Linares » Thu Jan 28, 2021 11:51 am

Pedro,

Prueba con:

oXbrowse:Refresh()
oXBrowse:SetFocus()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: XBROWSE REFRESCO DE TABLA

Postby cmsoft » Thu Jan 28, 2021 4:07 pm

Intuyo que es el orden que lo haces
Prueba
Code: Select all  Expand view

*--------------------------------------
FUNCTION V0100B1(oBrw)
*--------------------------------------
cSql := "SELECT * FROM mae_cli ORDER BY cliente"
oR3 := oCn:RowSet( cSql )
oR3:Requery()
oR3:Locate("cliente = xccc")
oBrw:setfocus()
oBrw:Refresh()
oBrw:Refresh()
sysrefresh()
return .t. // A PESAR QUE EL REGISTRO ES ENCONTRADO, CUANDO RETORNA AL XBROWSE NO SE PARA EN EL REGISTRO DEL CLIENTE ...
 

No manejo muy bien la libreria nativa de fw, pero entiendo que ahi podria andar
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: XBROWSE REFRESCO DE TABLA

Postby leandro » Sat Jan 30, 2021 11:32 am

Una idea
Code: Select all  Expand view

*--------------------------------------
FUNCTION V0100B1(oBrw)
*--------------------------------------
cSql := "SELECT * FROM mae_cli ORDER BY cliente"
oR3 := oCn:RowSet( cSql )
oR3:Requery()
oR3:Locate("cliente = xccc")
oBrw:setfocus()
oR3:Find(xccc) //esto te ubica en el registro que estas buscando dentro del recorset
oBrw:Refresh()
sysrefresh()
return .t. // A PESAR QUE EL REGISTRO ES ENCONTRADO, CUANDO RETORNA AL XBROWSE NO SE PARA EN EL REGISTRO DEL
 
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: XBROWSE REFRESCO DE TABLA

Postby nageswaragunupudi » Sat Jan 30, 2021 10:38 pm

Code: Select all  Expand view
*--------------------------------------
FUNCTION V0100CO1(oBrw)
*--------------------------------------

   local oDlg2, oBtn
   public oxccc
   public xccc:=0
   set cursor on

   DEFINE DIALOG oDlg2 RESOURCE "VTA0100S1" FONT m->oFontBrw
   REDEFINE GET oxccc VAR xccc ID 102 OF oDlg2 picture "999999"

   REDEFINE BTNBMP oBtn ID 105 OF oDlg2 RESOURCE "yes" ; // SI
   ACTION ( oBrw:oDbf:Seek( oxccc ), oBrw:Refresh(), oDlg2:End() ) ; //V0100B1(oBrw,oDlg2:End()) ;
   TOOLTIP "Correcto" BORDER

   REDEFINE BTNBMP oBtn ID 106 OF oDlg2 RESOURCE "no2" ; // NO
   ACTION oDlg2:End() ;
   TOOLTIP "Cancelar" BORDER

   ACTIVATE DIALOG oDlg2 //NOMODAL

//   oBrw:setfocus()
//   oBrw:Refresh()

return nil
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 91 guests