Error no existe Alias al exportar a Excel (SOLUCIONADO)

Re: Comportamiento bEnd de un Report

Postby karinha » Wed Aug 25, 2021 12:56 am

Code: Select all  Expand view

// \samples\jvt.prg

// Simule el problema aqui, porfa:

#Include "Fivewin.Ch"
#Include "Report.Ch"

MEMVAR DBSTATES

FUNCTION Main()

   LOCAL oDlg, oLbx, cAlias

   USE STATES NEW SHARED
   GO TOP

   DBSTATES := ALIAS()
                                   
   DEFINE DIALOG oDlg FROM 5,10 TO 34, 56 ;
      TITLE "JVT Browse inline "

   @  1, 0.50 LISTBOX oLbx FIELDS SIZE 175, 095 OF oDlg

   oLbx:lCellStyle = .t.
   oLbx:lAutoEdit  = .t.
   oLbx:lAutoSkip  = .t.

   @ 10,  2 BUTTON "&Edit" OF oDlg SIZE 40, 12 ;
      ACTION oLbx:Edit()

   @ 10, 10 BUTTON "&Imprimir" OF oDlg SIZE 40, 12 ;
      ACTION( Imprime_JVT() ) DEFAULT

   @ 10, 18 BUTTON "&Salida" OF oDlg SIZE 40, 12 ;
      ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

FUNCTION Imprime_JVT()

   LOCAL oReport, oFont, oBold, oCol, cAlias

   SELECT( DBSTATES )
   // SET ORDER TO...
   GO TOP

   cAlias := ALIAS()

   DEFINE FONT oFont NAME "TAHOMA"  SIZE 0,-12

   REPORT oReport PREVIEW FONT oFont

      oReport:oDevice:lPrvModal := .T.
      oReport:oDevice:SetPage(9) //-> Formato A4

      COLUMN oCol TITLE "CODE" DATA FIELD->CODE
      COLUMN oCol TITLE "NAME" DATA FIELD->NAME

   ENDREPORT

   IF !oReport:lCreated
      RETURN NIL
   ENDIF

   oReport:CellView()

   ACTIVATE REPORT oReport

   RELEASE FONT oFont

   CLOSE( cAlias )

   BROWSE() // VACIO

   USE STATES NEW SHARED
   GO TOP

   SELECT( DBSTATES )

   BROWSE()

   // Continua, hacer algo?

RETURN NIL

// fin / end
 


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

Re: Comportamiento bEnd de un Report

Postby jvtecheto » Thu Aug 26, 2021 7:03 am

Hola Joao

Muchisimas gracias por tu ayuda.

Mira, esta es la funcion que lanza el informe que falla.
En cuanto activas el bInit del informe (En el codigo esta desabilitado)
Code: Select all  Expand view

