FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Requiero explicacion error ACTIVATE DIALOG
Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Tue Sep 02, 2025 07:00 PM

Para recompilar y ver si alguien me puede colaborar--

  1. Los errors son esporadicos

  2. Se presentan del lado del cliente

  3. En equipos de desarrollos no se presentan (no he podido reproducirlos o a mi no se me presentan)

  4. Tengo mas de 400 clientes funcionando...

  5. Al dia me llegan via correo un promedio de 10 errores de este tipo

  6. No evidencio error de logica, creeria mas en un error del entorno... cierre de tablas, caidas del sistema, etc

  7. Estoy dispuesto a contratar ayuda profesional, para revisar que genera estos errores.

  8. Podria contratar a un experto y montarle mi plataforma de desarrollo completa ( fuentes, xhb comercial, fivewin 24.10 ) para que previa induccion de la organizacon del codigo y funcionamiento del sistema, el profesional contratado pueda hacer seguimiento a los errores que se reportan desde los clientes.

  9. Si alguien me puede colaborar... me puede contactar y definimos la mecanica de prestacion de servicios.

  10. Anexo errores del dia a dia...

Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Tue Sep 02, 2025 07:00 PM

Application

===========

Path and name: E:\RUSSOFT\ZERUS\zeruswin.exe (32 bits)

Size: *** bytes

Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20150726)

FiveWin Version : FWH 24.09

Windows version: 6.2, Build 9200

Time from start: 0 hours 57 mins 11 secs

Error occurred at: 09/02/2025, 11:32:01

Error description: Error BASE/1002 No existe el alias: FTM

Stack Calls

===========

Called from: FUENTES\COMUNES\FUNCSLIB.PRG => SELECTAREA_INV( 28650 )

Called from: FUENTES\GESTION\INVENTARIOS\FACTCAPT.PRG => GRARECXFAC( 3757 )

Called from: FUENTES\GESTION\CARTERA\FW_REGISTRO_CRE_CARTERA.PRG => GRABAREGISTRORECIBOSFW( 1502 )

Called from: FUENTES\GESTION\CARTERA\FW_REGISTRO_CRE_CARTERA.PRG => (b)CONTENIDODIALOGCARTERA1( 1111 )

Called from: .\source\classes\btnbmp.prg => TBTNBMP:CLICK( 816 )

Called from: .\source\classes\btnbmp.prg => TBTNBMP:LBUTTONUP( 1103 )

Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )

Called from: .\source\classes\btnbmp.prg => TBTNBMP:HANDLEEVENT( 2145 )

Called from: C:\fwh24_10\source\classes\window.prg => _FWH( 3719 )

Called from: => DIALOGBOXINDIRECT( 0 )

Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE( 325 )

Called from: FUENTES\GESTION\CARTERA\FW_REGISTRO_CRE_CARTERA.PRG => REGISTROCARTERA( 254 )

Called from: FUENTES\COMUNES\FW_FUNCSST1.PRG => (b)MENUX( 2180 )

Called from: .\source\classes\menu.prg => TMENU:COMMAND( 1582 )

Called from: C:\fwh24_10\source\classes\window.prg => TWINDOW:COMMAND( 1178 )

Called from: => TWINDOW:HANDLEEVENT( 0 )

Called from: C:\fwh24_10\source\classes\window.prg => _FWH( 3719 )

Called from: => WINRUN( 0 )

Called from: C:\fwh24_10\source\classes\window.prg => TWINDOW:ACTIVATE( 1137 )

Called from: FUENTES\COMUNES\FW_FUNCSST3.PRG => PRINCIPAL_METRO( 7811 )

Called from: FUENTES\COMUNES\FW_FUNCSST1.PRG => PRINCIPAL( 1474 )

Called from: FUENTES\MAIN\ZerusMain.prg => ZERUSMAIN( 4835 )

Called from: zeruswin.prg => MAIN( 17 )

Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Tue Sep 02, 2025 07:01 PM

Error occurred at: 08/30/2025, 18:34:59

Error description: Error BASE/1003 No existe la variable: NCANARTTAR

Stack Calls

===========

Called from: FUENTES\GESTION\INVENTARIOS\INTERFW2.PRG => (b)XLEEREGISTROS( 2445 )

Called from: \xharbour\source\rtl\tget.prg => TCLIPGET:VARGET( 1043 )

Called from: \xharbour\source\rtl\tget.prg => TCLIPGET:SETFOCUS( 913 )

Called from: .\source\classes\tget.prg => TGET:LOSTFOCUS( 2514 )

Called from: .\source\classes\control.prg => TGET:KILLFOCUS( 1196 )

Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1840 )

Called from: .\source\classes\tget.prg => TGET:HANDLEEVENT( 1329 )

Called from: C:\fwh24_10\source\classes\window.prg => _FWH( 3719 )

