Hola compañeros !
Disculpen la molestia, pero estoy tratando de empezar a adaptar unos programas en MariaDB.
Tal vez ésto que le pido sea algo muy obvio para ustedes, pero hace varios días que estoy insistiendo y no le encuentro la vuelta.
Se trata de un programita de altas de clientes.
Las altas, bajas y modificaciones pude hacerlas funcionar, pero en cuanto a las búsquedas tengo el problema del refresco del xbrowse y no le encuentro la solución.
Cuando quiero buscar un cliente por número, lo encuentro, pero al volver al xbrowse de la tabla de los mismos no se me posiciona en el registro que he encontrado,
es decir no se refresca ni ilumina el registro que he encontrado.
Les pido por favor, sean tan amables de echarme una mano.
Muchas gracias anticipadas !!!
Pedro Lavallén. (Argentina)
* 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
REDEFINE XBROWSE oBrw ID 181 of oDlg DATASOURCE oR3 ;
COLUMNS ;
"cliente",;
"nombre",;
"direccion",;
"localidad",;
"cuit",;
"provincia",;
"sit_iva",;
"telefono",;
"cod_post",;
"mail",;
"fec_alta",;
"texto" ;
HEADERS ;
"Cliente",;
"Nombre",;
"Dirección",;
"Localidad",;
"C.U.I.T.",;
"Provincia",;
"Sit.IVA",;
"Teléfono",;
"Cod.Postal",;
"E-Mail",;
"Fecha Alta",;
"Memo" ;
JUSTIFY AL_CENTER, nil, AL_CENTER, AL_CENTER
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL // es 3
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oBrw:lColDividerComplete := .t.
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
REDEFINE BTNBMP oBtn ID 185 OF oDlg RESOURCE "search" ; // <<<---- Búsqueda cliente
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
ACTIVATE DIALOG oDlg CENTERED
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) // <<<<--------- Búsqueda por nro.de 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()) ; // <<<<<<-------------- Lo busco con ésta función.
TOOLTIP "Correcto" BORDER
REDEFINE BTNBMP oBtn ID 106 OF oDlg2 RESOURCE "no2" ; // NO
ACTION oDlg2:End() ;
TOOLTIP "Cancelar" BORDER
ACTIVATE DIALOG oDlg2 NOMODAL
return nil
*--------------------------------------
FUNCTION V0100B1(oBrw)
*--------------------------------------
cSql := "SELECT * FROM mae_cli ORDER BY cliente"
oR3 := oCn:RowSet( cSql )
oR3:Locate("cliente = xccc") //
if oR3:eof()
msginfo("NO Lo encontró")
oBrw:Refresh()
else
xbrowse(oR3) // <<<--- Si pongo ésto ilumina el registro encontrado, pero
msginfo("Lo encontró") // <<<---- Cuando quiero volver al xbrowse inicial,
oBrw:setfocus() // <<<--- NO ME LO REFRESCA !!!. No pinta el registro encontrado. pero no refresca el oBrw cuando vuelve !!!
oBrw:Refresh()
endif
return .t.