Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Error marcador no valido al cerrar informe rave report (https://www.clubdelphi.com/foros/showthread.php?t=82049)

jsc 20-01-2013 11:30:37

Error marcador no valido al cerrar informe rave report
 
1 Archivos Adjunto(s)
hola,

acabe de hacer un informe con rave reports utilizando en total 3 querys
el primero tiene los datos maestros y de donde filtramos los datos con la cabecera del grupo
el segundo tiene los datos detalle para el query maestro primero
el tercero tiene los datos detalle para el query maestro segundo


la cuestion es que funciona BIEN, pero al salir del informe, cuando lo cierro, me da un error que no se como solucionar

para mostrar datos en un dbgrid
Código SQL [-]
...
SELECT * FROM TABLA1 WHERE FECHA=:fecha
Código:

ADOQuery1.parameters.parambyname('fecha').value := edit1.text
...

al ejecutar el informe utilizo lo siguiente:
Código:

Código Delphi [-]
procedure Tfrmseinaleak.SpeedButton2Click(Sender: TObject);
var txtadoqry2,txtadoqry3 : string ;
    posregistro : TBookmark ;
begin
  TRY
  posregistro := adoquery1.GetBookmark ;

  txtadoqry2 := adoquery2.SQL.Text ; txtadoqry3 := adoquery3.SQL.Text ;

  adoquery2.Close ;adoquery2.SQL.clear;adoquery2.parameters.clear ;
  adoquery2.SQL.add ('select * from TABLA2');adoquery2.Open ;

  adoquery3.Close ;adoquery3.SQL.clear;adoquery3.parameters.clear ;
  adoquery3.SQL.add ('select * from TABLA3');adoquery3.Open ;

  rvproject1.ProjectFile := Extractfilepath(application.ExeName)+'data\reports\informe.rav';
  rvproject1.Execute ;

  adoquery1.GotoBookmark(posregistro) ;
  adoquery1.FreeBookmark(posregistro) ;

  EXCEPT on e:exception do MessageDlg ('Error: '+chr(13)+chr(13)+e.Message,mtWarning,[mbOk],0);
  END;
end;

alguien puede ayudarme o decirme que hago mal?
gracias de antemano

Al González 20-01-2013 20:27:11

No manejo mucho ADO ni Rave, pero el error parece surgir en la sentencia
Código Delphi [-]
adoquery1.GoToBookmark(posregistro) ;
Coloca un punto de interrupción (break point) en esa sentencia y cuando el programa se detenga ahí, revisa qué valor tiene la propiedad State de ADOQuery1. Esto para comprobar que la consulta siga abierta (puede que el proceso de impresión al final la cierre).

Por otro lado, recuerdo que esos componentes tienen una propiedad llamada CursorType, quizá su valor influya en el uso de marcas de registro (bookmarks).

jsc 21-01-2013 07:33:16

Muchas gracias por el aporte
Lo probare y comentare el Resultado

Nuevamente; gracias Al Gonzalez

jsc 24-01-2013 13:25:33

Hola
Finalmente he conseguido solucionarlo. Probe con bookmarks como veis en el codigo pero nada.
Al final me olvide de bookmarks y con F7 vi que el codigo hacia alguna cosa rara;me.explico;
Tengo un query en base a al cual otros dos querys recogen datos.
En el evento onchange del dataset de query1 cargo los datos para query2 y query3.
Pues bien al ejecutar el informe pasaba que al salir de el se ejecutaba el codigo onchange que os comentaba.
Con una variable global privada he controlado cuando tiene que ejecutarse el evento onchange y todo perfecto
Gracias

Al González 24-01-2013 18:34:42

¡Estupendo, jsc! :)

Cuando de depuradores se trata, el de Delphi se lleva de calle a la mayoría de otros lenguajes (si no es que a todos). ^\||/


La franja horaria es GMT +2. Ahora son las 17:21:00.

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