Buenos días!!!
Presento un dialogo con 2 Meters y 2 botones.
Al oprimir ACEPTAR ejecuta un listado que lee datos de 2 bases, la idea es que en cada METER se refleje el avance de dicha lectura.
El primer METER trabaja perfectamente, el segundo METER NO LOGRO que muestre el avance y creo haber probado de todas las formas y no veo cual es el problema.
este es mi código. si alguien ve mi ERROR agradecería me lo cuente.
Gracias.
function lstVentas2()
...
Private oMeter1
Private oMeter2
Private nActual1 := 0
Private nActual2 := 0
Private xtotCli := 0
Private xTotVtas := 0
Private oMensaje, cMensaje:=''
.....
if veoclifor(@nCliente,@cVeoCli,.t.)
if nCliente = 0
xTotCli := CliFor->(LastRec())
else
xTotCli := 1
endif
select DetVtaF
set filter to str(DetVtaF->Cliente,4) = str(CliFor->CodCliente,4) .and. DetVtaF->FecVenta>=dDesde .and. DetVtaF->FecVenta<=dHasta
DetVtaF->(DbGoTop())
set relation to Articulo into ArtFor
while !DetVtaF->(Eof())
xTotVtas += 1
DetVtaF->(DbSkip())
end
DEFINE DIALOG oDlgMed RESOURCE "Medidores"
REDEFINE SAY oMensaje PROMPT cmensaje ID Med_Mensaje OF oDlgMed color colorfw->ForeSay, colorfw->FondoSay
REDEFINE METER oMeter1 VAR nActual1 TOTAL xtotCli ID Med_Meter1 of oDlgMed
REDEFINE METER oMeter2 VAR nActual2 TOTAL xTotVtas ID Med_Meter2 of oDlgMed
REDEFINE BTNBMP oBtnAcep ID Med_Aceptar OF oDlgMed FILENAME "ACEPTAR.BMP" ACTION (LstVtasXCli(nCliente,cVeoCli,dDesde,dHasta, @oMensaje,@cMensaje),oDlgMed:end())
REDEFINE BTNBMP oBtnCanc ID Med_Cancelar OF oDlgMed FILENAME "CANCELA.BMP" CANCEL ACTION oDlgMed:End()
ACTIVATE DIALOG oDlgMed CENTERED
endif
dbcloseall()
return NIL
*-----------------------------------------------------------------------------------*
*----------------------------------------------------------------------------------------------*
/***
* emito informe de Ventas
*
*/
*
function lstVtasXCli(nCliente,cVeoCli,dDesde,dHasta,oMensaje,cMensaje)
local nhoja := 0
....
if lsigo
PRINT oPrn NAME "Ventas de Formularios" PREVIEW MODAL
if Empty( oPrn:hDC )
MsgStop( "Impresora Fuera de Linea" )
return nil
endif
....
while !CliFor->(Eof())
cMensaje := left(CliFor->RazonSoc,15)
oMensaje:Refresh()
//msginfo(str(Clifor->Codcliente,4),'Cliente')
if prow == 0
prow+=nrowstep
oPrn:Say(prow, pcol*4 ,'Fecha de Emisión: ' + dtoc( date() ),oCour_n_10)
......
prow+=nrowstep*1.5
endif
select DetVtaF
DetVtaF->(DbGoTop())
if DetVtaF->Cliente#0
oPrn:Say(prow, pcol*6 ,CliFor->RazonSoc,oCour_b_10)
prow+=nrowstep
else
Clifor->(DbSkip())
oMeter1:Set(nActual1+1)
oMeter1:Refresh()
loop
endif
oPrn:Say(prow, pcol*6 ,dtoc(DetVtaF->FecVenta),oCour_b_10)
dQueFec:=DetVtaF->FecVenta
prow+=nrowstep
While !DetVtaF->(EoF())
oMeter2:Set(nActual2+1)
oMeter2:Refresh()
oPrn:Say(prow, pcol*19 ,ArtFor->Abrevia),oCour_n_10)
prow+=nrowstep
if DetVtaF->TipoDoc#2
nTotCli += DetVtaF->TotVenta
.....
endif
if prow > nRowStep*55
oPrn:Line(pRow ,ncolStep,pRow,ncolstep*77)
EndPage
Page
PROW:=0
if prow == 0
prow+=nrowstep
oPrn:Say(prow, pcol*4 ,'Fecha de Emisión: ' + dtoc( date() ),oCour_n_10)
.....
prow+=nrowstep*1.5
endif
endif
DetVtaF->(DbSkip())
if !dQueFec=DetVtaF->FecVenta
prow+=nrowstep/2
......
endif
end
CLiFor->(DbSkip())
oMeter1:Set(nActual1+1)
oMeter1:Refresh()
nActual2 := 0
oMeter2:Set(nActual2)
oMeter2:Refresh()
end
oPrn:Line(pRow ,ncolStep,pRow,ncolstep*77)
....
endpage
EndPrint
endif
return NIL
*------------------------------------------------------------------------------*