STATIC FUNCTION ListApuArti()

   LOCAL oDlg, oObra, oArt, oInicio, oFinal, oRdest, oRfil, oSayObra, oSayArt, oBtnCancel, oRepAa
   LOCAL cObra, cArt, dInicio, dFinal, nRdest, nRfil, cImpresora
   LOCAL oFont, oDevice
   LOCAL oWndMain := GetWndMain()
   LOCAL lAcepta := .F.
   LOCAL cHeader1, cHeader2, cCaption, cNomObra := "" , cCodArt:="", cNomArt :=""
   LOCAL cAlias := "ArtApua"
   
   dbUseArea( .T., , "Apuart", "ArtApua", .T. )  
   dbUseArea( .T., , "Articulo", "ListA", .T. )
   Set INDEX TO ARTICULO
   dbUseArea( .T., , "Obras", "ListO", .T. )
   Set INDEX TO OBRAS  
     
   Select ( cAlias )  
   Set RELATION TO ArtApua->Obra INTO ListO, ArtApua->Art INTO ListA

   ordSetFocus( 1 )
   ArtApua->( dbGoTop() )
   dInicio := ArtApua->Fecha
   ArtApua->( dbGoBottom() )
   dFinal := ArtApua->Fecha
   cArt := Space( 4 )
   cObra := Space(4)

   DEFINE DIALOG oDlg RESOURCE "LISTAPUCOD" TITLE "LISTADO APUNTES ARTICULOS"

      nRfil := Space( 1 )
      nRfil := 2
      nRdest := Space( 1 )
      nRdest := 1

      REDEFINE SAY oSayObra PROMPT "" ID 20 OF oDlg UPDATE
      REDEFINE SAY oSayArt PROMPT "" ID 10 OF oDlg UPDATE

      REDEFINE GET oObra VAR cObra ID 101 BITMAP "OBRAS1" OF oDlg PICTURE "9999" ;
      ACTION cObra := Busqueda( "ListO" )  ;
      VALID  Rellena(oObra) .AND. IF(ListO->(dbSeek( cObra )),(oSayObra:Varput(ListO->Nombre),oSayObra:Refresh(), .T.),.F. ) UPDATE  
   
      oObra:bGotfocus := { || oWndMain:SetMsg( "Codigo de obra.Tecla <+> permite buscar" ) }
      oObra:bKeyDown := { | nKey | IIf( nKey = VK_ADD, (cObra := Busqueda( "ListO" ),oObra:Refresh() ),.F. ) }
     
      REDEFINE RADIO oRfil VAR nRfil ID 21, 22 OF oDlg  WHEN ! Empty( cObra ) UPDATE ;
      ON CHANGE ( IF( nRfil == 1, oArt:SetFocus(), ( oArt:Disable(), oInicio:SetFocus(), oDlg:UPDATE() ) ), oRdest:Refresh() )

      REDEFINE GET oArt VAR cArt ID 17 BITMAP "ARTICUL2" OF oDlg PICTURE "9999" WHEN nRfil == 1 ;
      ACTION ( cArt := Busqueda( "ListA" ) );
      VALID Rellena( oArt )  .AND. IF( ListA->( dbSeek( cArt ) ),(oSayArt:Varput(ListA->Nombre),oSayArt:Refresh(),oInicio:SetFocus(),.T.),.F.)  UPDATE      
     
      oArt:bGotfocus := { || oWndMain:SetMsg( "Codigo de articulo.Tecla <+> permite buscar" ) }
      oArt:bKeyDown := { | nKey | IIf( nKey = VK_ADD, (cArt := Busqueda( "ListA" ),oDlg:Update() ),.F. ) }  
     
      REDEFINE DTPICKER oInicio VAR dInicio ID 13 OF oDlg PICTURE "@d"
      oInicio:bChange = { || If( OInicio:lClosed .and. oInicio:lFocused, oInicio:PostMsg( WM_KEYDOWN, VK_RIGHT ),) }
      oInicio:bGotFocus := {|| oSayObra:Refresh(),oSayArt:Refresh() }
      REDEFINE DTPICKER oFinal VAR dFinal ID 16 OF oDlg PICTURE "@d";
      VALID dFinal >= dInicio
      oFinal:bChange = { || If( oFinal:lClosed .AND. oFinal:lFocused, oFinal:PostMsg( WM_KEYDOWN, VK_RIGHT ),) }

      REDEFINE RADIO oRdest VAR nRdest ID 11, 12 OF oDlg UPDATE ;
      ON CHANGE ( oDlg:UPDATE() )

      REDEFINE BTNBMP ID 110 RESOURCE "SCREEN" OF oDlg ;
      ACTION IF( nRdest == 2, ( nRdest := 1, oRdest:Refresh() ), NIL )
      REDEFINE BTNBMP ID 120 RESOURCE "PRINT1" OF oDlg ;
      ACTION IF( nRdest == 1, ( nRdest := 2, oRdest:Refresh() ), NIL )

      REDEFINE BTNBMP ID 750 RESOURCE "ACCEPT" OF oDlg ACTION ( lAcepta := .T., oDlg:END() )
      REDEFINE BTNBMP oBtnCancel ID 751 RESOURCE "CANCEL" OF oDlg ACTION oDlg:END()
      oBtnCancel:lCancel := .T.

   ACTIVATE DIALOG oDlg CENTERED
   
   IF lAcepta

      cNomObra := ListO->Nombre
      cNomArt := ListA->Nombre
      cCodArt := ListA->Codigo

      IF nRfil == 1 // Filtro por un Articulo
         ArtApua->(dbSetFilter( { || ArtApua->Obra == cObra .AND. ArtApua->Art == cArt } ) )
      ELSEIF nRfil == 2
         ArtApua->(dbSetFilter( { || ArtApua->Obra == cObra } )  )
      ENDIF

      ArtApua->( dbGoTop() ) // Activa el filtro
      ArtApua->( dbSeek( dInicio ) )
      DEFINE FONT oFont NAME "Courier New" SIZE 0, - 12
      oDevice := TPrinter():NEW( cCaption, .F., IF( nRdest == 1, .T., .F. ) ) // Si True=Preview
      IF nRdest == 2
         cImpresora := PrnGetName()
         IF PrnStatus( cImpresora ) != 0
            STOP( "¡Impresora no preparada!" )            
            ArtApua->( dbClosearea() )
            ListA->( dbClosearea() )
            ListO->( dbClosearea() )
            RETURN NIL
         ENDIF
      ENDIF

      IF nRfil == 1
         cHeader1 := "LISTADO APUNTES DE OBRA POR ARTICULO"
         cHeader2 := "ARTICULO : " + cCodArt + " - " + cNomArt
         cCaption := "Listado Apuntes de Obra por Articulo"
      ELSEIF nRfil == 2
         cHeader1 := "LISTADO APUNTES DE OBRA ARTICULOS"
         cHeader2 := ""
         cCaption := "Listado Apuntes de Obra Articulos"
      ENDIF
     
      REPORT oRepAa TITLE "OBRA : " + cObra + " - " + cNomObra, ;
         Replicate ( "_", 77 ), ;
         "", ;
         Space( 26 ) + cHeader1 , ;
         Replicate ( "_", 77 ), chr(13), ;
         cHeader2 , ;
         "FECHAS : " + DToC( dInicio ) + " Hasta " + DToC( dFinal ), Chr( 13 ) Left ;
         Header "Pag. " + Str( oRepAa:nPage, 3 ) Right ;
         FOOTER aEmpresa[ 1 ] + " - " + aEmpresa[ 2 ] + " (" + aEmpresa[ 11 ] + ")" ;
         TO DEVICE oDevice FONT oFont

         COLUMN TITLE "Fecha"  DATA DToC( ArtApua->Fecha )
         IF nRfil == 2
            COLUMN TITLE "Articulo" DATA ListA->Nombre
         ENDIF
         COLUMN TITLE "Cantidad"  DATA ArtApua->Cantidad TOTAL PICTURE "@E 999,999.99"
         COLUMN TITLE "Precio"  DATA ArtApua->Precio PICTURE "@E 999,999,999.99"
         COLUMN TITLE "Total"  DATA ArtApua->TOTAL TOTAL PICTURE "@E 999,999,999.99"

      END REPORT

      oRepAa:nTotalline := 1
      oRepAa:nTitleUpline := 0  // Quita la linea de arriba de los titulos 0
      oRepAa:MARGIN( 4, 5, 2 )
      // oRepAa:bInit := {|| ArtApua->(dbgotop()) } // Activa boton Excel en Preview  Da error
      ACTIVATE REPORT oRepAa FOR ArtApua->Fecha <= dFinal WHILE ! ArtApua->( Eof() )
      oFont:END()
     
