Variable no existe

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
edufloriv
Posts: 240
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

Variable no existe

Post by edufloriv »

Hola amigos.

Este es el módulo:

Code: Select all

* ------------------------------------------------------ *
* SISTEMA     : SISCOMFAR                                *
* PRG         : DEVOPROV.PRG                             *
* CREADO      : 20-04-2013                               *
* ACTUALIZADO :                                          *
* AUTOR       : EDUARDO V. FLORES RIVAS                  *
* COMENTARIOS : PRG PARA REGISTRO DE DEVOLUCIONES PROV.  *
* ------------------------------------------------------ *

PROC Devoluciones

   IF IsWindowDefined(Win_Devols) = .T.
      MINIMIZE WINDOW Win_Devols
      RESTORE WINDOW Win_Devols
      RETURN
   ENDIF

PRIVATE nDevoCargada   := 0
PRIVATE aEstados       := {'Pendiente','Devuelto','Anulado'}
PRIVATE SIS_PRINTER    := GetDefaultPrinter()
PRIVATE DH_MODO        := 'Nada'
PRIVATE DH_TIPO        := 0

DEFINE WINDOW Win_Devols ;
   AT 0 , 0 ;
   WIDTH 1020 HEIGHT 700 ;
   TITLE "DEVOLUCIONES A PROVEEDOR" ;
   FONT "Arial" SIZE 9 ;
   CHILD ;
   NOMAXIMIZE ;
   ON INIT DevolIniciar()

   ON KEY CONTROL+R      OF Win_Devols ACTION DevolReImprimir()
   ON KEY CONTROL+C      OF Win_Devols ACTION DevolImprimirCopia()
   ON KEY CONTROL+I      OF Win_Devols ACTION DevolElegirImpresora()
   ON KEY CONTROL+DELETE OF Win_Devols ACTION DevolAnular()

*
*    TOOLBAR
*
   DEFINE TOOLBAR DevolBarra BUTTONSIZE 70,30 FLAT BORDER

      BUTTON BotNuevo      ;
         CAPTION '&Nueva'  ;
         PICTURE 'imagen\nuevo.bmp'   ;
         ACTION DevolNueva()

      BUTTON BotAbrir       ;
         CAPTION '&Abrir'   ;
         PICTURE 'imagen\abrir.bmp' ;
         ACTION DevolAbrir()

      BUTTON BotGrabar       ;
         CAPTION '&Grabar'   ;
         PICTURE 'imagen\grabar.bmp' ;
         ACTION DevolGrabar()

      BUTTON BotAnular     ;
         CAPTION '&Anular'   ;
         PICTURE 'imagen\equis.bmp' ;
         ACTION DevolAnular()

      BUTTON BotReportes ;
         CAPTION '&Reportes' ;
         PICTURE 'imagen\reporte.bmp' ;
         WHOLEDROPDOWN
         DEFINE DROPDOWN MENU BUTTON BotReportes
            ITEM 'Devoluciones Pendientes de Entrega'          ACTION DevolAProvPend()
         END MENU

      BUTTON BotSalir     ;
         CAPTION '&Salir'   ;
         PICTURE 'imagen\salir.bmp' ;
         ACTION DevolSalir()

   END TOOLBAR
