Fr 4.6 ошибка при записи в Blob-поле БД
Добрый день, уважаемые пользователи форума!
Пытаюсь создать функционал сохранения шаблонов отчетов в BLOB-поле таблицы БД. Для этого в своем модуле динамически создаю объекты:
№1 в моем обработчике
Какие будут соображения?
Пытаюсь создать функционал сохранения шаблонов отчетов в BLOB-поле таблицы БД. Для этого в своем модуле динамически создаю объекты:
var
vReport:TfrxReport;
vDesigner:TfrxDesigner;
...
vDataStream:=TMemoryStream.Create;
vReport:=TfrxReport.Create(Owner as TF_Multi);
//Designer
vDesigner:=TfrxDesigner.Create(Owner as TF_Multi);
и загружаю шаблон отчета из BLOB-поля таблицы БД
(R_Reports.FieldByName('rep_data') as TBlobField).SaveToStream(vDataStream);
vDataStream.Position:=0;
vReport.LoadFromStream(vDataStream);
обработчик для события OnSaveReport для vDesigner:
function TReports_Frm.vDesignerOnSaveReport(Report: TfrxReport; SaveAs: Boolean): boolean;
var
vMess:String;
vDataStream:TMemoryStream;
begin
vDataStream:=nil;
if not SaveAs then
begin
vDataStream.Create; <-на этой команде возникает ошибка №1 (см. ниже)
vReport.SaveToStream(vDataStream);
vDataStream.Position:=0;
try
R_Reports.Edit;
(R_Reports.FieldByName('rep_data') as TBlobField).LoadFromStream(vDataStream);
R_Reports.Post;
MessageDlg('Сохранено.', mtError, [mbOk], 0);
Result:=True;
except
on e:exception do
begin
vMess:='Ошибка при сохранении отчета в БД! '+E.Message;
MessageDlg(vMess, mtError, [mbOk], 0);
R_Reports.Cancel;
R_Reports.CancelUpdates;
end;
end;//try-except
vDataStream.Free;
end;//if SaveAs
end;
подключаю этот обработчик к объекту TfrxDesigner и запускаю дизайнер:
vDesigner.OnSaveReport:=vDesignerOnSaveReport;
vReport.PrepareReport(True);
vReport.DesignReport;
при сохранении возникают ошибки:№1 в моем обработчике
в модуле frxDesgn в функции
Debugger Exception Notification
Project Scais.exe raised exception class EAccessViolation with message 'Access violation at address 004049B7 in module 'Scais.exe'. Read of address 00000000'.
Break Continue Help
function TfrxDesignerForm.SaveFile(SaveAs: Boolean; UseOnSaveEvent: Boolean): Boolean;
при срабатывании команды
if frxDesignerComp.FOnSaveReport(Report, SaveAs) then
возникает ошибка №2:
Пробовал использовать TfrxReport и TfrxDesigner, добавленные на форму в Design-Time - результат тот же.
Debugger Exception Notification
Project Scais.exe raised exception class EAccessViolation with message 'Access violation at address 004049F3 in module 'Scais.exe'. Read of address 00000000'.
Break Continue Help
Какие будут соображения?
Комментарии
P.S. FR, тем более версии 4.6, здесь вообще ни при чём
благодарю!
тему можно закрывать.