ENDIF

ArtApua->( dbClosearea() )
ListA->( dbClosearea() )
ListO->( dbClosearea() )  

RETURN NIL

//--------------------------------------------------------------------------
 


Y esta es la misma funcion practicamente pero quitando filtros, set relation etc. y funciona perfectamene.

Code: Select all  Expand view

STATIC FUNCTION Informe()

LOCAL oRepAa
LOCAL dInicio := CTOD("01/01/2020")
LOCAL dFinal := CTOD("31/12/2020")
LOCAL cHeader1 := "Cabecera de listado "
LOCAL oFont

dbUseArea( .T., , "Apuart", "ArtApua", .T. )  

DEFINE FONT oFont NAME "Courier New" SIZE 0, - 12

REPORT oRepAa TITLE "OBRA : " + "0001" + " - " + "OBRA DE PRUEBA", ;
         Replicate ( "_", 77 ), ;
         "", ;
         Space( 26 ) + cHeader1 , ;
         Replicate ( "_", 77 ), ;
         "FECHAS : " + DToC( dInicio ) + " Hasta " + DToC( dFinal ), Chr( 13 ) Left ;
         Header "Pag. " + Str( oRepAa:nPage, 3 ) Right ;
         FOOTER "Pie del informe " ;
         PREVIEW FONT oFont

         COLUMN TITLE "Fecha"  DATA DToC( ArtApua->Fecha )
         COLUMN TITLE "Cantidad"  DATA ArtApua->Cantidad TOTAL PICTURE "@E 999,999.99"
         COLUMN TITLE "Precio"  DATA ArtApua->Precio PICTURE "@E 999,999,999.99"
         COLUMN TITLE "Total"  DATA ArtApua->TOTAL TOTAL PICTURE "@E 999,999,999.99"

      END REPORT

      oRepAa:nTotalline := 1
      oRepAa:nTitleUpline := 0  // Quita la linea de arriba de los titulos 0
      oRepAa:MARGIN( 4, 5, 2 )
      oRepAa:bInit := {|| ArtApua->(dbgotop()) } // Activa boton Excel en Preview
    ACTIVATE REPORT oRepAa WHILE ! ArtApua->( Eof() )
    oFont:END()
    CLOSE ArtApua
   