*
*    ENCABEZADO
*
   @ 050 , 010 FRAME FraCabeza ;
      WIDTH  650 ;
      HEIGHT 135

   @ 070 , 020 LABEL LblOpera ;
      WIDTH  90 ;
      HEIGHT 20 ;
      VALUE "Devolución No:" ;
      ACTION DevolAbrir('xnum') ;
      RIGHTALIGN ;
      FONTCOLOR Color_Label3_Font ;
      BACKCOLOR Color_Label3_Back

   @ 070 , 110 TEXTBOX TxtOpera ;
      HEIGHT 20 ;
      READONLY ;
      WIDTH  90 ;
      NUMERIC INPUTMASK '99999999'

   @ 070 , 220 LABEL LblRefer ;
      WIDTH  90 ;
      HEIGHT 20 ;
      VALUE "Num.Fac.Prov.:" ;
      RIGHTALIGN ;
      FONTCOLOR Color_Label3_Font ;
      BACKCOLOR Color_Label3_Back

   @ 070 , 310 TEXTBOX TxtRefer ;
      WIDTH  90 ;
      HEIGHT 20 ;
      READONLY ;
      NUMERIC INPUTMASK '9999999'

   @ 070 , 420 LABEL LblDoc ;
      WIDTH  90 ;
      HEIGHT 20 ;
      VALUE "Doc.Fac.Prov.:" ;
      RIGHTALIGN ;
      FONTCOLOR Color_Label3_Font ;
      BACKCOLOR Color_Label3_Back

   @ 070 , 510 TEXTBOX TxtDoc ;
      WIDTH  110 ;
      HEIGHT 20 ;
      INPUTMASK '999-99999999' ;
      ON ENTER Win_Devols.BotAgregar.Setfocus

   @ 100 , 020 LABEL LblProveedor ;
      WIDTH  90 ;
      HEIGHT 20 ;
      VALUE "Proveedor:" ;
      FONTCOLOR Color_Label3_Font ;
      BACKCOLOR Color_Label3_Back ;
      RIGHTALIGN

   @ 100 , 110 TEXTBOX TxtProvCod ;
      WIDTH  90 ;
      HEIGHT 20 ;
      READONLY ;
      RIGHTALIGN

   @ 100 , 220 TEXTBOX TxtProvDes ;
      WIDTH  400 ;
      HEIGHT 20 ;
      READONLY

   @ 130 , 020 LABEL LblProvDat ;
      WIDTH  90 ;
      HEIGHT 20 ;
      VALUE "Datos Prov.:" ;
      RIGHTALIGN ;
      FONTCOLOR Color_Label3_Font ;
      BACKCOLOR Color_Label3_Back

   @ 130 , 110 TEXTBOX TxtProvRuc ;
      WIDTH  90 ;
      HEIGHT 20 ;
      READONLY ;
      RIGHTALIGN

   @ 130 , 220 TEXTBOX TxtProvDir ;
      WIDTH 400 ;
      HEIGHT 20 ;
      READONLY

   @ 160 , 020 LABEL LblEstado ;
      WIDTH  90 ;
      HEIGHT 20 ;
      VALUE "Estado:" ;
      RIGHTALIGN ;
      FONTCOLOR Color_Label3_Font ;
      BACKCOLOR Color_Label3_Back

   @ 160 , 110 COMBOBOX CmbEstado ;
      WIDTH  120 ;
      ITEMS aEstados

   @ 160 , 240 LABEL LblFecha ;
      WIDTH  90 ;
      HEIGHT 20 ;
      VALUE "Fecha:" ;
      RIGHTALIGN ;
      FONTCOLOR Color_Label3_Font ;
      BACKCOLOR Color_Label3_Back

   @ 160 , 330 TEXTBOX TxtFecha ;
      WIDTH  90 ;
      HEIGHT 20 ;
      READONLY ;
      RIGHTALIGN

   @ 160 , 430 LABEL LblEntrega ;
      WIDTH  90 ;
      HEIGHT 20 ;
      VALUE "Entrega:" ;
      RIGHTALIGN ;
      FONTCOLOR Color_Label3_Font ;
      BACKCOLOR Color_Label3_Back

   @ 160 , 520 TEXTBOX TxtEntrega ;
      WIDTH  90 ;
      HEIGHT 20 ;
      READONLY ;
      RIGHTALIGN
