Erro irrecuperavel 9015

Re: Erro irrecuperavel 9015

Postby hmpaquito » Tue Oct 22, 2013 4:27 pm

Antonio Linares wrote:Por alguna razón que aún no logro entender, no nos permite redefinir esa función.


Hola Antonio,

¿ Podría ser el motivo el orden de enlazado de los modulos (objs y libs) ? Es decir, que los obj habria que situarlos por delante de las libs para que el enlazador, al "resolver", resolviera :roll: las duplicicidades poniendo primero las funciones "de usuario". El tema este, de prioridades del enlazador, no sé si dependerá del enlazador usado.

Un cordial saludo.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Erro irrecuperavel 9015

Postby Antonio Linares » Tue Oct 22, 2013 4:35 pm

Paco,

Exactamente. Normalmente Borland permite "redefinir" una función si se enlaza antes de una duplicada.

El caso es que usando Borland y Harbour, funciona correctamente. Pero con xHarbour no lo permite, cuando debiera funcionar como con Harbour.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Erro irrecuperavel 9015

Postby hmpaquito » Tue Oct 22, 2013 4:44 pm

Antonio,

Pero ¿ sabemos el orden de enlazado que tiene Joao en su archivo .mak/ Verce o lo que sea ? Ahí está la clave...., creo :?

Añado nuevo: lo que yo haria es: probar a añadir una funcion propia con el nombre de una del sistema y ver si coge la añadida, no sea que el sistema, por lo que sea le tenga mania...
Por ejemplo, ¿ que tal añadir FUNCTION StrTran(x1, x2, x3); RETURN MsgInfo("hola strtran", x1) y probar a hacerle una llamada a ver si dispara la de "usuario" ?

Bueno... son solo ideas...
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Erro irrecuperavel 9015

Postby karinha » Tue Oct 22, 2013 4:56 pm

Maestro, tenemos una máquina con XP ahora.

ERROR ocurre inesperadamente. ninguna posibilidad de continuar con la ejecución.

Nota: el error es distinto.

link del imagen:

http://www.4shared.com/photo/Q3ACR37-/erronfe.html


Image

Gracias, salu2.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Erro irrecuperavel 9015

Postby Antonio Linares » Tue Oct 22, 2013 6:07 pm

João,

Has comprobado si se crea el fichero hb_out.log ?

Mi propuesta es que contruyas la aplicación usando Harbour. Solo necesitaras un par de dias ó menos.
Si se genera un error interno y xHarbour no nos deja interceptarlo, como te he explicado, la única solución es que modifiques xHarbour.

Paco,

A mi me ocurre igual aqui usando el buildx.bat y usando el orden de enlazado correcto: primero obj del PRG, luego las librerias de FWH y luego de xHarbour
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Erro irrecuperavel 9015

Postby karinha » Tue Oct 22, 2013 7:36 pm

João,

Has comprobado si se crea el fichero hb_out.log ?

No maestro, no ejiste este fichero hb_out.log.

Después, intento con HARBOUR no conozco nada de HARBOUR aún... jejeje

Voy a molestar demasiado.

¿De acuerdo?

Estoy volviendo todo a la versión 2.7.

Para resolver este problema.

Con dolor en mi corazón ... Me encantó esta nueva versión.

Gracias. Salu2.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Erro irrecuperavel 9015

Postby Antonio Linares » Wed Oct 23, 2013 7:57 am

João,

Migrar a Harbour es muy sencillo.

De hecho para los que usais xHarbour, sería muy recomendable que tambien construyais vuestra aplicación usando Harbour, asi podriais comprobar cual es el que os funciona mejor. En este caso, usando Harbour podriamos comprobar si se trata de un problema de xHarbour.

Porque si con solo cambiar a una versión más antigua de xHarbour se soluciona tu problema, eso parece indicar que el problema viene de xHarbour.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Erro irrecuperavel 9015

Postby Antonio Linares » Thu Oct 24, 2013 12:18 pm

João,

He construido una versión especial de vm.lib para xHarbour con este cambio en xHarbour/source/vm/errorapi.c:

Code: Select all  Expand view  RUN
void hb_errInternal( ULONG ulIntCode, const char * szText, const char * szPar1, const char * szPar2 )
{
   hb_vmPushSymbol( hb_dynsymSymbol( hb_dynsymFindName( "ERRINTERNAL" ) ) );
   hb_vmPushNil();
   hb_vmPushLong( ulIntCode );
   hb_vmFunction( 1 );

   exit( EXIT_FAILURE );
}


Y este ejemplo joao.prg para probarlo:
Code: Select all  Expand view  RUN
function Main()

   InternalError()

return nil

function ErrInternal( nCode, cText )

   x++ // generamos un error de alto nivel para conseguir la pila de llamadas