RETURN NIL 
   
// ----------------------------------------------------------------------------------------------------------

 


La verdad que no entiendo que puede tener al primera funcion para que falle la exportacion a excel por el error
que no existe el alias (O sea la dbf ya esta cerrada).

Saludos.

Jose.
Fwh 19.06 32 bits + Harbour 3.2dev(r2104281802) + Borland 7.4 + FivEdit
User avatar
jvtecheto
 
Posts: 576
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Comportamiento bEnd de un Report

Postby karinha » Thu Aug 26, 2021 11:39 am

Code: Select all  Expand view

// \samples\JVT2.PRG

// STATIC FUNCTION ListApuArti()  // PORQUE STATIC, HAY OTRA CON MISMO NOMBRE?
FUNCTION ListApuArti()

   LOCAL oDlg, oObra, oArt, oInicio, oFinal, oRdest, oRfil, oSayObra, oSayArt, oBtnCancel, oRepAa
   LOCAL cObra, cArt, dInicio, dFinal, nRdest, nRfil, cImpresora
   LOCAL oFont, oDevice
   LOCAL oWndMain := GetWndMain()
   LOCAL lAcepta := .F.
   LOCAL cHeader1, cHeader2, cCaption, cNomObra := "" , cCodArt:="", cNomArt :=""
   LOCAL cAlias := "ArtApua" //??

   // NO ME GUSTA ESTE MODO DE APERTURA.
   dbUseArea( .T., , "Apuart", "ArtApua", .T. )

   dbUseArea( .T., , "Articulo", "ListA", .T. )

   Set INDEX TO ARTICULO

   dbUseArea( .T., , "Obras", "ListO", .T. )

   Set INDEX TO OBRAS  // NTX??
     
   Select ( cAlias )

   Set RELATION TO ArtApua->Obra INTO ListO, ArtApua->Art INTO ListA

   ordSetFocus( 1 )

   ArtApua->( dbGoTop() )

   dInicio := ArtApua->Fecha

   ArtApua->( dbGoBottom() )

   dFinal := ArtApua->Fecha

   cArt := Space( 4 )

   cObra := Space(4)

   DEFINE DIALOG oDlg RESOURCE "LISTAPUCOD" TITLE "LISTADO APUNTES ARTICULOS"

      oDlg:lHelpIcon := .F.

      nRfil := Space( 1 )
      nRfil := 2
      nRdest := Space( 1 )
      nRdest := 1

      REDEFINE SAY oSayObra PROMPT "" ID 20 OF oDlg UPDATE
      REDEFINE SAY oSayArt  PROMPT "" ID 10 OF oDlg UPDATE

      //  UPDATE EN LOS GETS??

      REDEFINE GET oObra VAR cObra ID 101 BITMAP "OBRAS1" OF oDlg UPDATE PICTURE "9999" ;
         ACTION cObra := Busqueda( "ListO" )  ;
         VALID Rellena(oObra) .AND. IF(ListO->(dbSeek( cObra )),(oSayObra:Varput(ListO->Nombre),oSayObra:Refresh(), .T.),.F. ) UPDATE
   
      oObra:bGotfocus := { || oWndMain:SetMsg( "Codigo de obra.Tecla <+> permite buscar" ) }
      oObra:bKeyDown := { | nKey | IIf( nKey = VK_ADD, (cObra := Busqueda( "ListO" ),oObra:Refresh() ),.F. ) }
     
      REDEFINE RADIO oRfil VAR nRfil ID 21, 22 OF oDlg UPDATE WHEN ! Empty( cObra ) UPDATE ;
         ON CHANGE ( IF( nRfil == 1, oArt:SetFocus(), ( oArt:Disable(), oInicio:SetFocus(), oDlg:UPDATE() ) ), oRdest:Refresh() )

      REDEFINE GET oArt VAR cArt ID 17 BITMAP "ARTICUL2" OF oDlg UPDATE ;
         PICTURE "9999" WHEN nRfil == 1 ;
         ACTION ( cArt := Busqueda( "ListA" ) );
         VALID Rellena( oArt )  .AND. IF( ListA->( dbSeek( cArt ) ),(oSayArt:Varput(ListA->Nombre),oSayArt:Refresh(),oInicio:SetFocus(),.T.),.F.)  UPDATE
     
      oArt:bGotfocus := { || oWndMain:SetMsg( "Codigo de articulo.Tecla <+> permite buscar" ) }
      oArt:bKeyDown := { | nKey | IIf( nKey = VK_ADD, (cArt := Busqueda( "ListA" ),oDlg:Update() ),.F. ) }  
     
      REDEFINE DTPICKER oInicio VAR dInicio ID 13 OF oDlg PICTURE "@d"

      oInicio:bChange = { || If( OInicio:lClosed .and. oInicio:lFocused, oInicio:PostMsg( WM_KEYDOWN, VK_RIGHT ),) }

      oInicio:bGotFocus := {|| oSayObra:Refresh(),oSayArt:Refresh() }

      REDEFINE DTPICKER oFinal VAR dFinal ID 16 OF oDlg PICTURE "@d";
         VALID dFinal >= dInicio

      oFinal:bChange = { || If( oFinal:lClosed .AND. oFinal:lFocused, oFinal:PostMsg( WM_KEYDOWN, VK_RIGHT ),) }

      REDEFINE RADIO oRdest VAR nRdest ID 11, 12 OF oDlg UPDATE ;
         ON CHANGE ( oDlg:UPDATE() )

      REDEFINE BTNBMP ID 110 RESOURCE "SCREEN" OF oDlg ;
         ACTION IF( nRdest == 2, ( nRdest := 1, oRdest:Refresh() ), NIL )

      REDEFINE BTNBMP ID 120 RESOURCE "PRINT1" OF oDlg ;
         ACTION IF( nRdest == 1, ( nRdest := 2, oRdest:Refresh() ), NIL )

      REDEFINE BTNBMP ID 750 RESOURCE "ACCEPT" OF oDlg ;
         ACTION ( Imprimir_JVT_Correcto( ArtApua, ListA, ListO ), oDlg:End() )

      REDEFINE BTNBMP oBtnCancel ID 751 RESOURCE "CANCEL" OF oDlg ;
         ACTION( oDlg:End() )

      oBtnCancel:lCancel := .T.

   ACTIVATE DIALOG oDlg CENTERED

   ArtApua->( dbClosearea() )
   ListA->( dbClosearea() )
   ListO->( dbClosearea() )

RETURN NIL
// Nuevo teste
FUNCTION Imprimir_JVT_Correcto( ArtApua, ListA, ListO )

      cNomObra := ListO->Nombre
      cNomArt  := ListA->Nombre
      cCodArt  := ListA->Codigo

      IF nRfil == 1 // Filtro por un Articulo

         ArtApua->(dbSetFilter( { || ArtApua->Obra == cObra .AND. ArtApua->Art == cArt } ) )

      ELSEIF nRfil == 2

         ArtApua->(dbSetFilter( { || ArtApua->Obra == cObra } )  )

      ENDIF

      ArtApua->( dbGoTop() ) // Activa el filtro
      ArtApua->( dbSeek( dInicio ) )

      DEFINE FONT oFont NAME "Courier New" SIZE 0, - 12

      oDevice := TPrinter():NEW( cCaption, .F., IF( nRdest == 1, .T., .F. ) ) // Si True=Preview

      IF nRdest == 2

         cImpresora := PrnGetName()

         IF PrnStatus( cImpresora ) != 0

            STOP( "¡Impresora no preparada!" )

            ArtApua->( dbClosearea() )

            ListA->( dbClosearea() )
            ListO->( dbClosearea() )

            RETURN NIL

         ENDIF

      ENDIF

      IF nRfil == 1
         cHeader1 := "LISTADO APUNTES DE OBRA POR ARTICULO"
         cHeader2 := "ARTICULO : " + cCodArt + " - " + cNomArt
         cCaption := "Listado Apuntes de Obra por Articulo"
      ELSEIF nRfil == 2
         cHeader1 := "LISTADO APUNTES DE OBRA ARTICULOS"
         cHeader2 := ""
         cCaption := "Listado Apuntes de Obra Articulos"
      ENDIF
     
      REPORT oRepAa TITLE "OBRA : " + cObra + " - " + cNomObra, ;
         Replicate ( "_", 77 ), ;
         "", ;
         Space( 26 ) + cHeader1 , ;
         Replicate ( "_", 77 ), chr(13), ;
         cHeader2 , ;
         "FECHAS : " + DToC( dInicio ) + " Hasta " + DToC( dFinal ), Chr( 13 ) Left ;
         Header "Pag. " + Str( oRepAa:nPage, 3 ) Right ;
         FOOTER aEmpresa[ 1 ] + " - " + aEmpresa[ 2 ] + " (" + aEmpresa[ 11 ] + ")" ;
         TO DEVICE oDevice FONT oFont

         COLUMN TITLE "Fecha"  DATA DToC( ArtApua->Fecha )
         IF nRfil == 2
            COLUMN TITLE "Articulo" DATA ListA->Nombre
         ENDIF
         COLUMN TITLE "Cantidad"  DATA ArtApua->Cantidad TOTAL PICTURE "@E 999,999.99"
         COLUMN TITLE "Precio"  DATA ArtApua->Precio PICTURE "@E 999,999,999.99"
         COLUMN TITLE "Total"  DATA ArtApua->TOTAL TOTAL PICTURE "@E 999,999,999.99"

      END REPORT

      oRepAa:nTotalline := 1
      oRepAa:nTitleUpline := 0  // Quita la linea de arriba de los titulos 0
      oRepAa:MARGIN( 4, 5, 2 )

      // oRepAa:bInit := {|| ArtApua->(dbgotop()) } // Activa boton Excel en Preview  Da error

      ACTIVATE REPORT oRepAa FOR ArtApua->Fecha <= dFinal WHILE ! ArtApua->( Eof() )

      oFont:End()
     