*
*    GRID DE DETALLES
*
   @ 190 , 010 BROWSE BrwDevueltos ;
      WIDTH 1000 ;
      HEIGHT 400 ;
      HEADERS {'Código','Artículo','Labo','Lote','Vence','Unids.','Motivo'} ;
      FIELDS {'TEMPD->DD_ARTCOD','TEMPD->DD_ARTNOM','TEMPD->DD_ARTLAB','TEMPD->DD_ARTLOT','TEMPD->DD_ARTVEN','TEMPD->DD_ARTUNI','TEMPD->DD_MOTIVO'} ;
      WIDTHS  { 70,300,060,100,100,080,300 } ;
      WORKAREA TEMPD ;
      JUSTIFY { BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_RIGHT , BROWSE_JTFY_LEFT } ;
      ON DBLCLICK DevolEditItem()
*
*  MENSAJES
*
   @ 610 , 020 LABEL LblMensajes ;
      WIDTH 550 ;
      HEIGHT 35 ;
      FONT 'Arial Bold' SIZE 12 ;
      BOLD ;
      FONTCOLOR RED ;
      CENTERALIGN
*
*  TOTAL
*
   @ 610 , 580 LABEL LblTotal ;
      WIDTH  70 ;
      HEIGHT 25 ;
      VALUE "TOTAL:" ;
      FONT 'Courier New' SIZE 12 ;
      BOLD ;
      FONTCOLOR Color_Label3_Font ;
      BACKCOLOR Color_Label3_Back ;
      CENTERALIGN

   @ 610 , 650 LABEL TxtTotal ;
      WIDTH  110 ;
      HEIGHT 025 ;
      FONT 'Courier New' SIZE 12 ;
      BOLD ;
      FONTCOLOR BLACK ;
      BACKCOLOR Mi_Amarillo ;
      RIGHTALIGN
*
*    BOTONES DETALLES
*
   @ 060 , 900 BUTTON BotAgregar ;
      CAPTION "Agregar" ;
      ACTION DevolAddItem() ;
      WIDTH  90 ;
      HEIGHT 30

   @ 090 , 900 BUTTON BotEditar ;
      CAPTION "Cambiar" ;
      ACTION DevolEditItem() ;
      WIDTH  90 ;
      HEIGHT 30

   @ 120 , 900 BUTTON BotBorrar ;
      CAPTION "Borrar" ;
      ACTION DevolDelItem() ;
      WIDTH  90 ;
      HEIGHT 30

END WINDOW

