Ya tengo casi mas de un mes que no habia entrado al foro, ya que estuve haciendo nuevas adecuaciones y cambios en las tablas,para minizar archivos temporales y moficando variables en todos mis prgs!.
A todos los amigos, tengo dudas sobre say que no me muestra registros estando dentro de un ciclo.
Paso 1:
Como puedo poner un mensaje en un proceso
Ejemplo:
Mensaje("Procesando traspasando saldos ....")
Ciclo de procesos........
Mensaje("Verificando la integridad de cuentas...")
Ciclo de procesos...
Mensaje("Finalizando...")
Paso 2:
Dentro de un ciclo de Do While.
Porque no me muestra los say y ver que se procese los registros de las cuentas o detectar algun registro duplicado,si le pongo MsgInfo() lo muestra pero es engorroso estarle dando enter aceptar y sale aceptar cada registro procesado ,sino que se muestre continuo,sin que salga mensaje de aceptar y enter ...habra otra forma??
Ya que tengo desde principal el dialogo y el MsgRun()
DEFINE DIALOG oDlg RESOURCE "CIEMES" TITLE "Traspasando saldos del mes"
REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION (MsgRun("Generando traspaso de saldos...espera",,;
{|| GENCIEMES()}), oDlg:End())
REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER VALID (oItem:Enable(),.T.)
Pongo el codigo y alguien me pueda apoyar con ese inconveniente:
- Code: Select all Expand view
- //------------------------------------------------------------------------------
FUNCTION TRASPSDO()
LOCAL oItem:=oMOpc
lApSeg := (S04)->AP_SEGNG
oBtn := Array(2)
DEFINE DIALOG oDlg RESOURCE "CIEMES" TITLE "Traspasando saldos del mes"
REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION (MsgRun("Generando traspaso de saldos...espera",,;
{|| GENCIEMES()}), oDlg:End())
REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER VALID (oItem:Enable(),.T.)
* Aqui la funcion de procesos
//------------------------------------------------------------------------------
STATIC FUNCTION GENCIEMES()
Paso 1:
* En esta parte que metodo debo usar para que me salga cada mensaje de procesos por ejemplo:
* Mensaje( "Traspasando saldos iniciales de la tabla MOVTCONT a SDOSCTAS
//--------------------------------------------------------------------------------\\
*- Paso 5..."[ Traspasando saldos iniciales de MOVTCONT.DBF en SDOSCTAS.DBF]" -*
//---------------------------------------------------------------------------------\\
(S14)->( DbGoTop() )
aAcum := {{0,0}}
lSelSeg := .F.
(S09)->( DbSetOrder(2) )
(S09)->( DbGoTop() )
(S09)->( DbSeek(STR(Ano_Per,4)) )
Cpo := 'SALD'+TSTR(Mes_Per)
MesAnt := 'SALD'+TSTR(Mes_Per -1)
DO WHILE (S09)->( !EOF() )
IF (S09)->ANOEJERC <= Ano_Per
SdoAnt := (S09)->&MesAnt
cCta := (S09)->CUENTA
cAno := (S09)->ANOEJERC
(S14)->( DbSetOrder(7) )
(S14)->( SetSeek(cAMMov+(S09)->CUENTA) )
Paso2 :
* En esta parte dentro del ciclo como puedo mostrar un say que se este procesando registros ,ya que no me lo muestra
@ 12,20 say "Cuenta :"+cCta
@ 13,20 say "Año ejercicio :"+STR(cAno)
aAcum := {{0,0}}
DO WHILE FUNNIV(lSelSeg,S09,S11,S14,Cta1,Cta2,Cta3,Cta4) .AND. (S14)->AMMOV=cAM_Ini .AND. (S14)->( !EOF() )
aAcum[1,1] += (S14)->CARGO
aAcum[1,2] += (S14)->ABONO
(S14)->( DbSkip() )
ENDDO
IF SdoAnt <> 0 .OR. (aAcum[1,1] - aAcum[1,2]) <> 0
(S09)->( DbSetOrder(1) )
*(S09)->( DbSeek((S09)->CUENTA+STR((S09)->ANOEJERC,4)) )
(S09)->( DbSeek(cCta+STR(cAno,4)) )
IF (S09)->( !FOUND() )
(S09)->( DbAppend() )
REPLACE (S09)->CUENTA WITH (S09)->CUENTA
ELSE
DO WHILE (S09)->( !RLOCK() )
ENDDO
ENDIF
*MsgInfo( SdoAnt+(aAcum[1,1] - aAcum[1,2]) )
REPLACE (S09)->&CPO WITH SdoAnt+(aAcum[1,1] - aAcum[1,2])
ENDIF
ENDIF
(S09)->( DbSkip() )
ENDDO
Esperando contar con su amable apoyo de siempre, quedo a la espera de algun colega con ese simple detalle.
Saludos y buen dia.!
Atte: Adrian C. C.
acc69@hotmail.com