PDA

Ver la Versión Completa : Problema Campo BLOB y FastReport ... Help


Efren2006
10-03-2010, 04:04:39
Tengo el Siguiente Problema:

Tengo una aplicacion (D2009) que usa FastReport (V4.7.5) y tengo todos los Reportes de la Aplicacion en Archivos.fr3, pero por medidas de Seguridad me gustaria colocar todos los Formatos en mi BD (Firebird 2.1) ya realice todos y los cambios a la aplicacion, pero no funciona correctamente, el problema al parecer es que no Guarda de Forma Correcta dentro del Campo BLOB.
Lo mas insolito es que compare visualmente el Archivo .fr3 y un archivo texto donde guardo el valor del campo BLOB y se ven identicos, pero este ultimo lo leo o trato de abrir con fastreport y no funciona, me atrevo a pensar que al guardarlo algo le cambia que no puedo notar.

Preguntas:
-Alguien ha Hecho esto con Anterioridad para que me guie ?
- Como debe configurarce el Campo Blob dentro de la BD. ?

Describo Brevemente las funciones de Guardar y el de llamado al reporte

Guardar:


procedure TBioFormatos.GuardaReporte;
Var
Archivo:AnsiString;
Campo,ArcMemo:TStream;
begin
inherited;
if Application.MessageBox('Desea Sincronizar este Reporte en la Base de Datos..?','VALIDAR',MB_YESNO+MB_ICONEXCLAMATION)=IdYes Then
Begin
Try
Screen.Cursor:=crHourGlass;
LockWindowUpdate(Handle);
Archivo:=Global.RutaReporte+TRIM(FormatosNOMARCHI.Value)+'.fr3';
if FileExists(Archivo) Then
Begin
Diseno.Close;
Diseno.Open;
if Diseno.RecordCount>0 then
Begin
Diseno.Edit;
DisenoDISENO.LoadFromFile(Archivo);
Diseno.Post;
Diseno.Transaction.CommitRetaining;
End;
End;
Finally
Campo.Free;
Diseno.Close;
Screen.Cursor:=crArrow;
LockWindowUpdate(0);
ShowMessage('El Archivo Fue Sincronizado ... Verifique ');
End;
End;
end;


Llamada:


Function TDataImpresion.BusFormato:Boolean;
Var
Archivo,ArcBase:String;
I,UltPos:Integer;
Campo:TStream;
begin
Result:=False;
Try
FormaReporte.Open;
FormaReporte.First;
if Not FormaReporteNOMARCHI.Isnull Then
Begin
Campo :=FormaReporte.CreateBlobStream(FormaReporte.FieldByName('DISENO'), bmRead);
if Campo.Size<>0 then
Begin
Campo.Position := 0;
Reporte.Clear;
Reporte.LoadFromStream(Campo);
Reporte.ReportOptions.Description.Add(ReportesNOMBREPO.Value);
Result:=True;
end;
Finally
ArcParent.Free;
Campo.Free;
End;
FormaReporte.Close;
end;