CENTER WINDOW Win_Devols
ACTIVATE WINDOW Win_Devols

   IF SELECT('TEMPC') > 0
      CLOSE TEMPC
   ENDIF

   IF SELECT('TEMPD') > 0
      CLOSE TEMPD
   ENDIF

   IF SELECT('TEMPA') > 0
      CLOSE TEMPA
   ENDIF

   IF SELECT('TEMPB') > 0
      CLOSE TEMPB
   ENDIF

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolSalir

   IF SELECT('TEMPD') = 0
      RELEASE WINDOW Win_Devols
      RETURN
   ENDIF

   IF TEMPD->(RECCOUNT()) > 0 .AND. nDevoCargada = 0
      IF QuestBox({'¿ Desea cancelar la operación actual ?'},{'Cancelar','Regresar'}) = 1
         RELEASE WINDOW Win_Devols
      ENDIF
   ELSE
      RELEASE WINDOW Win_Devols
   ENDIF

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolIniciar

   IF ! IsDir('C:\Farmacom\Devols')
      CreateFolder('C:\Farmacom\Devols')
   ENDIF

   Win_Devols.DevolBarra.Enabled := .F.

   DevolLimpiar()

   Win_Devols.DevolBarra.Enabled := .T.

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolLimpiar

   nDevoCargada := 0
   DH_MODO      := 'Nada'
   DH_TIPO      := 0

   OpenTemp() // Crea y abre los temporales

   Win_Devols.BrwDevueltos.Value := TEMPD->(RECNO())
   Win_Devols.BrwDevueltos.Refresh

   Win_Devols.TxtOpera.Value     := SPACE(6)
   Win_Devols.TxtFecha.Value     := SPACE(8)
   Win_Devols.TxtDoc.Value       := '   -        '
   Win_Devols.TxtProvCod.Value   := SPACE(6)
   Win_Devols.TxtProvDes.Value   := SPACE(70)
   Win_Devols.TxtProvRuc.Value   := SPACE(11)
   Win_Devols.TxtProvDir.Value   := SPACE(40)
   Win_Devols.CmbEstado.Value    := 1
   Win_Devols.TxtEntrega.Value   := SPACE(8)
   Win_Devols.TxtRefer.Value     := 0

   Devolswitch(.F.)

   Win_Devols.TxtOpera.SetFocus

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolSwitch(lSwitch)

   Win_Devols.BotGrabar.Enabled    := lSwitch
   Win_Devols.BotAnular.Enabled    := lSwitch
   Win_Devols.BotAgregar.Enabled   := lSwitch
   Win_Devols.BotBorrar.Enabled    := lSwitch
   Win_Devols.BotEditar.Enabled    := lSwitch
   Win_Devols.BrwDevueltos.Enabled := lSwitch
   Win_Devols.TxtOpera.Enabled     := lSwitch
   Win_Devols.TxtFecha.Enabled     := lSwitch
   Win_Devols.TxtDoc.Enabled       := lSwitch
   Win_Devols.TxtProvCod.Enabled   := lSwitch
   Win_Devols.TxtProvDes.Enabled   := lSwitch
   Win_Devols.TxtProvRuc.Enabled   := lSwitch
   Win_Devols.TxtProvDir.Enabled   := lSwitch
   Win_Devols.CmbEstado.Enabled    := .F.
   Win_Devols.TxtEntrega.Enabled   := lSwitch
   Win_Devols.TxtRefer.Enabled     := lSwitch

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolNueva

LOCAL DataProv := {}
LOCAL DataComp := {}

   IF ! AccesoOk('ALMA.DEVO.NUEV.')
      RETURN
   ENDIF

   IF nDevoCargada = 0 .AND. SELECT('TEMPD') > 0    // <- AQUI ES DONDE ME LANZA EL ERROR
      IF TEMPD->(RECCOUNT()) > 0
         IF ! MsgYesNo('¿ Desea cancelar la operación actual ?'+Chr(13)+'NO SE GRABARAN LOS DATOS INGRESADOS')
            RETURN
         ENDIF
      ENDIF
   ENDIF

   DevolLimpiar()

   DataComp := InputDocDeCompra()
   IF LEN( DataComp ) > 0
      DataProv := DameDatos( 'MPROV' , DataComp[3] , {'PROV_COD','PROV_NOM','PROV_RUC','PROV_DIRE'} )
      DevoCompCargaAuxi( DataComp[1] ) // <-- Carga TEMPA con los items de la factura del proveedor.
      DevoCompDescuenta( DataComp[1] )  // <-- Descuenta las unidades ya devueltas en TEMPA.
      Win_Devols.TxtRefer.Value := DataComp[1]
      Win_Devols.TxtDoc.Value   := DataComp[2]
      Devolswitch(.T.)
      IF DH_TIPO = 1 // Si es precarga :
         Win_Devols.CmbEstado.Value   := 1    // Estado = Pendiente (para que despues de grabar se descargue)
         Win_Devols.CmbEstado.Enabled := .F.  // Inhabilita la selección del estado.
      ELSE
         Win_Devols.CmbEstado.Value   := 1
         Win_Devols.CmbEstado.Enabled := .T.
      ENDIF
      Win_Devols.TxtOpera.Value    := DevolNuevoNumero()
      Win_Devols.TxtFecha.Value    := DTOC(GetHoy())
      Win_Devols.TxtProvCod.Value  := DataProv[1]
      Win_Devols.TxtProvDes.Value  := DataProv[2]
      Win_Devols.TxtProvRuc.Value  := DataProv[3]
      Win_Devols.TxtProvDir.Value  := DataProv[4]
      DH_MODO := 'Nueva'
      Win_Devols.BotAnular.Enabled := .F.
      Win_Devols.BotAgregar.SetFocus
   ENDIF

