FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error al ejecutar sentencias- Variable does not exist: SELF
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Tue Nov 01, 2011 02:55 PM
Saludos al Forum

Tengo en la base de datos una columna y tiene almacenado esta Instrucion {|| Accesos("PROG_VENDED()","PROG_VENDED",0,::oWnd) } y la quiero ejecutar.

Code (fw): Select all Collapse
 MENUITEM "&Movimientos"
   MENU
   FOR nMenu = 1 To LEN( ::aMenu1 )
      nCont++
      *--//Accesos("PROG_VENDED()","PROG_VENDED",0,::oWnd)
      IF ! EMPTY( ::aMenu1 )
         MENUITEM oItem PROMPT ::aMenu1[ nMenu,1]  OF ::oMenu ;
         MESSAGE ::aMenu1[ nMenu,2 ] ACTION ::aMenu1[ nMenu,3 ]  
       // tambien lo he cambiado asi      BLOCK oApp:aMenu2[nMenu,3]
          *--
      ENDIF
  NEXT nMenu
  ENDMENU
  nCont := 0


Aqui lleno la matriz

[code]
   DO WHILE ! oQuery:Eof()
      nOp := SUBSTR( oQuery:Fields("codigo"):Value,1,1 )
      cDato1  := ALLTRIM( oQuery:Fields("opcion"):Value )
      cDato2  := ALLTRIM( oQuery:Fields("aviso"):Value ) 
      cBlock2 := ALLTRIM( oQuery:Fields("modulo"):Value  )
      *--
      IF ! EMPTY( oQuery:Fields("modulo"):Value )
         cDato3 := &(cBlock2)
      ELSE
         cDato3 := cBlock1
      ENDIF
      cDato4 := ALLTRIM( oQuery:Fields("recurso"):Value )
      *--
      cText := "aMenu"
      cText += nOp
      AADD( ::&cText, { cDato1, cDato2, cDato3, cDato4 } )
      oQuery:MoveNext()
   ENDDO

[/code]



Cuando lo ejecuto con ACTION ::aMenu1[ nMenu,3 ] me da este error
Code (fw): Select all Collapse
Application
===========
   Path and name: K:\proy_harb\plastwin.Exe (32 bits)
   Size: 1,664,512 bytes
   Time from start: 0 hours 0 mins 11 secs 
   Error occurred at: 11/01/2011, 09:48:48
   Error description: Error BASE/1132  Bound error: array access
   Args:
     [   1] = A   { ... }
     [   2] = N   7

Stack Calls
===========
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => (b)MENU01_1:DBUILMENU(725)
   Called from: .\source\classes\MENU.PRG => TMENU:COMMAND(484)
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:COMMAND(1048)
   Called from: .\source\classes\MDIFRAME.PRG => TMDIFRAME:COMMAND(243)
   Called from:  => TMDIFRAME:HANDLEEVENT(0)
   Called from: .\source\classes\WINDOW.PRG => _FWH(3443)
   Called from:  => WINRUN(0)
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(995)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => MENU01_1:DIALMEN00(198)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => MENU01_1:NEW(1482)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenu.prg => MAIN(541)



Cuano lo ejecuto con BLOCK ::aMenu1[ nMenu,3 ] me da este error

Code (fw): Select all Collapse
Application
===========
   Path and name: K:\proy_harb\plastwin.Exe (32 bits)
   Size: 1,664,512 bytes
   Time from start: 0 hours 0 mins 9 secs 
   Error occurred at: 11/01/2011, 09:42:22
   Error description: Error BASE/1003  Variable does not exist: SELF

Stack Calls
===========
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => (b)MENU01_1:MENUGEN(1002)
   Called from: .\source\classes\MENU.PRG => TMENU:COMMAND(484)
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:COMMAND(1048)
   Called from: .\source\classes\MDIFRAME.PRG => TMDIFRAME:COMMAND(243)
   Called from:  => TMDIFRAME:HANDLEEVENT(0)
   Called from: .\source\classes\WINDOW.PRG => _FWH(3443)
   Called from:  => WINRUN(0)
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(995)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => MENU01_1:DIALMEN00(198)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => MENU01_1:NEW(1482)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenu.prg => MAIN(541)
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Tue Nov 01, 2011 03:15 PM
Ruben,

El problema es que ahora solamente estas dando un String a Action:

Code (fw): Select all Collapse
 ACTION ::aMenu1[ nMenu,3 ]


Creo que tendrás que evaluar el contenido del String, creo que con Eval(), pero yo no se como hacer eso...

Intenta con:

Code (fw): Select all Collapse
 ACTION  &::aMenu1[ nMenu,3 ]

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Tue Nov 01, 2011 04:44 PM

O he hecho de esta manera da lo mismos , parece el mensaje parece que no esta definida la matriz , pero si esta.

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Tue Nov 01, 2011 07:14 PM
Intentaste con:

Code (fw): Select all Collapse
ACTION  Eval( ::aMenu1[ nMenu,3 ] )


No estoy seguro que ese sea su uso, pero intenta con eso...

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Tue Nov 01, 2011 08:40 PM

