PDA

Ver la Versión Completa : Error marcador no valido al cerrar informe rave report


jsc
20-01-2013, 11:30:37
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

...
SELECT * FROM TABLA1 WHERE FECHA=:fecha


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


al ejecutar el informe utilizo lo siguiente:

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 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). ^\||/