RETURN


*>----------------------------------------------------------------------<*
*>----------------------------------------------------------------------<*
*>----------------------------------------------------------------------<*

FUNC DevolNuevoNumero

LOCAL nLast  := 0
LOCAL nNew   := 1
LOCAL cQuery := "SELECT TOP 1 DC_NUMERO FROM DEVOLCAB ORDER BY DC_NUMERO DESC"
LOCAL oLast

   oLast := TOleAuto():New('ADODB.Recordset')
   oLast:CursorLocation = adUseClient
   oLast:Open( cQuery , oConexion , adOpenForwardOnly , adLockReadOnly )
   IF ! oLast:EOF()
      nLast := oLast:Fields("DC_NUMERO"):Value
      nNew  := nLast+1
   ENDIF
   oLast:Close()

RETURN( nNew )


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolAbrir( nQueModo )

LOCAL nQueDevolAbrir := 0

   IF ! AccesoOk('ALMA.DEVO.ABRE.')
      RETURN
   ENDIF

   IF nQueModo = NIL
      nQueDevolAbrir := DevolSeleccionar()
   ELSE
      cQueDevolAbrir := InputBox('Número Devol.:')
      IF ! EMPTY(cQueDevolAbrir)
         nQueDevolAbrir := VAL( cQueDevolAbrir )
      ENDIF
   ENDIF

   IF nQueDevolAbrir > 0
      IF DevolCargar( nQueDevolAbrir )
         nDevoCargada := nQueDevolAbrir
         DH_MODO    := 'Abrir'
         Devolswitch(.F.)
         IF Win_Devols.CmbEstado.Value = 1 .AND. TEMPC->DC_SALUSE = SPACE(4)
            Win_Devols.CmbEstado.Enabled := .T.
            Win_Devols.BotGrabar.Enabled := .T.
         ENDIF
         IF TEMPC->DC_ESTADO < 3
            Win_Devols.BotAnular.Enabled := .T.
         ELSE
            Win_Devols.BotAnular.Enabled := .F.
         ENDIF
         Win_Devols.BrwDevueltos.Value   := 1
         Win_Devols.BrwDevueltos.Setfocus
      ENDIF
   ENDIF

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolGrabar

