Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con Quickreport y Firebird (https://www.clubdelphi.com/foros/showthread.php?t=49257)

mifiar 17-10-2007 10:50:09

Problema con Quickreport y Firebird
 
Hola comunidad, tengo un problema y espero que me puedan ayudar:

El asunto radica en que el Quickreport no actualiza los datos que ingreso enuna sesión, por ejemplo, tengo 10 registro previamente capturados, ejecuto el porgrama nuevamente para capturar mas registros, hagamos de cuenta que capturé otros 10; aquí es donde viene el problema, el quickreport sólo me muestra los primero 10 registros; para poder ver los otros 10 tengo que cerrar el programa y abrirlo de nuevo para visualizar los 20 completos.
Ya he probado con resfrescar la tabla, abrirla y cerrarla, activar y desactivar el query.
Estoy trabajando con los componentes MDO, FireBird 2.0 y Delphi 7; probé con el driver ODBC y con este sí funciona, pero quisiera hacerlo sin él. Espero que éstos datos sean suficientes para que me presten ayuda.

Gracias de antemano.

Lepe 17-10-2007 11:05:28

Por lo que dices: La transacción que muestra los datos en el quickReport es distinta a la que "captura" los datos, así que jamás se verán.

No sé a que te refieres con "capturar".

En principio, antes de abrir la consulta en que se basa el QuickReport, deberías hacer un commit de todo lo demás.

Supongo que usas las transacciones implicitas de los MDO, así que en el objeto Transaction pon su propiedad Autocommit en true. Procura no dejar otros datasets abiertos mientras abres el QuickReport, de esa forma, el resto de Dataset habrán hecho implicitamente un commitRetaining y los datos se verán en el informe.

Espero sea eso.

Saludos

mifiar 17-10-2007 21:23:31

Hola Lepe, era eso de las transacciones, las hacia con dos diferentes. Con lo de "captura" me refería a dar de alta registros. Lo del commit si lo realizaba, pero no resolvía el problema; también lo del Autocommit ya lo tenía en true.
Bueno, muchas gracias por la ayuda.

Lepe 18-10-2007 09:51:01

Completando un poco más: Aunque trabajemos en Cliente / Servidor el usuario final quiere ver los datos inmediatamente, y para ello hay dos formas:

1 - Reabrir los datasets al post.
En el evento AfterPost del dataset principal, llamar a una rutina "ReopenDatasets" que se encargue de cerrar todos los datasets de la ventana o datamodule y después reabrirlos. Los MDO hacen el commitRetaining en el evento Post, usando el AfterPost, siempre veremos ese registro recien creado.

2 - Usar Mensajes
Se crea un Trigger en la base de datos que hace un post_event "NuevoCliente", ese será un mensaje que se envía a todos los ordenadores clientes desde el servidor, dicho mensaje ha de recogerse con un TMDOEventAlert en el Datamodule que nos ocupe ordenando cerrar y después abrir los datasets.

eduarcol 18-10-2007 15:00:28

no se si seran los componentes, pero con los Zeos, con estas propiedades:

AutoCommit = True
Isolation = taReadCommited

y trabajando en cliente servidor, al menos que el dataset ya este abierto se ven todos los datos en todas las estaciones luego del post

Lepe 18-10-2007 18:45:57

Cita:

Empezado por eduarcol (Mensaje 239420)
al menos que el dataset ya este abierto se ven todos los datos en todas las estaciones luego del post

Lo subrayado es el detalle. Muchas veces tenemos un Grid que muestra los datos, mientras que para modificar un registro tenemos una serie de DBEdits (u otros controles). Puesto que el dataset ya está abierto el nuevo registro no se verá.

En principio, podría usarse un CommitRetaining para que si se viera el registro sin tener que reabrir el dataset, pero no se aconseja abusar de los CommitRetaining.

Saludos

eduarcol 18-10-2007 19:56:28

Pero tratando de suponer, si es un reporte lo mas normal es que este dataset se abra al imprimir el reporte, por eso hice la aclaratoria


La franja horaria es GMT +2. Ahora son las 00:05:15.

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