Called from: => DIALOGBOXINDIRECT( 0 )

Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE( 325 )

Called from: FUENTES\COMUNES\errsysw_14_12.PRG => MYERRORZERUS( 484 )

Called from: FUENTES\COMUNES\errsysw_14_12.PRG => (b)ERRORSYS( 34 )

Called from: FUENTES\GESTION\INVENTARIOS\INTERFW2.PRG => (b)XLEEREGISTROS( 2445 )

Called from: \xharbour\source\rtl\tget.prg => TCLIPGET:VARGET( 1043 )

Called from: .\source\classes\tget.prg => TGET:GOTFOCUS( 3079 )

Called from: => TWINDOW:HANDLEEVENT( 0 )

Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1877 )

Called from: .\source\classes\tget.prg => TGET:HANDLEEVENT( 1329 )

Called from: C:\fwh24_10\source\classes\window.prg => _FWH( 3719 )

Called from: => DIALOGBOXINDIRECT( 0 )

Called from: .\source\classes\dialog.prg => TDIALOG:A

Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Tue Sep 02, 2025 07:02 PM

Time from start: 6 hours 27 mins 32 secs

Error occurred at: 08/30/2025, 14:47:31

Error description: Error BASE/1002 No existe el alias: EMP

Stack Calls

===========

Called from: FUENTES\GESTION\INVENTARIOS\FACTCAPT.PRG => A_FACTCAPT_CAPTURA_( 708 )

Called from: FUENTES\GESTION\INVENTARIOS\FACTCAPT.PRG => A_FACTCAPT_CAPTURA( 70 )

Called from: FUENTES\COMUNES\FW_FUNCSST1.PRG => (b)MENUX( 2179 )

Called from: .\source\classes\menu.prg => TMENU:COMMAND( 1582 )

Called from: C:\fwh24_10\source\classes\window.prg => TWINDOW:COMMAND( 1178 )

Called from: => TWINDOW:HANDLEEVENT( 0 )

Called from: C:\fwh24_10\source\classes\window.prg => _FWH( 3719 )

Called from: => WINRUN( 0 )

Called from: C:\fwh24_10\source\classes\window.prg => TWINDOW:ACTIVATE( 1137 )

Called from: FUENTES\COMUNES\FW_FUNCSST3.PRG => PRINCIPAL_METRO( 7433 )

Called from: FUENTES\COMUNES\FW_FUNCSST1.PRG => PRINCIPAL( 1474 )

Called from: FUENTES\MAIN\ZerusMain.prg => ZERUSMAIN( 4605 )

Called from: zeruswin.prg => MAIN( 17 )

Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Tue Sep 02, 2025 07:12 PM

Para aclarar... no es que tenga un error que no deje funcionar la app... NO

este error se presenta muy esporadicamente... por decir algo asi : 1 de 10000 ejecuciones, pero no siempre en el mismo metodo--

a mi no se me presentan (desarrollo)

Publique el INTERFW2.PRG completo para que los miembros del foro lo lean.:

   @ 508,10 GET oGetArt VAR M->cCodigoTar ;

                OF oCapInv ;

            PICTURE "XXXXXXXXXXXXXXXX";

            PIXEL ;

            SIZE 220*nAjuAnc,40;

            FONT M->oFonAc12;

            NOBORDER;

            UPDATE ;

            COLOR CLR_WHITE, IF(SW_FONDO,RGB(114,192,70),RGB(0,112,188) );

            VALID(  ValidaEnterArticulo(oGetArt,M->cCodigoTar,oPreVen,@cPreVen,oTipDes,@cTipDes,cCodTer,oTransp)

Error description: Error BASE/1002 No existe el alias: TRA ?? Como tu hace el apertura?

este error se da porque ejecuta un valid de un get del formulario ya cerrado (abre y cierra tablas en cada formulario), si ejecuto el valid (ValidaEnterArticulo), de un formulario ya cerrado es logico el error de tabla cerrada-

osea el error se tiene que dar porque no hay tabla abierta... la pregunta es porque se ejcuto esete valid.... desde aqui :

Called from: \xharbour\source\rtl\tget.prg => TCLIPGET:VARGET( 1043 )

Called from: \xharbour\source\rtl\tget.prg => TCLIPGET:SETFOCUS( 913 )

Called from: .\source\classes\tget.prg => TGET:LOSTFOCUS( 2514 )

Called from: .\source\classes\control.prg => TGET:KILLFOCUS( 1196 )

Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1840 )

Gracias, tks, Regards, saludos.

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Tue Sep 02, 2025 07:19 PM

Por ahora, olvídate de las clases de FIVEWIN y concéntrate en tu código: LOS ERRORES ESTÁN EN TU CÓDIGO, algo que escribiste mal. Publicar: función, ValidaEnterArticulo() completa, por favor.

