Problema con DIALOGS FOLDER y REPORT

Post Reply
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Problema con DIALOGS FOLDER y REPORT

Post by JoseGS »

Hola amigos del foro:

Estoy desarrollando un programa el cual esta basado enteramente en el uso de FOLDER generados desde recursos en un dialogo.
Como utilizo TIMER he necesitado crear una WINDOW que iconizo y desde su metodo INIT llamo a mi funcion que despliega el DIALOG con todos los folders...

Todo funciona perfecto, pero cuando intento generar un REPORT, el programa como que intenta generar el PREVIEW pero no lo presenta en pantalla, no queda minimizado ni aparece por ningun lado. Pero al intentar cerrar el programa, se presenta una ventana de error que dice algo asi:

Aplication error
The memory could not be "read" (entre otras cosas)

Es como si el informe continuara en la memoria pero sin presentarse...

Alguien sabe a que se debe este problema ?.

Ya he reemplazado la PREV32.DLL por si estaba corrupta y nada.

Si hago Ctrl + Alt + Del sin haber ejecutado el informe aparece el nombre del programa en la lista de tareas y si ejecuto el informe aparece el nombre del programa junto al nombre del informe que estoy generando...

Alguna idea ?
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Problema con DIALOGS FOLDER y REPORT

Post by joseluisysturiz »

Coloca algo de codigo para que podamos ayudarte, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Problema con DIALOGS FOLDER y REPORT

Post by JoseGS »

...
...
FUNC MAIN()
DEFINE WINDOW oWnd TITLE "Sistema" PIXEL
DEFINE TIMER oTimer OF oWnd INTERVAL aConfig[5] ACTION USBChk()
oTimer:Activate()
ACTIVATE WINDOW oWnd ICONIZED ON INIT START()
RETU NIL


FUNC START()
LOCAL oDlg,oSAY,oLOGO,oWnd,oPANEL,oBtn,oBtnLOGO,oCBX,nEle
LOCAL oCOM1,oCOM2,oCOM3,oCOM4,oCOM5,oTIPOSYS
LOCAL cCOM:=''
cIMG:=''
oGET:=ARRAY(43)
oG3:=ARRAY(20)
aCOOP:={'','10','20','25','30','33','40','50','60','70','75','80','90','100'}
DEFINE DIALOG oDlg RESOURCE "MENU"


REDEFINE FOLDER oFld ID 1003 OF oDlg PROMPT "Pacientes","Agenda","Administracion","Configuracion" DIALOGS "MENU01","MENU02","MENU03","MENU04";
ON CHANGE oFld:aDialogs[oFld:nOption]:UPDATE()
REDEFINE FOLDER oFld2 ID 1003 OF oFld:aDialogs[1] PROMPT "Datos generales","Antecedentes","Nueva consulta","Historia clínica","Laboratorios","Medicamentos" DIALOGS "MENU0101","MENU0102","MENU0103","MENU0104","MENU0105","MENU0106";
...
...
...
REDEFINE SBUTTON oBtn ID 204 OF oFld:aDialogs[3] RESOURCE "B_PRINT" ACTION (REPTRAN()) XP PROMPT "Informes" TEXT 3



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNC REPTRAN()
LOCAL oDlg,oBtn,OP
DEFINE DIALOG oDlg RESOURCE "REPORTES"
REDEFINE BUTTON oBtn ID 101 OF oDlg ACTION DO_REPTRAN(1)
REDEFINE BUTTON oBtn ID 102 OF oDlg ACTION DO_REPTRAN(2)
REDEFINE BUTTON oBtn ID 103 OF oDlg ACTION DO_REPTRAN(3)
REDEFINE BUTTON oBtn ID 104 OF oDlg ACTION DO_REPTRAN(4)
REDEFINE BUTTON oBtn ID 105 OF oDlg ACTION DO_REPTRAN(5)
REDEFINE BUTTON oBtn ID 106 OF oDlg ACTION oDlg:END()
ACTIVATE DIALOG oDlg CENTER
RETU[]


FUNC DO_REPTRAN(N)
LOCAL oFont1,oFont2,oReport,oDlg
LOCAL R:=RECNO()

DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10
DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-8