RETURN NIL
 


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

Re: Comportamiento bEnd de un Report

Postby jvtecheto » Sun Sep 19, 2021 5:12 pm

Estimados amigos:

al final he encontrado el problema que me daba error y es el uso de la variable oDevice.

yo pregunto al usuario si quiero el destino pantalla / impresora y desde muy antiguo hago esto.

Code: Select all  Expand view

local oDevice
oDevice := TPrinter():New( cCaption, .F., IF( nRdest == 1, .T., .F. ) )
 

y luego en el diseño del informe
Code: Select all  Expand view

TO DEVICE oDevice FONT oFont
 


Con esto el usuario puede mandar directamente el informe a la impresora sin hacer preview.
Pero.... si utilizas esto e intentas exportar a Excel se produce el error que no existe el alias del informe ,
yo la verdad no entiendo que tiene que ver, supongo que algo habra pero simplemente quitando
TO DEVICE oDevice por PREVIEW

Pero ahora una pregunta facil, como mandar directamente el informe a la impresora ?

Saludos.

Jose.
Fwh 19.06 32 bits + Harbour 3.2dev(r2104281802) + Borland 7.4 + FivEdit
User avatar
jvtecheto
 
Posts: 576
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Comportamiento bEnd de un Report

Postby jvtecheto » Sun Sep 19, 2021 5:56 pm

