Error al ejecutar sentencias- Variable does not exist: SELF

Error al ejecutar sentencias- Variable does not exist: SELF

Postby ruben Dario » Tue Nov 01, 2011 2: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: Select all  Expand view

 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: Select all  Expand view



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: Select all  Expand view

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)

 
Last edited by ruben Dario on Tue Nov 01, 2011 4:41 pm, edited 2 times in total.
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Error al ejecutar sentencias- Variable does not exist: SELF

Postby Bayron » Tue Nov 01, 2011 3:15 pm

Ruben,

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

Code: Select all  Expand view
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: Select all  Expand view
ACTION  &::aMenu1[ nMenu,3 ]
Last edited by Bayron on Tue Nov 01, 2011 7:07 pm, edited 1 time in total.
=====>

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

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Error al ejecutar sentencias- Variable does not exist: SELF

Postby ruben Dario » Tue Nov 01, 2011 4: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
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Error al ejecutar sentencias- Variable does not exist: SELF

Postby Bayron » Tue Nov 01, 2011 7:14 pm

Intentaste con:

Code: Select all  Expand view
ACTION  Eval( ::aMenu1[ nMenu,3 ] )
 


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

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

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Error al ejecutar sentencias- Variable does not exist: SELF

Postby ruben Dario » Tue Nov 01, 2011 8: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
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Error al ejecutar sentencias- Variable does not exist: SELF

Postby ACC69 » Tue Nov 01, 2011 9: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.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Error al ejecutar sentencias- Variable does not exist: SELF

Postby Antonio Linares » Tue Nov 01, 2011 10:08 pm

Ruben,

Prueba asi:
Code: Select all  Expand view
        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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error al ejecutar sentencias- Variable does not exist: SELF

Postby ruben Dario » Wed Nov 02, 2011 2:56 pm

Gracias Antonio

Pero me da este Error
Code: Select all  Expand view

  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: Select all  Expand view

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: Select all  Expand view

          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
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Error al ejecutar sentencias- Variable does not exist: SELF

Postby Antonio Linares » Wed Nov 02, 2011 3:49 pm

Ruben,

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

Code: Select all  Expand view

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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error al ejecutar sentencias- Variable does not exist: SELF

Postby ruben Dario » Wed Nov 02, 2011 8:05 pm

Gracias Maestro Antonio..

Funciono
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 91 guests