Gracias, tks.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Tue Sep 02, 2025 07:25 PM
#command DBSELECTAREA <(AREA)>  => SelectArea_Inv( <(AREA)> )

FUNCTION ValidaEnterArticulo(oGetArt,cCodArt,oPreVen,cPreVen,oTipDes,cTipDes,cCodTer,oTransp)

LOCAL SW := 1, cLisPre := ""
LOCAL cPatLoc := "C:\TEMP"

IF (oGetArt:nLastKey == 103 .or. oGetArt:nLastKey == 100 .or.  oGetArt:nLastKey == 65 .or. oGetArt:nLastKey == 68  .or. oGetArt:nLastKey == 83)   .AND. !EMPTY(ALLTRIM(cCodArt))
   cCodigoTar := SPACE(16)
   oGetArt:REFRESH()
   oGetArt:SetFocus()
   RETURN .T.
ENDIF

verificaAliasCerradas("VALIDA ENTERARTICULO") // HASTA AQUI LLEGA... PORQUE LA TABLA ESTA CERRADA JUNTO CON EL DIALOGO..
                                                                         // PODRIA HACER APERTURA SI TABLA ESTA CERRADA... 
                                                                         // PERO LO QUIERO ENTENER PRIMERO ES POR SE INVOCO ESTE VALID... YA CERRADO

cambiaTemp(@cPatLoc)