return nil

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>
#include <hbapierr.h>

HB_FUNC( INTERNALERROR )
{
   hb_xfree( 0 );
}

#pragma ENDDUMP


En este caso, generamos un error interno que salta a alto nivel PRG. Esta libreria vm.lib no debe ser usada para aplicaciones finales, solo para casos como el tuyo en donde necesitas mas información del error interno:

https://code.google.com/p/harbour-and-xharbour-builds/downloads/detail?name=vm.lib

para ser usado con el xHarbour más reciente desde aqui:
https://code.google.com/p/harbour-and-xharbour-builds/downloads/list

Y como ves, obtenemos la pila de llamadas que es lo que andabamos buscando:
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Erro irrecuperavel 9015

Postby karinha » Thu Oct 24, 2013 1:33 pm

Gracias maestro por la gentileza, haciendo pruebas.

Gracias, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Erro irrecuperavel 9015

Postby hmpaquito » Thu Oct 24, 2013 2:51 pm

Antonio,


Muy, muy bueno !!! :lol:

Una preguntonta ¿ y por qué ese error handler no es válido para los errores internos ? ¿ Porque los errores internos deben abortar el programa ? ¿ No seria mejor que tu error handler fuera el manejador por defecto aunque se pusiera al objeto error la maxima severity y la imposibilidad de retry ? ¿ Es asunto de compatibilidad con comportamiento Clipper ? Es que los errores internos son muy feotes, sobre todo para depuracion.

Saludos.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Erro irrecuperavel 9015

Postby Antonio Linares » Thu Oct 24, 2013 3:33 pm

Paco,

Mi implementación es solo un "hackeo" y hecho de prisa para ayudar a Joao :-)

La cuestión que planteas, y en la que coincido contigo, es que por tradición con Clipper se supone que un error interno debe detener la ejecución del programa, pero esto no es siempre asi. En este caso vemos que una llamada a hb_xfree( NULL ) no tiene porque detener todo y de hecho, en este caso, todo sigue intacto y se puede continuar la ejecución.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Erro irrecuperavel 9015

Postby karinha » Fri Oct 25, 2013 1:43 pm

Maestro no funciona... Mira los ? (Print) porfa ...

Code: Select all  Expand view  RUN

      REDEFINE BUTTON oBmp3 ID 65 OF oDlgRece WHEN( lTransmite )             ;
               ACTION( ( TRANSMITIR_VARIAS_NFE() ), XFOCUS( oBmp4 ) )




//-----------------------------------------------------------------
FUNCTION TRANSMITIR_VARIAS_NFE()

   LOCAL oDlg, oFnt, oFont, oSaida2, cAlias, oLbx, oSay, oTransTodas,       ;
         oGroup, IDCor, nKey := VK_RETURN, TRAB, lLigaBotao := .T.,         ;
         oTransmitir, nContaNFe, lLigaBtnVar := .F., oIco, sFiltro1,        ;
         sFiltro2, oBrush, Nome_Arq, nRegistro, oDlgPesq, aGet := ARRAY(5), ;
         oFiltrar, oDlgSefaz, oSaida, oSiteSefaz, cSiteSefaz

   PRIVATE nNumNf
   PRIVATE oAtualizacao  //-> ID 409
   PRIVATE oTransmiteNfe //-> ID 410
   PRIVATE NotaInicial, NotaFinal, NFINICIA2, NFFINA2

   NotaInicial := 0
   NotaFinal   := 0
   NFINICIA2   := 0
   NFFINA2     := 0

? [SE ROMPERA 1] // pasado

   IF CADPARAM->TPAMB = [2]
      cAtualizacao  := "PODE TRANSMITIR AS NOTAS FISCAIS EM: " + ;
                       "AMBIENTE DE TESTES."
   ELSE
      cAtualizacao  := "PRONTO PARA TRANSMITIR AS NOTAS FISCAIS DO " + ;
                       "FATURAMENTO DE PEDIDOS"
   ENDIF

? [SE ROMPERA 2]  // pasado

   cTransmiteNfe := SPACE(35)

   lNaoAchouAprovada := .T.

   nContaNFe := 1

   SELECT CADNFE

? [SE ROMPERA 3] // pasado

   IF OrdCount() < 3
      // indice nao aberto ainda para tabela
      MsgStop( OemToAnsi( "Aten‡Æo Usu rio:         " ) +CRLF+ ;
               OemToAnsi( "Problemas nos INDICES 13 " ) +CRLF+ ;
               OemToAnsi( "Saia do programa e       " ) +CRLF+ ;
               OemToAnsi( "Entre no PLENO e         " ) +CRLF+ ;
               OemToAnsi( "REINDEXAR TODOS OS BANCOS" ),       ;
               OemToAnsi( "Problemas com os Indices." ) )
      RETURN ( .F. )
   ELSE
      IF CADPARAM->TPAMB = [1]  // em producao
         SET ORDER TO 03  // POR NFECOD
      ELSE
         SET ORDER TO 01  // POR FATURCOD
      ENDIF
   ENDIF