Por cierto he probado esto

Code: Select all  Expand view

IF(nRdest == 2,oRepAa:oDevice := TPrinter():New(cCaption,.F.),NIL )
 


Y me imprime pero me da error de argumento LEN
y me aborta el programa.

Alguna idea mas. ?

Saludos.
Fwh 19.06 32 bits + Harbour 3.2dev(r2104281802) + Borland 7.4 + FivEdit
User avatar
jvtecheto
 
Posts: 576
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Comportamiento bEnd de un Report

Postby artu01 » Sun Sep 19, 2021 7:34 pm

jvtecheto wrote:
Con esto el usuario puede mandar directamente el informe a la impresora sin hacer preview.
Pero.... si utilizas esto e intentas exportar a Excel se produce el error que no existe el alias del informe ,
yo la verdad no entiendo que tiene que ver, supongo que algo habra pero simplemente quitando
TO DEVICE oDevice por PREVIEW

Pero ahora una pregunta facil, como mandar directamente el informe a la impresora ?

Saludos.

Jose.

Code: Select all  Expand view

  //nopc : 1 = Impresion previa, 2 = Impresion Directa

  if nOpc == 1               // Preview
    REPORT oRep PREVIEW FONT oFont
|
  else               // Impresion Directa
    REPORT oRep FONT oFont
  endif
  COLUMN oCol TITLE "CODE" DATA FIELD->CODE
  COLUMN oCol TITLE "NAME" DATA FIELD->NAME
  ...
  ...
 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 397
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Comportamiento bEnd de un Report

Postby nageswaragunupudi » Mon Sep 20, 2021 2:16 am

Using or not using DEVICE clause does not make any difference.

If you can make the sample using any DBFs in the fwh\samples folder, we can build your sample at our end and let you know where the problem is and how to fix it. This is the fastest way we can help you.

You may try modifying the sample that I posted earlier ( using fwh\samples\states.dbf ) to reproduce your error.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Comportamiento bEnd de un Report

Postby jvtecheto » Mon Sep 20, 2021 8:03 am

Hello Mr. Rao.

Thank you always for your interest

I have sent you a private message

Regards.

Jose
Fwh 19.06 32 bits + Harbour 3.2dev(r2104281802) + Borland 7.4 + FivEdit
User avatar
jvtecheto
 
Posts: 576
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Error no existe Alias al exportar a Excel (SOLUCIONADO)

Postby jvtecheto » Tue Sep 21, 2021 11:12 am

Hola aunque parece ser que es un problema que solo me ocurria a mi :lol:

posteo la solucion por si le pasara a alguien mas, tambien he cambiado el titulo del hilo para que sea mas acorde
al problema real.

si quereis utilizar la clausula

TO DEVICE oDevice

en los informes para mandarlos a pantalla o impresora la variable oDevice
la teneis que definir asi.

Code: Select all  Expand view

 oDevice :=  PrintBegin( cCaption, ;            // document
                  .f., ;            // luser
                  IF(nRdest==1,.T.,.F.), nil, ; // .T. Preview
                  .T., ;            // Modal
                  .f.,    ;         // lselect
                  cPDF )            // PDF to Save
 


Muchisimas gracias Mr. Rao, siempre atento a los problemas de los usuarios. Tambien a Joao, Artu01 por ayudarme en este problema raro.

Saludos

Jose.
Fwh 19.06 32 bits + Harbour 3.2dev(r2104281802) + Borland 7.4 + FivEdit
User avatar
jvtecheto
 
Posts: 576
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 83 guests