SELE CUENTAS
DBGOTOP()
IF N=1
REPORT oReport TITLE 'Reporte de cuentas por cobrar al '+DTOC(DATE()) PREVIEW FONT oFont1,oFont2 HEADER "Pagina No. "+STR(oReport:nPage,3) RIGHT CAPTION "Cuentas por pagar"
COLUMN TITLE "NOMBRE DE LA CUENTA" DATA FIELD->NOMBRE FONT 2
COLUMN TITLE "SALDO" DATA FIELD->SALDO FONT 2
END REPORT
ACTIVATE REPORT oReport FOR 'CXC'$FIELD->CUENTA
ELSE
ENDIF
RETU[]
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Problema con DIALOGS FOLDER y REPORT

Post by karinha »

Code: Select all

#Include "Report.Ch"


STATIC FUNCTION IMPRIMECON( oLbx ) 

   LOCAL oPen1, oPen2           
   LOCAL oFont1, oFont2, oFont3 
   LOCAL oReport                
   LOCAL nRegistro := RecNo()   

   SndPlaySound( "Init.Wav" )

   EXTERNAL ISPRINTER             
   IF .NOT. ISPRINTER()           
      SndPlaySound( "Erro.Wav" ) 
      CHECA_IMP() // Checar Se a Impressora Est  Ativa...
      RETURN NIL                  
   ENDIF                          

   DEFINE PEN oPen1 WIDTH 2     
   DEFINE PEN oPen2 WIDTH 1     

   DEFINE FONT oFont1 NAME "Arial"       SIZE 0, -11
   DEFINE FONT oFont2 NAME "Arial"       SIZE 0, -11
   DEFINE FONT oFont3 NAME "Courier New" SIZE 0,  10 // Para Imprimir MEMOS

   DbSelectArea( "CON" ) //-> Carrega o Banco: CONVENIO.DBF
   DbGoTop()

   REPORT oReport TITLE "Listagem de CONVENIOS" ;
      CAPTION "Catálogo: CONVENIOS"             ;
      HEADER "CONVENIOS",                       ;
      "Data:   " + DTOC( DATE() ),              ;
      "Página: " + STR( oReport:nPage, 3 )      ;
      FOOTER "- CONVENIOS -" CENTER             ;
      FONT oFont1, oFont2, oFont3               ;
      PEN oPen1, oPen2 ; 
      PREVIEW
      //TO FILE \RELATO.TXT    

      //-> Para o Preview Maximizar e Nao Ficar no Rodape do Windows 
      oReport:oDevice:lPrvModal := .T.
      oReport:oDevice:SetPage(9) //-> Formato A4

      //-> Este e somente um modelo, veja no ReadMe.Txt, exemplo 
      COLUMN TITLE "CODIGO     " DATA CON->CODIGO,             ;
                 + "NOME:      "    + CON->NOME,               ;
                 + "APELIDO:   "    + CON->APELIDO,            ;
                 + "VALOR DEV: "    + STR(CON->VALOR_DEV),     ;
                 + "% PERDA:   "    + STR(CON->VALOR_PERD),    ;
                 + "PERDA ACE: "    + STR(CON->VLPERDAACE),    ;
                 + "MELHOR DIA:"    + CON->MELHOR_DIA,         ;
                 + "EMAIL:     "    + CON->EMAIL,              ;
                 + "WEB:       "    + CON->WEB,                ;
                 + "OBS:       "    + CON->OBS,                ;
                 + "OBS2:      "    + CON->OBS2,               ;
                 + "OBS3:      "    + CON->OBS3,               ;
                 + "DATA CADASTRO:" + DTOC( CON->DATA_CADAS ) FONT 2

      COLUMN TITLE "ENDERECO   " DATA CON->END,                ;
                 + "BAIRRO:    "    + CON->BAI,                ;
                 + "CIDADE:    "    + CON->CID,                ;
                 + "UF:        "    + CON->UF,                 ;
                 + "CEP:       "    + CON->CEP,                ;
                 + "FONE:      "    + CON->TEL,                ;
                 + "FONE:      "    + CON->TEL2,               ;
                 + "FONE:      "    + CON->TEL3,               ;
                 + "CNPJ:      "    + CON->CGC,                ;
                 + "IE:        "    + CON->IE,                 ;
                 + "CONTATO:   "    + CON->CONTATO,            ;
                 + "RAMAL 1:   "    + CON->RAMAL_1,            ;
                 + "RAMAL 2:   "    + CON->RAMAL_2            FONT 2

   END REPORT

   IF !oReport:lCreated 
      RETURN NIL 
   ENDIF

   oReport:CellView() 

   ACTIVATE REPORT oReport ON INIT oReport:oTitle:aFont[1] := { || 3 }

   oPen1:End()  
   oPen2:End()  
   oFont1:End() 
   oFont2:End() 
   oFont3:End()
 