? [SE ROMPERA 4] // pasado

   cAlias := ALIAS()

   IF ( .NOT. LOCALIZACADASTROS() )    // alterado em 01/09/2009

      RETURN( .F. )

   ENDIF

   //Verificar erroress internos del programa:

   // ahora el error ocorri en windows 7 tambien...

   INTERNALERROR() //Dejado de funcionar aqui y no para el programa

   ? [SE ROMPIO]  // Ni llega aqui -  no pasado - windows dejo de funcionar.

   IF .NOT. lDesvia_das_Telas  //-> Entra nas telas se for .T. ESTATICA

      nNumNf := FATURCOD2

      //-> Transmitir somente uma Nota Fiscal
      MsgRun( "Conectando e Tentando Transmitir a NF-e Para a SEFAZ:    "+STR(nNumNf) , ;
              OemToAnsi( "Espere ConexÆo e TransmissÆo... Pode demorar. "), ;
              { || TRANSMITIR_NFE() } )

      IF lUFDivergente

         DEFINE FONT oFnt    NAME "Ms Sans Serif" SIZE 0,  14 BOLD
         DEFINE FONT oFont   NAME "Ms Sans Serif" SIZE 0, -14 BOLD

         DEFINE DIALOG oDlgSefaz  RESOURCE "DLG_FALHA_TRANSMISSAO_NFE" ;
                COLORS CLR_BLACK, CLR_WHITE TRANSPARENT

         oDlgSefaz:lHelpIcon := .F.

         For IDCor = 401 To 411 // Os ID's dos TEXTOS na DIALOG.
            REDEFINE SAY ID IDCor OF oDlgSefaz ;
                     COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
         Next IDCor

         REDEFINE GROUP oGroup ID 501 OF oDlgSefaz FONT oFnt TRANSPARENT

         //http://www.nfe.fazenda.gov.br/portal/disponibilidade.aspx?versao=2.00
         cSiteSefaz := ( "http://www.nfe.fazenda.gov.br/portal/disponibilidade.aspx?versao=2.00" )

         REDEFINE BUTTON oSiteSefaz  ID 301  OF oDlgSefaz ;
                  ACTION( ShellExecute(GetActiveWindow(),"open",'"'+cSiteSefaz+'"') )

         oSiteSefaz:cToolTip := OemToAnsi( "Verifique Se a SEFAZ NÆo Est  Fora do AR." )

         oSiteSefaz:lToolTipBallon   := .T.
         oSiteSefaz:nTooltipWidth    := 350
         oSiteSefaz:nTooltipTexColor := nRGB( 000, 000, 000 )
         oSiteSefaz:nTooltipBKColor  := nRGB( 250, 250, 250 )
         oSiteSefaz:cTooltipTitle    := OemToAnsi( "Problemas no SERVIDOR da SEFAZ" )
         oSiteSefaz:nTooltipIcon     := 1  && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
         //-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
         oSiteSefaz:nSetDelayType    := 2
         oSiteSefaz:nSetDelayTime    := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs

         REDEFINE BUTTONBMP oSaida   ID 302 OF oDlgSefaz                         ;
                  ACTION( oDlgSefaz:End() ) CANCEL UPDATE

         oSaida:cToolTip := OemToAnsi( "Saida - Exit - Cancelar" )

         SET FONT OF oSiteSefaz      TO oFont
         SET FONT OF oSaida          TO oFont

         ACTIVATE DIALOG oDlgSefaz CENTERED

         oFnt:End()
         oFont:End()

         LIBERA_TUDO()

         __QUIT()

      ENDIF

      IF lProblema_na_transmissao
         MsgStop( OemToAnsi( "Aten‡Æo Usu rio:         6 " ) +CRLF+ ;  // alterado em 29/08/2009
                  OemToAnsi( "Resolver o problema que    " ) +CRLF+ ;
                  OemToAnsi( "interrompeu a Rotina  e    " ) +CRLF+ ;
                  OemToAnsi( "usar o Icone NFe para      " ) +CRLF+ ;
                  OemToAnsi( "conclui-la!                " ),       ;
                  OemToAnsi( "Mensagem de Erro Para o Usu rio. " ) )
      ENDIF

      SELECT( cAlias )

      RETURN NIL

   ENDIF

   ? [SE ROMPERA 6]

   IF ( .NOT. lVem_do_Icone )  // alterado em 29/08/2009

      IF CADPARAM->TPAMB = [1]  //-> Vem do PLENOCB.EXE

         //-> Pega as notas fiscais qua ainda nao foram transmitidas

         LCHDIR( cDirPleno )
         SET DEFAULT TO

         SELECT CADNFE

         IF .NOT. lGeraFormSeguranca  // VEM DE DBMANUT.PRG

            ERASE C:\PLENOTMP\INFETEMP.CDX

            INDEX ON STATUS+STR(NFECOD,6,0) TAG 06 TO C:\PLENOTMP\INFETEMP ;
                  FOR ( .NOT. EOF() ) .AND. ;
            CADNFE->NFECOD >= NFE_INICIAL .AND.  CADNFE->NFECOD <= NFE_FINAL .AND. ;
            CADNFE->STATUS  = "GER" .AND. CADNFE->STATUS != "CAN" .AND. ;
            CADNFE->STATUS != "IMP" .AND. CADNFE->STATUS != "DEN" .AND. ;
            CADNFE->STATUS != "INU" .AND. CADNFE->STATUS != "APR" .AND. ;
            CADNFE->STATUS != "ENV" .AND. CADNFE->TPFAT_OP = [P]

            SET INDEX TO C:\PLENOTMP\INFETEMP, INFE

         ELSE

            ERASE C:\PLENOTMP\INFETEMP.CDX

            INDEX ON STATUS+STR(NFECOD,6,0) TAG 06 TO C:\PLENOTMP\INFETEMP ;
                  FOR ( .NOT. EOF() ) .AND. ;
            CADNFE->NFECOD >= NFE_INICIAL .AND. CADNFE->STATUS = "GER" .AND. ;
            CADNFE->STATUS != "CAN" .AND. CADNFE->STATUS != "IMP" .AND. ;
            CADNFE->STATUS != "DEN" .AND. CADNFE->STATUS != "INU" .AND. ;
            CADNFE->STATUS != "APR"

            SET INDEX TO C:\PLENOTMP\INFETEMP, INFE

         ENDIF

         GO TOP

         WHILE .NOT. EOF()

            SYSREFRESH()

            IF nContaNFe > 1
               lLigaBtnVar := .T.
            ENDIF

            SKIP

            nContaNFe := nContaNFe + 1

         ENDDO

      ELSE  //-> AMBIENTE 2 - AREA DE TESTES DA TRANSMISSAO - VINDO DO PLENO

         //-> Pega as notas fiscais qua ainda nao foram transmitidas
         SET FILTER TO
         SET FILTER TO ( .NOT. EOF() )                 .AND. ;  // alterado em 29/08/2009
                       CADNFE->FATURCOD >= NFE_INICIAL .AND. ;
                       CADNFE->FATURCOD <= NFE_FINAL   .AND. ;
                       CADNFE->STATUS="GER"

         GO TOP

         WHILE .NOT. EOF()

            SYSREFRESH()

            IF nContaNFe > 1
               lLigaBtnVar := .T.
            ENDIF

            SKIP

            nContaNFe := nContaNFe + 1

         ENDDO

      ENDIF

   ELSE  //-> VEM DO ICONE DA NOTA FISCAL ELETRONICA - DIGITOU NOTA

      GUARDA_NF_ANT := NFE_INICIAL

      IF CADPARAM->TPAMB = [1] //-> Vem do ICONE

         SELECT CADNFE

         IF CADPARAM->TPAMB = [1]  // em producao
            SET ORDER TO 03  // POR NFECOD
         ELSE
            SET ORDER TO 01  // POR FATURCOD
         ENDIF

         NFE_INICIAL := 0 //NFECOD2 //CADNFE->NFECOD  // NOTA FISCAL INICIAL DENTRO DO ANO
         NFE_FINAL   := 999999 // CADNFE->NFECOD  // NOTA FISCAL FINAL DENTRO DO ANO

         TRAB := OemToAnsi( "<< ATEN€ÇO: DIGITE O(s) NéMERO(s) DA(s) NF's PARA TRANSMITIR >>" )

         DEFINE ICON oIco NAME "ICONE"
         DEFINE FONT oFnt  NAME "Ms Sans Serif" SIZE 00,  14 BOLD
         DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -14 BOLD

         DEFINE DIALOG oDlgPesq  RESOURCE "DLG_PESQUISA_NOTAS_TRANSMITIR" ;
                ICON oIco  COLORS CLR_BLACK, CLR_WHITE TRANSPARENT

         oDlgPesq:lHelpIcon := .F.

         For IDCor = 401 To 401 // Os ID's dos TEXTOS na DIALOG.
            REDEFINE SAY ID IDCor OF oDlgPesq ;
            PROMPT OemToAnsi( "ATEN€ÇO: INFORME ABAIXO N§. NF's PARA TRANSMITIR" );
            COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
         Next IDCor

         For IDCor = 402 To 403 // Os ID's dos TEXTOS na DIALOG.
            REDEFINE SAY ID IDCor OF oDlgPesq ;
            COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFont TRANSPARENT
         Next IDCor

         For IDCor = 404 To 405 // Os ID's dos TEXTOS na DIALOG.
            REDEFINE SAY ID IDCor OF oDlgPesq ;
            COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
         Next IDCor

         REDEFINE GROUP oGroup ID 501 OF oDlgPesq FONT oFnt TRANSPARENT

         //-> Get's
         REDEFINE GET aGet[1] VAR NFE_INICIAL ID 20 PICTURE "@K 999999"     ;
                  OF oDlgPesq UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE  ;
                  VALID !EMPTY( NFE_INICIAL )

         REDEFINE GET aGet[2] VAR NFE_FINAL ID 21 PICTURE "@K 999999"       ;
                  OF oDlgPesq UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE  ;
                  VALID !EMPTY( NFE_FINAL ) .AND. ( NFE_INICIAL <= NFE_FINAL )

         REDEFINE GET aGet[5] VAR TRAB ID 30 PICTURE "@K!" WHEN( .F. )      ;
                  OF oDlgPesq UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE

         REDEFINE BUTTONBMP oFiltrar ID 301 OF oDlgPesq                          ;
                  ACTION( nKey := VK_RETURN, oDlgPesq:End() ) CANCEL

         oFiltrar:cToolTip := OemToAnsi( "Pesquisar as Notas Fiscais, Para Transmitir" )

         REDEFINE BUTTONBMP oSaida2   ID 302 OF oDlgPesq                         ;
                  ACTION( nKey := VK_ESCAPE, oDlgPesq:End() ) CANCEL UPDATE

         oSaida2:cToolTip := OemToAnsi( "Saida - Exit - Cancelar" )

         SET FONT OF oFiltrar TO oFont
         SET FONT OF oSaida2  TO oFont

         ACTIVATE DIALOG oDlgPesq CENTERED

         oFnt:End()
         oFont:End()

         DO CASE
         CASE nKey == VK_ESCAPE .OR. GETKEYSTATE( VK_ESCAPE )
            CLOSE DATABASES

            ABRENFEDBFS()    // Paulo 24/08/2009
            SELECT CADNFE

            IF CADPARAM->TPAMB = [1]  // em producao
               SET ORDER TO 03  // POR NFECOD
            ELSE
               SET ORDER TO 01  // POR FATURCOD
            ENDIF

            SEEK NFECOD2
            XFOCUS( oNota )
            lGerar     := .F. // Forca Teclar <enter> no GET.
            lTransmite :=.F.
            RETURN( .F. )

         ENDCASE

         INDEX ON STATUS+STR(NFECOD,6,0) TAG 06 TO C:\PLENOTMP\INFETEMP ;
               FOR ( .NOT. EOF() ) .AND. ;
         CADNFE->NFECOD >= NFE_INICIAL .AND. CADNFE->NFECOD <= NFE_FINAL .AND. ;
         CADNFE->STATUS  = "GER" .AND. CADNFE->STATUS != "CAN" .AND. ;
         CADNFE->STATUS != "IMP" .AND. CADNFE->STATUS != "INU" .AND. ;
         CADNFE->STATUS != "APR" .AND. CADNFE->STATUS != "DEN" .AND. ;
         CADNFE->STATUS != "ENV" .AND. CADNFE->TPFAT_OP = [P] TEMPORARY

         WHILE .NOT. EOF()

            SYSREFRESH()

            IF nContaNFe > 1
               lLigaBtnVar := .T.
            ENDIF

            SKIP

            nContaNFe := nContaNFe + 1

         ENDDO

      ELSE

         SET FILTER TO
         SET FILTER TO CADNFE->FATURCOD >= GUARDA_NF_ANT .AND. ;
                       CADNFE->STATUS="GER" .AND. ( .NOT. EOF() )

         GO TOP

         WHILE .NOT. EOF()

            SYSREFRESH()

            IF nContaNFe > 1
               lLigaBtnVar := .T.
            ENDIF

            SKIP

            nContaNFe := nContaNFe + 1

         ENDDO

      ENDIF

   ENDIF

   GO TOP

   IF EOF()

      SELECT CADNFE

      IF CADPARAM->TPAMB = [1]  // em producao
         SET ORDER TO 03  // POR NFECOD
      ELSE
         SET ORDER TO 01  // POR FATURCOD
      ENDIF

      NFINICIA2     := 0     // NFECOD2
      NFFINA2       := 999999 // NFECOD2

      TRAB := OemToAnsi( "<< ATEN€ÇO: NENHUMA NOTA FISCAL FOI LOCALIZADA P/TRANSMITIR A NF-e >>" )

      DEFINE ICON oIco NAME "ICONE"
      DEFINE FONT oFnt  NAME "Ms Sans Serif" SIZE 00,  14 BOLD
      DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -14 BOLD

      DEFINE DIALOG oDlgPesq  RESOURCE "DLG_PESQUISA_NOTAS_TRANSMITIR" ;
             ICON oIco  COLORS CLR_BLACK, CLR_WHITE TRANSPARENT

      oDlgPesq:lHelpIcon := .F.

      For IDCor = 401 To 401 // Os ID's dos TEXTOS na DIALOG.
         REDEFINE SAY ID IDCor OF oDlgPesq ;
         COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
      Next IDCor

      For IDCor = 402 To 403 // Os ID's dos TEXTOS na DIALOG.
         REDEFINE SAY ID IDCor OF oDlgPesq ;
         COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFont TRANSPARENT
      Next IDCor

      For IDCor = 404 To 405 // Os ID's dos TEXTOS na DIALOG.
         REDEFINE SAY ID IDCor OF oDlgPesq ;
         COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
      Next IDCor

      REDEFINE GROUP oGroup ID 501 OF oDlgPesq FONT oFnt TRANSPARENT

      REDEFINE GET aGet[1] VAR NFINICIA2 ID 20 PICTURE "@K 999999"          ;
               OF oDlgPesq UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE     ;
               VALID !EMPTY( NFINICIA2 )

      REDEFINE GET aGet[2] VAR NFFINA2   ID 21 PICTURE "@K 999999"          ;
               OF oDlgPesq UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE     ;
               VALID !EMPTY( NFFINA2   ) .AND. ( NFINICIA2 <= NFFINA2 )

      REDEFINE GET aGet[5] VAR TRAB ID 30 PICTURE "@K!" WHEN( .F. )         ;
               OF oDlgPesq UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE

      REDEFINE BUTTONBMP oFiltrar ID 301 OF oDlgPesq                          ;
               ACTION( nKey := VK_RETURN, oDlgPesq:End() ) CANCEL

      oFiltrar:cToolTip := OemToAnsi( "Pesquisar as Notas Fiscais, Para Transmitir" )

      REDEFINE BUTTONBMP oSaida2   ID 302 OF oDlgPesq                         ;
               ACTION( nKey := VK_ESCAPE, oDlgPesq:End() ) CANCEL UPDATE

      oSaida2:cToolTip := OemToAnsi( "Saida - Exit - Cancelar" )

      SET FONT OF oFiltrar TO oFont
      SET FONT OF oSaida2  TO oFont

      ACTIVATE DIALOG oDlgPesq CENTERED

      oFnt:End()
      oFont:End()

      DO CASE
      CASE nKey == VK_ESCAPE .OR. GETKEYSTATE( VK_ESCAPE )
         CLOSE DATABASES

         ABRENFEDBFS()    // Paulo 24/08/2009
         SELECT CADNFE

         IF CADPARAM->TPAMB = [1]  // em producao
            SET ORDER TO 03  // POR NFECOD
         ELSE
            SET ORDER TO 01  // POR FATURCOD
         ENDIF

         SEEK NFECOD2
         XFOCUS( oNota )
         lGerar     := .F. // Forca Teclar <enter> no GET.
         lTransmite :=.F.
         RETURN( .F. )

      ENDCASE

      INDEX ON STATUS+STR(NFECOD,6,0) TAG 06 TO INFETEMP ;
            FOR ( .NOT. EOF() ) .AND. ;
            CADNFE->NFECOD >= NFINICIA2 .AND. CADNFE->NFECOD <= NFFINA2 .AND. ;
            CADNFE->STATUS  = "GER" .AND. CADNFE->STATUS != "   " .AND. ;
            CADNFE->STATUS != "APR" .AND. CADNFE->STATUS != "CAN" .AND. ;
            CADNFE->STATUS != "IMP" .AND. CADNFE->STATUS != "ENV" .AND. ;
            CADNFE->STATUS != "INU" .AND. CADNFE->STATUS != "DEN" .AND. ;
            CADNFE->TPFAT_OP = [P] TEMPORARY

      IF EOF()

         MsgStop( OemToAnsi( "ATEN€ÇO USUµRIO:                          " )+CRLF+ ;
                  OemToAnsi( "NENHUMA NOTA FISCAL FOI LOCALIZADA        " )+CRLF+ ;
                  OemToAnsi( "PARA GERAR A NF-e NO BANCO DE DADOS.      " )+CRLF+ ;
                  OemToAnsi( "POR FAVOR, VEJA O BOTÇO:                  " )+CRLF+ ;
                  OemToAnsi( "<Ver Nfe's> Status da Nf-e.               " )+CRLF+ ;
                  OemToAnsi( "QUAIS NF's ESTÇO PENDENTES DE TRANSMISSÇO?" ),  ;
                  OemToAnsi( "Mensagem de Erro Para o Usu rio.          " ) )

         CLOSE DATABASES

         ABRENFEDBFS()    // Paulo 24/08/2009

         SELECT CADNFE

         IF CADPARAM->TPAMB = [1]  // em producao
            SET ORDER TO 03  // POR NFECOD
         ELSE
            SET ORDER TO 01  // POR FATURCOD
         ENDIF

         SEEK NFECOD2
         XFOCUS( oNota )
         lGerar := .F. // Forca Teclar <enter> no GET.
         RETURN( .F. )

      ENDIF

   ENDIF

   DEFINE ICON oIco NAME "ICONE"
   DEFINE FONT oFnt  NAME "Ms Sans Serif" SIZE 00, 14 BOLD
   DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -14 BOLD

   DEFINE DIALOG oDlg  RESOURCE "BROWSE_TRANSMITIR_NOTAS_FISCAIS" ;
          ICON oIco COLORS CLR_BLACK, CLR_WHITE  TRANSPARENT

   oDlg:lHelpIcon := .F.

   REDEFINE GROUP oGroup ID 501 OF oDlg FONT oFnt TRANSPARENT

   REDEFINE SAY oAtualizacao VAR cAtualizacao ID 409 OF oDlg     ;
            COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT

   REDEFINE SAY oTransmiteNfe VAR cTransmiteNfe ID 410 OF oDlg   ;
            COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT

   REDEFINE LISTBOX oLbx FIELDS                                             ;
            IIF( CADPARAM->TPAMB=[1],                                       ;
            xPadl( Alltrim( Str( ( cAlias )->NFECOD, 6,0 ) ),  6   ),       ;
            xPadl( Alltrim( Str( ( cAlias )->FATURCOD, 6,0 ) ),  6 ) )    , ;
            NUMERO_DO_PEDIDO()                                            , ;
            NOME_DO_CLIENTE()                                             , ;
            VERIFICA_STATUS_CLIENTE()                                       ;
            HEADERS OemToAnsi( "N. Fiscal "      )                        , ;
                    OemToAnsi( "Pedido N§ "      )                        , ;
                    OemToAnsi( "Nome do Cliente" )                        , ;
                    OemToAnsi( "Status NF-e "    )                          ;
            FIELDSIZES 090, 090, 340, 120                                   ;
            COLOR CLR_BROWN, CLR_LGREEN                                     ;
            FONT oFnt ID 101 OF oDlg                                        ;
            ON DBLCLICK( ( TRANSMITE_SOMENTE_UMA_NOTA( oLbx, oDlg ) ),      ;
                                                       oLbx:GoTop(),        ;
                                                       oLbx:Refresh(),      ;
                                                       oLbx:SetFocus() )

   oLbx:bKeyDown := { | nKey | IF ( nKey = VK_RETURN,                       ;
                             ( ( TRANSMITE_SOMENTE_UMA_NOTA( oLbx, oDlg ) ),;
                           oLbx:GoTop(), oLbx:Refresh(), oLbx:SetFocus() ), ;
                               IF ( nKey = VK_INSERT,                       ;
                                  ( "" ),                                   ;
                               IF ( nKey = VK_DELETE,                       ;
                                  ( "" ), ) ) ) }

   oLbx:cToolTip := OemToAnsi( "<ENTER>  Transmite Somente Uma Nota " +CRLF+ ;
                               "<INSERT> Desabilitado.              " +CRLF+ ;
                               "<CLICK>  Transmite Somente Uma Nota " +CRLF+ ;
                               "<DELETE> Desabilitado.              " )

   oLbx:lToolTipBallon   := .T.
   oLbx:nTooltipWidth    := 200  // 100
   oLbx:nTooltipTexColor := nRGB( 000, 000, 000 )
   oLbx:nTooltipBKColor  := nRGB( 250, 250, 250 )
   oLbx:cTooltipTitle    := OemToAnsi( "TransmissÆo das Notas Fiscais    " )
   oLbx:nTooltipIcon     := 1  && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
   //-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
   oLbx:nSetDelayType    := 2
   oLbx:nSetDelayTime    := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs

   oLbx:nClrBackHead  := CLR_LGREEN  // Cor do Fundo do Cabe‡alho
   oLbx:nClrText      := {|| nRGB( 165,  42,  42 ) }
   oLbx:nClrBackFocus := CLR_HBLUE   // Cor do Cursor Em Cima do Ötem
   oLbx:nClrForeFocus := CLR_AMARELO // cor da letra da barra ativa
   oLbx:nClrForeHead  := CLR_HRED    // Cor nos Headers - Cabe‡alhos
   oLbx:nClrPane      := { || IIF( ( oLbx:cAlias )->( OrdKeyNo() ) %2 == 0,  ;
                                     CLR_LGREEN, CLR_LGRAY ) }
   oLbx:nColAct       := 3           // Onde o Cursor Vai Iniciar qual coluna
   oLbx:nLineStyle    := 3           // Estilo das linhas nos dados da Browse
   oLbx:lCellStyle    := .T.         // S¢ Pinta a celula que o cursor est 
   oLbx:aJustify      := { .T., .T., .F., .F., .F., .F., .F. }
   oLbx:lMChange      := .F.         // Desabilita Mousemove
   oLbx:SetFocus()                   // Refocus on The Browse
   oLbx:Refresh()                    // Estabiliza o Browse/Listbox

   REDEFINE BUTTONBMP oTransmitir   ID 301 OF oDlg                          ;
            ACTION( ( TRANSMITE_SOMENTE_UMA_NOTA( oLbx, oDlg ) ),           ;
                                            oLbx:Refresh(), oLbx:SetFocus() )

   oTransmitir:cToolTip := OemToAnsi( "Transmitir Somente a Nota Fiscal Eletr“nica Escolhida " )

   REDEFINE BUTTONBMP oTransTodas   ID 302 OF oDlg                          ;
            WHEN( lLigaBtnVar )                                             ;
            ACTION( ( TRANSMITE_TODAS_AS_NOTAS( oLbx ) ), oLbx:GoBottom(),  ;
                  oLbx:Refresh(), oLbx:GoTop(), oLbx:SetFocus(), oDlg:End() )

   oTransTodas:cToolTip := OemToAnsi( "Transmitir Todas as Notas Fiscais Eletr“nica " )

   REDEFINE BUTTONBMP oSaida2     ID 303 OF oDlg                            ;
            ACTION( nKey := VK_ESCAPE, oDlg:End() ) CANCEL UPDATE

   oSaida2:cToolTip := OemToAnsi( "Saida - Exit - Cancelar" )

   SET FONT OF oTransmitir TO oFnt
   SET FONT OF oTransTodas TO oFnt
   SET FONT OF oSaida2     TO oFont

   IF lLigaBtnVar  //-> Transmissao de todas as notas - Botao Vai Foco
      ACTIVATE DIALOG oDlg CENTERED ;
               ON INIT( XFOCUS( oTransTodas ) )
   ELSE
      ACTIVATE DIALOG oDlg CENTERED  //-> transmitir somente uma - botao
   ENDIF

   oFnt:End()
   oFont:End()

   CLOSE DATABASES

   ABRENFEDBFS()

   SELECT CADNFE

   IF CADPARAM->TPAMB = [1]  // em producao
      SET ORDER TO 03  // POR NFECOD
   ELSE
      SET FILTER TO
      SET ORDER TO 01  // POR FATURCOD
   ENDIF

   DO CASE
   CASE nKey == VK_ESCAPE .OR. GETKEYSTATE( VK_ESCAPE )
      lGerar     := .F. // Forca Teclar <enter> no GET.
      lTransmite :=.F.
      XFOCUS( oNota )
   ENDCASE

   lNaoAchouAprovada := .F.