IF SELECT("LEC") == 0
   IF !lUsaTab(cPatLoc+'\',M->FileLTE,"LEC",{},.F.,NIL,"DBFCDX")
      RETURN .F.
   ENDIF
ENDIF


IF SELECT("CLI") == 0
   IF !lUsaTab(M->cPatSis+'\',"CLIENTES.DAT","CLI",{"CLIENTES.CDX"},.T.)
      RETURN .F.
   ENDIF
   DBSEEK_FW(NIL,"CLI",cCodCli)
   /*
   CLI->( DBGOTOP() )
   CLI->( DBSEEK( cCodCli ) )
   */
ENDIF

IF SELECT("CON") == 0
   IF !lUsaTab(M->cPatSis+'\','CONCEPTO.DAT','CON',{'CONCEPTO.CDX'},.T.)
      RETURN .F.
   ENDIF

   // PARA USO DESDE OTRAS FUNCIONES.. DONDE NO ESTA DEFINIDO " M->cCodCon"
   TRY
     IF !( ALLTRIM(M->cNomUsr) == "SUPERVISOR" .OR. M->cUsrEsp == "S" )
        IF !M->xAnexar
           FiltraConceptosPorCaja(cOriReg)
        ENDIF
     ENDIF
     CON->( DBGOTOP() )
     IF !lLocCodigo('cCodigoCon','CON', M->cCodCon) // .AND. CON->( !EOF() )
        CON->( DBGOTOP() )
        M->cCodCon := CON->cCodigoCon
     ENDIF

   CATCH

   END

END

SELECT LEC
IF LEC->( EOF() )

   cTipDes := CLI->cTipDesCli
   IF !(cTipDes $ '1234')
      cTipDes := "1"
   ENDIF
   IF CON->cTipMovCon  == '50' .OR. CON->cTipMovCon  == '20' .OR. ( CON->cTipMovCon  == '70' .AND. CON->cPreVenCon $ "0123456789" )

      IF CON->cPreVenCon $ "0123456789"
         cPreVen := CON->cPreVenCon
      ELSE
         cPreVen := CLI->cPreVenCli
      ENDIF

      cLisPre := ""
      IF PARAMETRO(150,@cLisPre)
         cPreVen := cLisPre
      ENDIF

      IF EMPTY(ALLTRIM(cPreVen))
         cPreVen := "0"
      ENDIF
   ELSE
      IF CON->cPreVenCon == 'C' .OR. CON->cPreVenCon == 'F' .OR. CON->cPreVenCon == 'U' .OR. EMPTY(CON->cPreVenCon)
         cPreVen := "C"
      ELSE
         cPreVen := CON->cPreVenCon
         IF cPreVen == "V"
            cPreVen := CLI->cPreVenCli
         ENDIF
         IF EMPTY(ALLTRIM(cPreVen))
            cPreVen := "C"
         ENDIF
      ENDIF
   ENDIF

   // MANEJO ESPECIAL PARAQUE SUGIERA EL COSTO FIJO O ALMACEN
   IF CON->cTipMovCon == '70' .OR. CON->cTipMovCon == '50' .OR. CON->cTipMovCon == '10'
      IF !EMPTY(ALLTRIM(CON->cPreVenCon))
         IF UPPER(CON->cPreVenCon) == 'C' .OR. UPPER(CON->cPreVenCon) == 'F' .OR. UPPER(CON->cPreVenCon) == 'U'
            cPreVen := "C"
            lCosFij := 0

            IF UPPER(CON->cPreVenCon) == "F"
               lCosFij := 1
            ELSEIF UPPER(CON->cPreVenCon) == "U"
               lCosFij := 2
            ENDIF

         ENDIF

      ENDIF

   ENDIF

   TRY
     oPreVen:Refresh()
     oTipDes:Refresh()
   CATCH

   END

ENDIF


IF PARAMETRO(103)
   IF EMPTY(cCodigoTar)
      RETURN .F.
   ENDIF
ENDIF

   TRY

      IF ( oGetArt:nLastKey == 13 .OR. oGetArt:nLastKey == 9 .OR. oGetArt:nLastKey == 65   ) .AND. EMPTY(ALLTRIM(cCodArt))
         IF !((oBotF02:lFocused) .OR. (oBotF03:lFocused) .OR.;
              (oBotF04:lFocused) .OR. (oBotF05:lFocused) .OR.;
              (oBotF06:lFocused) .OR. (oBotF07:lFocused) .OR.;
              (oBotF08:lFocused) .OR. (oBotF09:lFocused) .OR.;
              (oBotF10:lFocused) .OR. (oBotF11:lFocused) .OR.;
              (oBotF12:lFocused) .OR. (oBotF01:lFocused) .OR.;
              (oBotMan:lFocused) .OR. (oBotAnu:lFocused) .OR.;
              (oBotCpt:lFocused) .OR. (oBotCli:lFocused) .OR.;
              (oBotImp:lFocused) .OR. (oBotCaj:lFocused) .OR.;
              (oBotIva:lFocused) .OR. (oBotRes:lFocused) .OR.;
              (oBotDiv:lFocused) .OR. (oBotTer:lFocused) .OR.;
              (oBotCal:lFocused) .OR. (oBotEsc:lFocused) .OR.;
              (oBotBon:lFocused) .OR. (oBotPun:lFocused) .OR.;
              (oComBox:lFocused) .OR. (oGetCli:lFocused) .OR.;
              (oComVen:lFocused) .OR.;
              (oBotBod:lFocused) .OR.;
              (oTransp:lFocused) .OR. (oPlaFac:lFocused) .OR.;
              (oBotManCli:lFocused) .OR. (oBotProPag:lFocused) .OR.;
              (oFinFac:lFocused) .OR. (oGetTer:lFocused) .OR.;
              (oDocRef:lFocused) .OR. (oDtoCom:lFocused)  )

              oGetArt:SetFocus()
              oGetArt:REFRESH()
              SW := 0

         ENDIF



      ENDIF

      oDocRef:lFocused := .F.
      oBotF10:lFocused := .F.
      oBotF11:lFocused := .F.
      oBotF02:lFocused := .F.
      oBotF08:lFocused := .F.

   CATCH
      SW := 0

   END


   IF PARAMETRO(109)
      reemplazacomilacodebar(@cCodArt)
      cCodigoTar := cCodArt
      oGetArt:REFRESH()
   ENDIF

   IF oGetArt:nLastKey <> 13 .AND. !EMPTY(cCodigoTar) .AND. LEN(cCodigoTar) <>  16
      mymen("Aviso. Para ejecutar otro proceso, debe ingresar un c¢digo de referencia o dejarlo vacio")
      cCodigoTar := SPACE(16)
      oGetArt:REFRESH()
      oGetArt:SetFocus()
   ENDIF

   IF EMPTY(cTipDes)
      cTipDes := "1"
   ENDIF


IF (oGetArt:nLastKey == 103 .or. oGetArt:nLastKey == 100 .or.  oGetArt:nLastKey == 65 .or. oGetArt:nLastKey == 68  .or. oGetArt:nLastKey == 83)   .AND. !EMPTY(ALLTRIM(cCodArt))
   cCodigoTar := SPACE(16)
   oGetArt:REFRESH()
   oGetArt:SetFocus()
   RETURN .T.
ENDIF



RETURN IF(SW==1,.T.,.F.)


//******************************************************************

FUNCTION verificaAliasCerradas(cNomPro)

  LOCAL cAliAct := ALIAS()

  SELECT("LEC")
  SELECT("CON")
  SELECT("TRA")
  SELECT("MOV")
  SELECT("PAG")
  SELECT("CAR")
  SELECT("EMP")
  SELECT("CLA")
  SELECT("ART")

  IF SELECT(cAliAct) <> 0
     SELECT(cAliAct)
  ENDIF


RETURN
Posts: 114
Joined: Fri Nov 24, 2006 09:03 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Tue Sep 02, 2025 11:39 PM

Muchos años atrás, cuando trabaja con DBFs y con unos 40 usuarios, no tenía problemas.

Luego la empresa fue creciendo y los usuarios fueron aumentando, cuando llegué a los 100 usuarios en promedio, empezaron aparecer el problema de "Error BASE/1002 No existe el alias:", no entendía el problema, porque el Aplicativo siempre había funcionado bien. Por lo tanto, empece a investigar pero no daba con el problema, y los usuarios fueron aumentando así como el problema de "Error BASE/1002 No existe el alias:", además de errores con los índices. Entendí que la cantidad de transacciones sobre varias tablas principales terminaban bloqueadas de vez en cuando (creo que por la cantidad de concurrencia de los usuarios).

Así que decidí migrar a Sql-server (poco a poco) y asunto arreglado.

Esa fue es mi experiencia.

Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Wed Sep 03, 2025 03:12 PM

Buen dia....

Gracias por responder...

Si efectivamente estoy en proceso de pasar a sql - fivewin,,,, y dejar dbfs y SQLRDD...

Pero hay otra realidad.. en los servidores con windows server + terminal server (RDP) , y con clientes de mayor numero de transacciones y usuarios... no es muy frecuente, pasan meses sin errores de este tipo..

podria ser algo en el entorno windows pc , que genera estos cierres esporadicos...

Tambien tenia muchos errores con xbrowse setrdd... pero antonio publico una version que redujo estos errores

Sigo tratando de identificar que factor externo afecta al sistema o ante que eventos del codigo usado o forma de programacion , es que se generarn estas anormalidades..

Observacion : No puede ser error de sintaxis, dado que este codigo lo usan mas de 400 clientes en los ultimos 20 años... y en mi entorno de desarrollo y con clientes con windows server , no se presenta... Al ser esporadicos los clientes paracticamente no lo notan y no lo reportan... (se sale del sistema a ingresan ).... pero como a mi llegan los correos con el log de errores, directamente generado por la aplicacion, de todos los clientes (10 aprox. al dia)... es donde se genera la inquietud de que esta pasando y que para mi no tiene errores de logica de programación...pero estoy buscando el concepto y ayuda de un experto que me ayude a identificar la causa del problema...

Gracias

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Wed Sep 03, 2025 04:55 PM
Buenas tardes, fíjense bien donde escribí: "AQUÍ".
AQUI:
// PARA? CUAL FINALIDAD? NO CONOCO. SORRY.
#command DBSELECTAREA <(AREA)>  => SelectArea_Inv( <(AREA)> )

FUNCTION ValidaEnterArticulo( oGetArt, cCodArt, oPreVen, cPreVen, oTipDes, ;
                              cTipDes, cCodTer, oTransp )

   LOCAL SW := 1, cLisPre := ""
   LOCAL cPatLoc := "C:\TEMP"

   IF ( oGetArt:nLastKey == 103   .OR.  oGetArt:nLastKey == 100 .OR. ;
        oGetArt:nLastKey ==  65   .OR.  oGetArt:nLastKey ==  68 .OR. ;
        oGetArt:nLastKey ==  83 ) .AND. !EMPTY( ALLTRIM( cCodArt ) )

      cCodigoTar := SPACE( 16 )

      oGetArt:VARPUT( cCodigoTar ) // AQUI
      oGetArt:REFRESH()

      oGetArt:SetFocus() // ???

      RETURN( .T. )

   ENDIF

   // AQUI
   // PARA? NO DEBES CERRAR LAS TABLAS EN TIEMPO REAL Y SI AL SALIR DEL SISTEMA

   verificaAliasCerradas( "VALIDA ENTERARTICULO" ) // HASTA AQUI LLEGA... PORQUE LA TABLA ESTA CERRADA JUNTO CON EL DIALOGO..

   // PODRIA HACER APERTURA SI TABLA ESTA CERRADA...
   // PERO LO QUIERO ENTENER PRIMERO ES POR SE INVOCO ESTE VALID... YA CERRADO

   // PONGA UN MSGRUN()
   cambiaTemp( @cPatLoc ) // VERIFIQUE, FUNCIONA BIEN?

   IF SELECT( "LEC" ) == 0

      IF !lUsaTab( cPatLoc + '\', M->FileLTE, "LEC", {}, .F. , NIL, "DBFCDX" )

         // MENSAGERIA DE AVISO?

         RETURN( .F. )

      ENDIF

   ENDIF

   IF SELECT( "CLI" ) == 0

      IF !lUsaTab( M->cPatSis + '\', "CLIENTES.DAT", "CLI", { "CLIENTES.CDX" }, .T. )

         // MENSAGERIA?

         RETURN( .F. )

      ENDIF

      // DBSEEK_FW -> NO CONOCO.
      DBSEEK_FW( NIL, "CLI", cCodCli ) // AQUI -> QUE TERRIBLE ??

      IF( .NOT. FOUND() ) // AQUI

         // MENSAGERIA

         RETURN( .F. )

      ENDIF

      /*
      CLI->( DBGOTOP() )
      CLI->( DBSEEK( cCodCli ) )
      */

   ENDIF

   IF SELECT( "CON" ) == 0  // ???

      // AQUI, FUNCIONA BIEN?
      IF !lUsaTab( M->cPatSis + '\', 'CONCEPTO.DAT', 'CON', { 'CONCEPTO.CDX' }, .T. )

         // MENSAGERIA?
         RETURN( .F. )

      ENDIF

      // PARA USO DESDE OTRAS FUNCIONES.. DONDE NO ESTA DEFINIDO " M->cCodCon"
      TRY

         IF !( ALLTRIM(M->cNomUsr) == "SUPERVISOR" .OR. M->cUsrEsp == "S" )

            IF !M->xAnexar
               FiltraConceptosPorCaja(cOriReg)
            ENDIF

         ENDIF

         CON->( DBGOTOP() )

         IF !lLocCodigo( 'cCodigoCon', 'CON', M->cCodCon ) // .AND. CON->( !EOF() )

            CON->( DBGOTOP() )
            M->cCodCon := CON->cCodigoCon

         ENDIF

      CATCH

         END // AQUI ??? DOS END? NO ME HACE SENTIDO! ???

      END

      SELECT LEC

      IF LEC->( EOF() ) // AQUI ???

         cTipDes := CLI->cTipDesCli

         IF !( cTipDes $ '1234' )

            cTipDes := "1"

         ENDIF

         IF CON->cTipMovCon  == '50' .OR. CON->cTipMovCon  == '20' .OR. ( CON->cTipMovCon  == '70' .AND. CON->cPreVenCon $ "0123456789" )

            IF CON->cPreVenCon $ "0123456789"
               cPreVen := CON->cPreVenCon
            ELSE
               cPreVen := CLI->cPreVenCli
            ENDIF

            cLisPre := ""

            IF PARAMETRO( 150, @cLisPre )

               cPreVen := cLisPre

            ENDIF

            IF EMPTY( ALLTRIM( cPreVen ) )

               cPreVen := "0"

            ENDIF

         ELSE

            IF CON->cPreVenCon == 'C' .OR. CON->cPreVenCon == 'F' .OR. ;
               CON->cPreVenCon == 'U' .OR. EMPTY( CON->cPreVenCon )

               cPreVen := "C"

            ELSE

               cPreVen := CON->cPreVenCon

               IF cPreVen == "V"

                  cPreVen := CLI->cPreVenCli

               ENDIF

               IF EMPTY( ALLTRIM( cPreVen ) )

                  cPreVen := "C"

               ENDIF

            ENDIF

         ENDIF

         // MANEJO ESPECIAL PARAQUE SUGIERA EL COSTO FIJO O ALMACEN
         IF CON->cTipMovCon == '70' .OR. CON->cTipMovCon == '50' .OR. ;
            CON->cTipMovCon == '10'

            IF !EMPTY( ALLTRIM( CON->cPreVenCon ) )

               IF UPPER( CON->cPreVenCon ) == 'C' .OR. ;
                  UPPER( CON->cPreVenCon ) == 'F' .OR. ;
                  UPPER( CON->cPreVenCon ) == 'U'

                  cPreVen := "C"
                  lCosFij := 0

                  IF UPPER( CON->cPreVenCon ) == "F"

                     lCosFij := 1

                  ELSEIF UPPER( CON->cPreVenCon ) == "U"

                     lCosFij := 2

                  ENDIF

               ENDIF

            ENDIF

         ENDIF

         TRY  // PARA?

            oPreVen:Refresh()
            oTipDes:Refresh()

         CATCH

           // NADA? AQUI

         END

      ENDIF

      IF PARAMETRO( 103 )

         IF EMPTY( cCodigoTar )

            // MENSAGERIA?
            RETURN( .F. )

         ENDIF

      ENDIF

      TRY

         IF ( oGetArt:nLastKey == 13   .OR.  oGetArt:nLastKey == 9 .OR. ;
              oGetArt:nLastKey == 65 ) .AND. EMPTY( ALLTRIM( cCodArt ) ) )

            // NO COMPRENDO, ESTO FUNCIONA BIEN? MUCHAS CONDICIONES.
            IF !( ( oBotF02:lFocused ) .OR. ( oBotF03:lFocused ) .OR. ;
                  ( oBotF04:lFocused ) .OR. ( oBotF05:lFocused ) .OR. ;
                  ( oBotF06:lFocused ) .OR. ( oBotF07:lFocused ) .OR. ;
                  ( oBotF08:lFocused ) .OR. ( oBotF09:lFocused ) .OR. ;
                  ( oBotF10:lFocused ) .OR. ( oBotF11:lFocused ) .OR. ;
                  ( oBotF12:lFocused ) .OR. ( oBotF01:lFocused ) .OR. ;
                  ( oBotMan:lFocused ) .OR. ( oBotAnu:lFocused ) .OR. ;
                  ( oBotCpt:lFocused ) .OR. ( oBotCli:lFocused ) .OR. ;
                  ( oBotImp:lFocused ) .OR. ( oBotCaj:lFocused ) .OR. ;
                  ( oBotIva:lFocused ) .OR. ( oBotRes:lFocused ) .OR. ;
                  ( oBotDiv:lFocused ) .OR. ( oBotTer:lFocused ) .OR. ;
                  ( oBotCal:lFocused ) .OR. ( oBotEsc:lFocused ) .OR. ;
                  ( oBotBon:lFocused ) .OR. ( oBotPun:lFocused ) .OR. ;
                  ( oComBox:lFocused ) .OR. ( oGetCli:lFocused ) .OR. ;
                  ( oComVen:lFocused ) .OR. ;
                  ( oBotBod:lFocused ) .OR. ;
                  ( oTransp:lFocused ) .OR. ( oPlaFac:lFocused ) .OR. ;
                  ( oBotManCli:lFocused ) .OR. ( oBotProPag:lFocused ) .OR. ;
                  ( oFinFac:lFocused ) .OR. ( oGetTer:lFocused ) .OR. ;
                  ( oDocRef:lFocused ) .OR. ( oDtoCom:lFocused )  )

               oGetArt:SetFocus()
               oGetArt:REFRESH()

               SW := 0

            ENDIF

         ENDIF

         // ES BOTON? MEJOR USAR ENABLE/DISABLE -> AQUI
         oDocRef:lFocused := .F.
         oBotF10:lFocused := .F.
         oBotF11:lFocused := .F.
         oBotF02:lFocused := .F.
         oBotF08:lFocused := .F.

      CATCH

         SW := 0

      END

      IF PARAMETRO( 109 )

         reemplazacomilacodebar( @cCodArt ) // VERIFIQUE RETORNO AQUI

         cCodigoTar := cCodArt

         oGetArt:VARPUT( cCodigoTar ) // AQUI
         oGetArt:REFRESH()

      ENDIF

      // AQUI
      IF oGetArt:nLastKey  != 13 .AND. !EMPTY( cCodigoTar ) .AND. ;
         LEN( cCodigoTar ) != 16  // AQUI

         mymen( "Aviso. Para ejecutar otro proceso, debe ingresar un c¢digo de referencia o dejarlo vacio" )

         cCodigoTar := SPACE( 16 )

         oGetArt:VARPUT( cCodigoTar ) // AQUI
         oGetArt:REFRESH()

         oGetArt:SetFocus()

      ENDIF

      IF EMPTY( cTipDes )

         cTipDes := "1"

      ENDIF

      IF ( oGetArt:nLastKey == 103  .OR. oGetArt:nLastKey == 100 .OR.  ;
           oGetArt:nLastKey == 65   .OR. oGetArt:nLastKey ==  68 .OR.  ;
           oGetArt:nLastKey == 83 ) .AND. !EMPTY( ALLTRIM( cCodArt ) )

         cCodigoTar := SPACE( 16 )

         oGetArt:VARPUT( cCodigoTar ) // AQUI
         oGetArt:REFRESH()

         oGetArt:SetFocus()

         RETURN .T.

      ENDIF

RETURN IF( SW == 1, .T. , .F. )  // FUNCIONA BIEN? YO NO HARIA ASI.

FUNCTION verificaAliasCerradas(cNomPro) // NO ME HACE SENTIDO ESTO.

  LOCAL cAliAct := ALIAS()

  // NO CIERRE LAS TABLAS EN TIEMPO REAL, SOLO AL SALIR DEL SISTEMA.
  SELECT("LEC")
  SELECT("CON")
  SELECT("TRA")
  SELECT("MOV")
  SELECT("PAG")
  SELECT("CAR")
  SELECT("EMP")
  SELECT("CLA")
  SELECT("ART")

  IF SELECT(cAliAct) <> 0

     SELECT(cAliAct) // PORQUE?

     IF( !EOF() ) // AQUI

       ? MENSAGERIA, cAliAct

     ENDIF

  ENDIF

RETURN NIL
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Wed Sep 03, 2025 06:05 PM

buenas tardes

Porque no usas ads server con poco cambio en codigo ya lo solucionarias

a la orden cualquier inquietud, al menos solucionarias hasta que migres a sql

saludos

Wilson

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Wed Sep 03, 2025 07:04 PM

Buena tarde...

Si tambien lo uso... y efectivamente ha funcionado... pero por el precio no todos los clientes lo pueden comprar.. (remote)

Gracias

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Sat Sep 06, 2025 11:26 AM
Buenas estimados

Lo aconsejable es abrir las DBF como objeto y evitar los ALIAS

DATABASE oDBF

oDBF:NOMBRE en vez de ALIAS->NOMBRE

Usando las bases como objeto es mas facil migrar a MariaDB/MySql
   USE CUENTAS NEW SHARED
   DATABASE oCTAS
   
   oCTAS:=oCn:RowSet( "SELECT * FROM CUENTAS ORDER BY CODIGO")
La programación es la misma con algunas exepciones
Saludos,



Adhemar C.
Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Mon Sep 08, 2025 01:03 PM

Buen dia...

Gracias por responder...

Ya estoy en proceso de migracion a mariaDb con fivewin... con tres opciones : usando cursores nativos (rowset) o TarrayData o con tablas dbf temporales y locales... para NO mantener la tabla abierta y asi trabajar "desconectado" de la base de datos y hacer los procesos controlados al actualizar la base de datos (tradicional, socket, websocket...)... y asi mismo esta tecnica la puedo aplicar a tablas DBF'S, y asi tener dos opciones DBF O SQL...estables . Para determinar la opcion mas confiable y recomendada (tener estabilidad tecnica), estoy en proceso de iniciar una asesoria directa a mi plataforma de desarrollo, con el el maestro Cristobal Navarro..

La clase DATABASE tiene similitud en el manejo de un cursor, pero por su filosifa requiere mantener la tabla abierta... y este es parte de mi problema actual...cierre esporadico de tablas.... Pregunto : es viable trabajar DATABASE con tabla cerrada... y cuando requiera la data, se conecte y desconecte automaticamente ?

Saludos...

Posts: 114
Joined: Fri Nov 24, 2006 09:03 PM
Re: Requiero explicacion error ACTIVATE DIALOG
Posted: Mon Sep 08, 2025 07:36 PM
russimicro wrote: Buen dia...

Gracias por responder...

Ya estoy en proceso de migracion a mariaDb con fivewin... con tres opciones : usando cursores nativos (rowset) o TarrayData o con tablas dbf temporales y locales... para NO mantener la tabla abierta y asi trabajar "desconectado" de la base de datos y hacer los procesos controlados al actualizar la base de datos (tradicional, socket, websocket...)... y asi mismo esta tecnica la puedo aplicar a tablas DBF'S, y asi tener dos opciones DBF O SQL...estables . Para determinar la opcion mas confiable y recomendada (tener estabilidad tecnica), estoy en proceso de iniciar una asesoria directa a mi plataforma de desarrollo, con el el maestro Cristobal Navarro..

La clase DATABASE tiene similitud en el manejo de un cursor, pero por su filosifa requiere mantener la tabla abierta... y este es parte de mi problema actual...cierre esporadico de tablas.... Pregunto : es viable trabajar DATABASE con tabla cerrada... y cuando requiera la data, se conecte y desconecte automaticamente ?

Saludos...


En mi experiencia:

ANTERIORMENTE (Con DBFs), trabaja así:
1- Abría la tabla
2- obtenía la información Deseada.
3- Cerraba la tabla.
4- Con la información obtenida (Punto 2) realizaba lo siguiente:

4.1- Visualizar, Agregar Modificar, Eliminar.

4.2- En caso que el usuario Agregaba Modificaba o Eliminaba, realizaba lo siguiente:
- Abría la tabla
- Insertaba, Actualizaba o Eliminaba.
- Cerraba la tabla

** Pero como mencioné en un mensaje anterior, al aumentar los usuarios empezaron los problemas del "ALIAS"



ACTUALMENTE Con Motor de BD (Mysql, MariaDb, Sql-server, Oracle..etc)
1.- Me conecto a la BD.
2.- Obtengo la información (En un Array).
3.- Cierro la conexión.
4.- Con la información obtenida (Punto 2, en un Array ) realizo lo siguiente:

4.1- Visualizar, Agregar Modificar, Eliminar.

4.2- En caso que el usuario Agregue, Modifique o Elimine realizo lo siguiente:
4.2.1.- Me conecto a la BD.
4.2.2.- Agrego, Actualizo o Elimino en la BD
4.2.3.- Cierro la conexión.
4.2.4.- Actualizo en la grilla (XBrowse) los cambios.


Personalmente creo que usar CURSORES es como seguir usando DBFs.


>> Para determinar la opcion mas confiable y recomendada (tener estabilidad tecnica),
>> estoy en proceso de iniciar una asesoria directa a mi plataforma de desarrollo,
>> con el el maestro Cristobal Navarro..

Estarás en Buenas Manos. :D :D