La PREV32.DLL está en tu directório de trabajo??

Incluistes RPREVIEW.PRG a tu proyecto?

Saludos.
João Santos - São Paulo - Brasil
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: Problema con DIALOGS FOLDER y REPORT

Post by ADBLANCO »

Mandale el Objeto del dialogo al cual pertenece

Code: Select all

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNC REPTRAN(oDlgAnt)
LOCAL oDlg,oBtn,OP
DEFINE DIALOG oDlg RESOURCE "REPORTES" OF oDlgAnt
REDEFINE BUTTON oBtn ID 101 OF oDlg ACTION DO_REPTRAN(1)
REDEFINE BUTTON oBtn ID 102 OF oDlg ACTION DO_REPTRAN(2)
REDEFINE BUTTON oBtn ID 103 OF oDlg ACTION DO_REPTRAN(3)
REDEFINE BUTTON oBtn ID 104 OF oDlg ACTION DO_REPTRAN(4)
REDEFINE BUTTON oBtn ID 105 OF oDlg ACTION DO_REPTRAN(5)
REDEFINE BUTTON oBtn ID 106 OF oDlg ACTION oDlg:END()
ACTIVATE DIALOG oDlg CENTER 
RETU[]

 
Y la llamada la haces así:

REPTRAN(oDlg)
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Problema con DIALOGS FOLDER y REPORT

Post by JoseGS »

Nada de nada :-( amigos...
Wanderson
Posts: 332
Joined: Thu Nov 17, 2005 9:11 pm

Re: Problema con DIALOGS FOLDER y REPORT

Post by Wanderson »

Olá JoseGS
Eu acredito que seja uno problema com algum malware.
Tente utilizar lo programa Combofix, procura em lo google.

Salu2
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Problema con DIALOGS FOLDER y REPORT

Post by JoseGS »

No, es un problema con la forma en la que estoy haciendo la aplicacion... ya que con otros programas hechos de la forma convencional funciona bien...

Gracias
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: Problema con DIALOGS FOLDER y REPORT

Post by ADBLANCO »

No le Sobra la definicion local de oDlg ???


Code: Select all

FUNC DO_REPTRAN(N)
LOCAL oFont1,oFont2,oReport,oDlg
LOCAL R:=RECNO()

 
No Se, Prueba a ver que pasa :oops:
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Problema con DIALOGS FOLDER y REPORT

Post by JoseGS »

Ok amigos:

Creo que el asunto se debe a lo siguiente:

- La pantalla principal del sistema es un dialogo que contiene multiples folder. Ese dialogo lo llamo mediante la funcion START() desde el ON INIT de un WINDOW que creo y activo iconizado... como se muestra en la primera linea del codigo. Si quito la instruccion ICONIZED, y genero el informe, veo que el mismo se crea pero queda atras de la ventana que contiene el DIALOG y no tengo control de los botones presentes en el PREVIEW.

No me gusta quitar ICONIZED ya que si lo hago se muestra una ventana gris sin contenido al momento de abrir el programa.
Me hara falta algun setcontrol, o algo ?

//ACTIVATE WINDOW oWnd ICONIZED ON INIT START() <-
ACTIVATE WINDOW oWnd ON INIT START()
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Problema con DIALOGS FOLDER y REPORT

Post by JoseGS »

Por lo pronto he hecho lo siguiente:

ACTIVATE REPORT oReport ON INIT (oDlg:MINIMIZE(),oWnd:MAXIMIZE())


Solo tengo 2 problemas:
1. Como hago para que al cerrar el dialogo que contiene el PREVIEW se vuelva a maximizar el oDlg (ya prove con ON END y ON POSTEND pero ambos se ejecutan al finalizar el report, no cuando la entana de preview se cierra...
2. Al salir del programa me envia un error

CXC.exe - Application Error
The instruction at "0x00459b06@ referenced memoty at "0x00176e48". The memory could not be "read"
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: Problema con DIALOGS FOLDER y REPORT

Post by ADBLANCO »

No se en la clase Treport, pero prueba con:

oReport:lprvmodal:=.t.

:oops:
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: Problema con DIALOGS FOLDER y REPORT

Post by ADBLANCO »

Intenta esto:

Code: Select all

FUNC MAIN()
DEFINE WINDOW oWnd TITLE "Sistema" PIXEL 
DEFINE TIMER oTimer OF oWnd INTERVAL aConfig[5] ACTION USBChk() 
oTimer:Activate()
ACTIVATE WINDOW oWnd ICONIZED ON INIT START(oWnd) 
RETU NIL


FUNC START(oWnd)
LOCAL oDlg,oSAY,oLOGO,oPANEL,oBtn,oBtnLOGO,oCBX,nEle
LOCAL oCOM1,oCOM2,oCOM3,oCOM4,oCOM5,oTIPOSYS
LOCAL cCOM:=''
cIMG:=''
oGET:=ARRAY(43)
oG3:=ARRAY(20)
aCOOP:={'','10','20','25','30','33','40','50','60','70','75','80','90','100'}
DEFINE DIALOG oDlg RESOURCE "MENU" of oWnd

REDEFINE FOLDER oFld ID 1003 OF oDlg PROMPT "Pacientes","Agenda","Administracion","Configuracion" DIALOGS "MENU01","MENU02","MENU03","MENU04";
ON CHANGE oFld:aDialogs[oFld:nOption]:UPDATE()
REDEFINE FOLDER oFld2 ID 1003 OF oFld:aDialogs[1] PROMPT "Datos generales","Antecedentes","Nueva consulta","Historia clínica","Laboratorios","Medicamentos" DIALOGS "MENU0101","MENU0102","MENU0103","MENU0104","MENU0105","MENU0106";
...
...
...
REDEFINE SBUTTON oBtn ID 204 OF oFld:aDialogs[3] RESOURCE "B_PRINT" ACTION (REPTRAN(oDlg)) XP PROMPT "Informes" TEXT 3



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNC REPTRAN(oDlgAnt)
LOCAL oDlg,oBtn,OP
DEFINE DIALOG oDlg RESOURCE "REPORTES" of oDlgAnt
REDEFINE BUTTON oBtn ID 101 OF oDlg ACTION DO_REPTRAN(1)
REDEFINE BUTTON oBtn ID 102 OF oDlg ACTION DO_REPTRAN(2)
REDEFINE BUTTON oBtn ID 103 OF oDlg ACTION DO_REPTRAN(3)
REDEFINE BUTTON oBtn ID 104 OF oDlg ACTION DO_REPTRAN(4)
REDEFINE BUTTON oBtn ID 105 OF oDlg ACTION DO_REPTRAN(5)
REDEFINE BUTTON oBtn ID 106 OF oDlg ACTION oDlg:END()
ACTIVATE DIALOG oDlg CENTER 
RETU[]


FUNC DO_REPTRAN(N)
LOCAL oFont1,oFont2,oReport,oDlg
LOCAL R:=RECNO()

DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10
DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-8

SELE CUENTAS
DBGOTOP()
IF N=1
REPORT oReport TITLE 'Reporte de cuentas por cobrar al '+DTOC(DATE()) PREVIEW FONT oFont1,oFont2 HEADER "Pagina No. "+STR(oReport:nPage,3) RIGHT CAPTION "Cuentas por pagar"
COLUMN TITLE "NOMBRE DE LA CUENTA" DATA FIELD->NOMBRE FONT 2
COLUMN TITLE "SALDO" DATA FIELD->SALDO FONT 2
END REPORT
ACTIVATE REPORT oReport FOR 'CXC'$FIELD->CUENTA 
ELSE
ENDIF
RETU[]
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Problema con DIALOGS FOLDER y REPORT

Post by JoseGS »

Al final lo resolvi a la pedrada !!!

Hice otro programa ejecutable que contiene la parte de los informes y lo llamo con WINEXEC desde mi programa principal... caso resuelto.... :-) y no se nota que es otro ejecutable...


Gracias a todos...
Post Reply