LOCAL aNuevos := {}

   IF ! AccesoOk('ALMA.DEVO.GRAB.')
      RETURN
   ENDIF

   IF LENNOSPC( Win_Devols.TxtProvCod.Value ) = 0
      MsgExclamation('Elija un Proveedor para la Devolución.')
      RETURN
   ENDIF

   IF VAL( STRTRAN(Win_Devols.TxtDoc.Value,'-') ) = 0
      MsgExclamation('Ingrese el número de Factura del proveedor.')
      Win_Devols.TxtDoc.Setfocus
      RETURN
   ENDIF

   IF Win_Devols.CmbEstado.Value = 3
      MsgExclamation('Estado NO VALIDO.')
      Win_Devols.CmbEstado.Setfocus
      RETURN
   ENDIF

   Win_Devols.DevolBarra.Enabled := .F.
   Devolswitch(.F.)

   DO CASE
      CASE DH_TIPO = 1   // Pre-Carga
         aNuevos := DevoGrab1()
         IF LEN(aNuevos) > 0
            FOR nNew = 1 TO LEN(aNuevos)
               IF MsgYesNo('¿ Listo para imprimir la devolución ?')
                  DevolImprimir( aNuevos[nNew] )
               ENDIF
            NEXT
         ENDIF
      CASE DH_TIPO = 2   // Post-Carga
         aNuevos := DevoGrab2()
         IF LEN(aNuevos) > 0 .AND. Win_Devols.CmbEstado.Value = 2
            FOR nNew = 1 TO LEN(aNuevos)
               IF MsgYesNo('¿ Listo para imprimir la devolución ?')
                  DevolImprimir( aNuevos[nNew] )
               ENDIF
            NEXT
         ENDIF
   ENDCASE

   DevolLimpiar()
   Devolswitch(.T.)
   Win_Devols.DevolBarra.Enabled   := .T.

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolAnular

   IF ! AccesoOk('ALMA.DEVO.ANUL.')
      RETURN
   ENDIF

   IF Win_Devols.TxtOpera.Value = 0 .OR. DH_MODO <> 'Abrir' .OR. TEMPC->DC_ESTADO = 3
      RETURN
   ENDIF

   IF MsgYesNo('Esta seguro de ANULAR esta DEVOLUCION')
      Win_Devols.DevolBarra.Enabled := .F.
      Devolswitch(.F.)
      IF TEMPC->DC_CARGA = 1  // 0 = No Descargado   1 = Descargado
         DevoProvAnul()     // Descarga stock y kardex
      ELSE
         DevoProvAnulCab()  // Solo actualiza cabecera
      ENDIF
      MsgInfo('Devolución a proveedor ANULADA.')
      Devolswitch(.T.)
      Win_Devols.DevolBarra.Enabled   := .T.
      DevolLimpiar()
   ENDIF

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolReImprimir

   IF Win_Devols.TxtOpera.Value > 0
      DevolImprimir( Win_Devols.TxtOpera.Value )
      MsgInfo('Documento enviado a la impresora')
   ENDIF

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolImprimirCopia

   IF Win_Devols.TxtOpera.Value > 0
      ImprimirCopia( Win_Devols.TxtOpera.Value )
      MsgInfo('Documento enviado a la impresora')
   ENDIF

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolAddItem

LOCAL aArtiData

   nDetaNew := DevoCompSele()
   IF nDetaNew > 0
      SELE TEMPA
      DBGOTO( nDetaNew )
      TEMPA->DD_RECNO := 1
      SELE TEMPD
      APPEND BLANK
      REPLACE TEMPD->DD_ARTCOD WITH TEMPA->DD_ARTCOD
      REPLACE TEMPD->DD_ARTNOM WITH TEMPA->DD_ARTNOM
      REPLACE TEMPD->DD_ARTLAB WITH TEMPA->DD_ARTLAB
      REPLACE TEMPD->DD_ARTUNI WITH TEMPA->DD_ARTUNI
      REPLACE TEMPD->DD_ARTLOT WITH TEMPA->DD_ARTLOT
      REPLACE TEMPD->DD_ARTVEN WITH TEMPA->DD_ARTVEN
      REPLACE TEMPD->DD_RECNO  WITH TEMPA->(RECNO())
      COMMIT
      Win_Devols.BrwDevueltos.Value := TEMPD->(RECNO())
      Win_Devols.BrwDevueltos.Refresh
      DevolCalculaTotal()
//      DevolEditItem()
      RETURN
   ENDIF

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolEditItem

LOCAL aArtiData
LOCAL aDetaOld
LOCAL aDetaNew

   IF TEMPD->(RECNO()) = 0
      RETURN
   ENDIF

   aDetaOld := {;
   TEMPD->DD_ARTCOD,;
   TEMPD->DD_ARTNOM,;
   TEMPD->DD_ARTLAB,;
   TEMPD->DD_ARTUNI,;
   TEMPD->DD_ARTLOT,;
   TEMPD->DD_ARTVEN,;
   TEMPD->DD_MOTIVO}

   aDetaNew := DevolGetItem( aDetaOld )
   IF LEN(aDetaNew) > 0
      SELE TEMPD
      REPLACE TEMPD->DD_ARTCOD WITH aDetaNew[1]
      REPLACE TEMPD->DD_ARTNOM WITH aDetaNew[2]
      REPLACE TEMPD->DD_ARTLAB WITH aDetaNew[3]
      REPLACE TEMPD->DD_ARTUNI WITH aDetaNew[4]
      REPLACE TEMPD->DD_ARTLOT WITH aDetaNew[5]
      REPLACE TEMPD->DD_ARTVEN WITH aDetaNew[6]
      REPLACE TEMPD->DD_MOTIVO WITH aDetaNew[7]
      COMMIT
   ENDIF

   DevolCalculaTotal()
   Win_Devols.BrwDevueltos.Value := TEMPD->(RECNO())
   Win_Devols.BrwDevueltos.Refresh
   Win_Devols.BotAgregar.SetFocus()

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolDelItem

   SELE TEMPA
   DBGOTO( TEMPD->DD_RECNO )
   TEMPA->DD_RECNO := 0

   SELE TEMPD
   DELETE
   PACK

   Win_Devols.BrwDevueltos.Value := TEMPD->(RECNO())
   Win_Devols.BrwDevueltos.Refresh

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolCalculaTotal

LOCAL xTempSel := SELECT()
LOCAL nTempReg := TEMPD->(RECNO())
LOCAL nTotal   := 0

   SELE TEMPD
   DBGOTOP()
   DO WHILE .NOT. TEMPD->(EOF())
      nTotal := nTotal + TEMPD->DD_ARTUNI
      SKIP
   ENDDO
   Win_Devols.TxtTotal.Value := nTotal
   DBGOTO( nTempReg )
   SELE &xTempSel

RETURN


*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC DevolElegirImpresora

LOCAL cNuevaImpresora := GetPrinter()

   IF ! EMPTY(cNuevaImpresora)
      SELE DATAX
      DBGOTO(1)
      IF RED_RLOCK()
         REPLACE DATA1 WITH cNuevaImpresora
         RED_UNLOCK()
         SIS_PRINTER := cNuevaImpresora
      ENDIF
   ENDIF

RETURN
Como pueden ver al principio he definido unas variables PRIVATE antes de la creación de la ventana, que deberian estar disponibles para todas las proc del .prg pero he encontrado el siguiente error durante mi revisión de rutina:
Date:07/10/15 Time: 16:54:29
Error BASE/1003 No existe la variable: NDEVOCARGADA

Called from DEVOLNUEVA(405)
Called from (b)DEVOLUCIONES(46)
Called from _DOCONTROLEVENTPROCEDURE(5276)
Called from EVENTS(1398)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(4935)
Called from RECEPCION(327)
Called from ABREMODULO(327)
Called from EJECUTAOPCION(297)
Called from (b)MAIN(123)
Called from _DOCONTROLEVENTPROCEDURE(5276)
Called from EVENTS(1451)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(4935)
Called from MAIN(181)
¿ Porque me dice que no existe la variable NDEVOCARGADA si esta declarada arriba ? - He tratado de generar el error yo mismo pero a mi no me sale, no sé que puede haber hecho el usuario para que salga dicho error. Y este no es el único módulo donde me ha pasado, de vez en cuando encuentro este mismo error con otras variables en otros .prg pero son esporádicos no se generan siempre, debe haber alguna acción específica que los produce.

Mil gracias anticipadas por su valiosa ayuda.

Eduardo Flores Rivas


LIMA - PERU
Carlos Britos
Posts: 245
Joined: Sat Aug 02, 2008 5:03 pm

Re: Variable no existe

Post by Carlos Britos »

Hi try
replacing
IF nDevoCargada = 0 .AND. SELECT('TEMPD') > 0
with
IF nDevoCargada == 0 .AND. SELECT('TEMPD') > 0
Regards/Saludos, Carlos (bcd12a)
User avatar
edufloriv
Posts: 240
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

Re: Variable no existe

Post by edufloriv »

Hi Carlos,

I am going to try your suggest. Thanks a lot for your time.

Eduardo Flores Rivas


LIMA - PERU
Post Reply