Si tambien hize pruebas con el que me dices,.
Me da la impresion que se pierde la direccion porque antes de ejecutar la accion o el bloque , veo el contenido del arreglo, a no ser que hay un problema en la clase.

Error occurred at: 11/01/2011, 09:48:48
Error description: Error BASE/1132 Bound error: array access

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Tue Nov 01, 2011 09:10 PM
ruben Dario wrote:Si tambien hize pruebas con el que me dices,.
Me da la impresion que se pierde la direccion porque antes de ejecutar la accion o el bloque , veo el contenido del arreglo, a no ser que hay un problema en la clase.



Error occurred at: 11/01/2011, 09:48:48
Error description: Error BASE/1132 Bound error: array access


Hola buenas tardes Ruben Dario, no estaras declarando mal tu variable de arrays?? un ejemplo como ese ...

aSum := {{00,00,00,00,00,00}}

Y aqui con la instruccion de ...

aSum[1,1] := x valor
aSum[1,2] := x valor
aSum[1,3] := x valor
aSum[1,4] := x valor
aSum[1,5] := x valor
aSum[1,6] := x valor

Es una idea....checalo Ruben

Saludos.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Tue Nov 01, 2011 10:08 PM
Ruben,

Prueba asi:
Code (fw): Select all Collapse
         MENUITEM oItem PROMPT ::aMenu1[ nMenu,1]  OF ::oMenu ;
         MESSAGE ::aMenu1[ nMenu,2 ] 
             oItem:bAction = GenAction( ::aMenu1[ nMenu,3 ], oItem )

...
function GenAction( bAction, oItem )

return { || Eval( bAction, oItem ) }
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Wed Nov 02, 2011 02:56 PM
Gracias Antonio

Pero me da este Error
Code (fw): Select all Collapse
  Path and name: K:\proy_harb\plastwin.Exe (32 bits)
   Size: 1,664,512 bytes
   Time from start: 0 hours 0 mins 9 secs 
   Error occurred at: 11/02/2011, 09:23:28
   Error description: Error BASE/1004  Class: 'CHARACTER' has no exported method: EVAL
   Args:
     [   1] = C   {|| Accesos("PROG_VENDED()","PROG_VENDED",0,::oWnd) }
     [   2] = O   Object:TMENUITEM

Stack Calls
===========
   Called from:  => EVAL(0)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => (b)GENACTION(780)
   Called from: .\source\classes\MENU.PRG => TMENU:COMMAND(484)
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:COMMAND(1048)
   Called from: .\source\classes\MDIFRAME.PRG => TMDIFRAME:COMMAND(243)
   Called from:  => TMDIFRAME:HANDLEEVENT(0)
   Called from: .\source\classes\WINDOW.PRG => _FWH(3443)
   Called from:  => WINRUN(0)
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(995)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => MENU01_1:DIALMEN00(202)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => MENU01_1:NEW(1511)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenu.prg => MAIN(541)


Cambio la Instruccion asi

return { || Eval( &(bAction), oItem ) }
Me da este error

Code (fw): Select all Collapse
Application
===========
   Path and name: K:\proy_harb\plastwin.Exe (32 bits)
   Size: 1,664,512 bytes
   Time from start: 0 hours 18 mins 39 secs 
   Error occurred at: 11/02/2011, 09:52:15
   Error description: Error BASE/1003  Variable does not exist: SELF

Stack Calls
===========
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => (b)GENACTION(780)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => (b)GENACTION(780)
   Called from: .\source\classes\MENU.PRG => TMENU:COMMAND(484)
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:COMMAND(1048)
   Called from: .\source\classes\MDIFRAME.PRG => TMDIFRAME:COMMAND(243)
   Called from:  => TMDIFRAME:HANDLEEVENT(0)
   Called from: .\source\classes\WINDOW.PRG => _FWH(3443)
   Called from:  => WINRUN(0)
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(995)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => MENU01_1:DIALMEN00(202)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenbar.prg => MENU01_1:NEW(1511)
   Called from: K:\PROY_H~1\PRG_XH\pxpmenu.prg => MAIN(541)

System


Si Lo trabajo asi Funcion , la idea es que tengo una base de datos con todas estas opciones y ejecutar de acuerdo al ejemplo anterior,
Code (fw): Select all Collapse
          MENUITEM "&Vendedores" MESSAGE "Registro de Vendedores" NAME  "USUARIO1";
                  ACTION  Accesos("PROG_VENDED()","PROG_VENDED",0,::oWnd)
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Wed Nov 02, 2011 03:49 PM
Ruben,

El error viene del "::oWnd" que tienes en la expresión. Una posible solución sería:

Code (fw): Select all Collapse
function GenAction( cAction, oItem )

return { || Ejecuta( cAction, oItem ) }

static function Ejecuta( cAction, oItem )

   private Self := oItem:oMenu

return Eval( &cAction, oItem )
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: Error al ejecutar sentencias- Variable does not exist: SELF
Posted: Wed Nov 02, 2011 08:05 PM

Gracias Maestro Antonio..

Funciono

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com

Continue the discussion