Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-11-2008
eddvedder eddvedder is offline
Registrado
 
Registrado: nov 2008
Posts: 5
Poder: 0
eddvedder Va por buen camino
Problemas con informe Qreport

Hola
no soy un experto en Delphi, tengo un problema con un sistema que usa quickrepot para los informes, resulta que el sistema en windows 98, funciona correctamente, muestra todos los informes sin importar la cantidad de hojas que tenga. El problema se da cuando el sistema está instalado en Windows XP, si el informe tiene muchas hojas se cae y sale un error: "violation at address 0000000....". Lo malo es que este sistema está funcionando correctamente en un sólo equipo con XP (el cual tiene instalado el Delphi 5 completo), que puede ser?, un problema de manejo de memoria? no se que puede ser..... algún samaritano que me pueda ayudar por favor........
Responder Con Cita
  #2  
Antiguo 13-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola,
es un problema de manejo de memoria. Estas intentando acceder a algo que no existe o esta liberado (0x000000 es un 'null pointer'). saludos.
Responder Con Cita
  #3  
Antiguo 13-11-2008
eddvedder eddvedder is offline
Registrado
 
Registrado: nov 2008
Posts: 5
Poder: 0
eddvedder Va por buen camino
gracias por responder
lo malo es que este problema sí se pudo solucionar en un equipo con XP (necesito saber de qué manera fue), de que forma soluciona esto del manejo de memoria, me dijeron que puede ser que se requiera aumentar el tamaño a algun archivo de sistema o agregrar alguna variable local o global, por que me dijeron que algo asi habia solucionado el problema?
Responder Con Cita
  #4  
Antiguo 13-11-2008
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
Hola
Yo he tenido problemas para imprimir en impresoras HP multifuncionales, me sale un error parecido, mira si cambiando de impresora predeterminada te funciona, puedes intalar LX300

tambien puedes ampliar el manejo de memoria desde le bde admin desde la pestaña Configuration-System-INIT

alli yo configuro de la siguiente forma
LOW MEMORY USAGE LIMIT 64
MAXBUFSIZE 4096
MEMSIZE 32
MINBUFSIZE 128
SHAREDMEMLOCATION 5BDE
SHAREDMEMSIZE 4096

Prueba y nos cuentas
Responder Con Cita
  #5  
Antiguo 13-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola, es probable que te falte alguna .dll que si este instalada donde esta delphi. saludos.
Responder Con Cita
  #6  
Antiguo 13-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
El problema es viejo y conocido.

La variable de entorno temp en winXP excede de 32 caracteres, y ahí está el problema. Cuando quickReports necesita crear archivos temporales para mostrar un informe grande, solo maneja rutas de menos de 32 caracteres.

Edito: Creo que QR 4 ya corrige ese fallo. Al menos el QR que viene con delphi 6 sí está afectado, por ende, delphi 5 también.

Al inicio de tu aplicación, llama esta rutina que cambiará la variable de entorno TEMP y TMP para tu programa nada más.
Código Delphi [-]
procedure SetEnviroment();
begin
  ForceDirectories(AssertBackSlash(GetWinDir)+ 'TEMP\temp');
  if not SetEnvironmentVariable(PChar('TEMP'), PChar(AssertBackSlash(GetWinDir)+ 'TEMP\temp')) then
    Raise Exception.Create('No se ha podido crear el directorio temporal (TEMP) para los informes');

  ForceDirectories(AssertBackSlash(GetWinDir)+ 'TEMP\tmp');
  if not SetEnvironmentVariable(PChar('TMP'), PChar(AssertBackSlash(GetWinDir)+ 'TEMP\tmp')) then
    Raise Exception.Create('No se ha podido crear el directorio temporal (TMP) para los informes');

end;

Necesitas adaptarla:
AssertBackSlash pone la última barra en una carpeta, delphi tiene una rutina parecida.

GetWinDir es una función que devuelve la ruta de instalación de windows.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 21-11-2008
eddvedder eddvedder is offline
Registrado
 
