Page 1 of 1

Problema con DIALOGS FOLDER y REPORT

Posted: Mon Nov 02, 2009 12:53 am
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 ?

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Mon Nov 02, 2009 1:37 pm
by joseluisysturiz
Coloca algo de codigo para que podamos ayudarte, gracias... :shock:

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Mon Nov 02, 2009 8:04 pm
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[]

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Tue Nov 03, 2009 3:06 pm
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.

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Tue Nov 03, 2009 4:16 pm
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)

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Tue Nov 03, 2009 10:30 pm
by JoseGS
Nada de nada :-( amigos...

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Tue Nov 03, 2009 10:55 pm
by Wanderson
Olá JoseGS
Eu acredito que seja uno problema com algum malware.
Tente utilizar lo programa Combofix, procura em lo google.

Salu2

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Wed Nov 04, 2009 3:35 am
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

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Wed Nov 04, 2009 1:13 pm
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:

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Wed Nov 04, 2009 9:16 pm
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()

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Wed Nov 04, 2009 9:45 pm
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"

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Mon Nov 09, 2009 2:07 pm
by ADBLANCO
No se en la clase Treport, pero prueba con:

oReport:lprvmodal:=.t.

:oops:

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Mon Nov 09, 2009 2:49 pm
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[]

Re: Problema con DIALOGS FOLDER y REPORT

Posted: Wed Nov 11, 2009 3:42 am
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...