RETURN NIL
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Erro irrecuperavel 9015

Postby Antonio Linares » Sat Oct 26, 2013 8:11 am

Joao,

La mejor solución es una una libreria vm.lib de xHarbour construida con el flag -DHB_PRG_TRACE

viewtopic.php?p=153553#p153553

De esta forma sabrás exactamente hasta donde funcionó la aplicación
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Erro irrecuperavel 9015

Postby karinha » Mon Oct 28, 2013 12:14 pm

Gracias maestro, voy probrar,

set path=c:\bcc582\bin
set HB_USER_CFLAGS=-DHB_PRG_TRACE
win-make.exe

From our apps we have to do:

hb_TraceSysOut( .T. )
__TracePrgCalls( .T. )


win-make.exe és de HARBOUR, en XHARBOUR debo usar HBMAKE.EXE?

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Erro irrecuperavel 9015

Postby Antonio Linares » Mon Oct 28, 2013 12:28 pm

João,

Tienes que usar el xHarbour más reciente que yo te proporcioné y además una librería vm.lib que yo te proporcionaré (que ya esta construida con el flag necesario).

Luego ejecutas DbWin32 que puedes descargar desde aqui:
https://code.google.com/p/fivewin-contributions/downloads/detail?name=dbwin32.zip

y ejecutas tu aplicación. En DbWin32 te aparecera lo que se va ejecutando.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 58 guests