Registrado: nov 2008
Posts: 5
Poder: 0
eddvedder Va por buen camino
hola gracias por la ayuda
probé lo de la configuración del bde y creo que solucionó el problema del acceso a memoria, lo que si se me olvidó mencionar ES que no tengo acceso al código fuente del sistema por lo que no puedo hacer cambios. Lo que s,i es que ahora necesito compactar las bases de datos (manualmente por lo de no contar con el CF) ¿cómo lo puedo hacer? borrar los indices (como se haría esto?), alguien me podría decir alguna forma (no mediante codigo) de que las consultas sean optimizadas, por cierto no se la versión de QR, pero es el Delphi 5.
De antemano muuuuuchas gracias
Saionara
Responder Con Cita
  #8  
Antiguo 21-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
para quitar ese error, vete a panel de control -> sistema -> opciones avanzadas -> variables de entorno

Tanto la que se llama TEMP como TMP cambiale su valor a una ruta con menos de 32 caracteres, por ejemplo:

TEMP = C:\WINDOWS\TEMP
TMP = C:\WINDOWS\TMP

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 21-11-2008
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
Hola
No se que quieres decir con compactar la base de datos
Pero lo de los indices puedes repararlos con una herramienta llamada DTUtil32, creo que se instala con delphi, con esta herramienta se verifican en la tablas los datos y los indices
Responder Con Cita
  #10  
Antiguo 21-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Haz copia de seguridad antes de tocar la base de datos, en algunos casos me la ha corrompido.

Tambien trae opcion para compactar (borrar físicamente los registros marcados como borrados y liberar ese espacio de las tablas).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 21-11-2008
eddvedder eddvedder is offline
Registrado
 
Registrado: nov 2008
Posts: 5
Poder: 0
eddvedder Va por buen camino
hola
gracias voy a probar la herramienta que me dices y te cuento como me fue.

PD: quizás el concepto "compactar" estuvo mal utilizado de mi parte, la idea es optimizar el tiempo de respuesta al pedir un informe.
Responder Con Cita
  #12  
Antiguo 21-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
En realidad he supuesto que trabajas con Paradox, por aquello de usar Delphi 5 y QuickReports... tenía toda la pinta de que tu base de datos fueran archivos de extensión .db y en ese sentido interpreté Compactar como borrar los registros. También se usa esa palabra para Access.

La optimización de un informe está muy relacionado con la cantidad de folios que vaya a generar (cantidad de registros) así como los índices creados en la base de datos y la sentencia SQL usada. El sql vendría a ser algo así (para imprimir la típica agenda de clientes):

Código SQL [-]
SELECT NOMBRE, APELLIDO, DIRECCION 
FROM CLIENTES
Lo comento por si has visto algo parecido en un fichero de texto de la aplicación, o incluso en alguna parte del programa.

Para crear índices necesitas saber la sentencia SQL y suele estar integrado en el código fuente de la aplicación. Es imposible adivinar cómo lo hizo el programador .

Edito: (Suponiendo que tu base de datos sea paradox, dbase, o alguna similar)
El ordenador que tiene delphi instalado, tendrá en inicio -> todos los programas -> Borland -> database desktop. Con esa última herramienta quizás puedas abrir las tablas de tu base de datos (haz copia de seguridad antes de tocar ) y así ver si en alguna tabla tiene el SQL para las consultas. También desde el database desktop podrías crear los índices en las tablas para agilizar las consultas.

Saludos y suerte
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 21-11-2008 a las 23:34:25.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
informe compuesto(informe/subinformes) con qreport JESUSNET Impresión 3 03-10-2007 15:39:21
lineas ocultas en el informe qreport jife007 Conexión con bases de datos 1 03-10-2007 13:23:31
problemas en un informe con QuickReport Goyo SQL 3 29-09-2006 17:52:48
Problemas con un informe Taribus Impresión 3 26-01-2004 10:12:17
Problemas con Qreport !!! mateamargo Impresión 3 27-10-2003 14:02:43


La franja horaria es GMT +2. Ahora son las 18:01:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi