FAQ по FR3
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ ПО FR 3
Q. FR3 не открывает файлы отчета, ранее сохраненные в FR2.51
A. Используйте 2.53 для экспорта в fr3, designer, File|Save as, file type = FR3 report.
Q. После экспорта из 2.53 у всех объектов ShiftMode=smAlways и StrechMode=smMaxHeight
Как найти и заменить текст и настройку проперти ?
A. Используйте мастер import_2004_xx_xx.rar frx_BsReplace. (включите панель мастеров)
Там же Импорт из Ворда и FR_FIB
Q. Где дополнительные функции из POWERPACK, они раньше находились с папке FR_AddFunction?
A. Заходишь в [url='news://newsgroups.fast-report.com/' ] news://newsgroups.fast-report.com/[/url], затем там подключаешься к fast-reports.ru.public.binaries (это русские группы), там есть ещё fast-reports.public.binaries (это английские)
Q. Где взять FR_FIB под FastReport 3
A. В ньюзгруппе [url='news://newsgroups.fast-report.com/fast-rep...public.binaries' ] news://newsgroups.fast-report.com/fast-rep...public.binaries[/url]
Или пишите konstantin@akademservice.ru.
Q. Почему не работает в мемо [MoneyToStr([PSUM],1,0)]
A. Нужно [MoneyToStr(PSUM,1,0)]
скобки квадратные - только для использования в мемо, и то, если стоит memo.ExpressionDelimiters = [,]. Скобки угловые - для обозначения полей БД, переменных из списка, служебных переменных, агрегатных функций. В ДРУГИХ СЛУЧАЯХ - НИКАКИХ СКОБОК НЕ НАДО!
Потому что в FR3 квадратные скобки "заняты" скриптом для передачи параметров типа "массив".
Q. в запросе параметр стоит [DateE.Date] DateE- компонент TfrxDateEditControl Почему не работает?
A. Не надо квадратных скобок в параметрах запроса.
Q. При передачи Q.Sql.text := <FSqlText>;
'Ошибка в выражении ''SELECT *'#$D#$A'FROM PROC_V_NOTIFY(Null, Null, 1, 6400, 1, Null, Null)'#$D#$A#$D#$A'ORDER BY RAPPARTS'#$D#$A''': Expression expected'
A. - в строке не должно быть одинарных кавычек. Все одинарные кавычки надо продублировать;
- в строке не должно быть символов #13#10.
Учитывая вышесказанное, в некоторых случаях удобнее передавать значения переменных через скриптовые переменные.
Q. Could not convert variant of type (Null) into type (Double).
A. [IIF(VarToStr(<Result>) = '', '', FormatFloat('+#,##0.00;-#,##0.00;0.00', <Result>))]
'+#,##0.00;-#,##0.00;0.00;'
Q. Как присвоить строку переменной
A. Set('Result', '''' + 'Privet' + '''');
Q. Можно ли прервать выполнение отчета из скрипта этого самого отчета?
A. Engine.StopReport;
Q. А закрыть окно Preview? Из скрипта?
A. Нельзя.
Q. Почему не работает insert/overwrite
A. Редактор кода не поддерживает режимы insert/overwrite.
Q. Как поменять размер бумаги при построении отчета? По умолчанию размер бумаги отчета А4, но мне нужно некоторые страницы отчета выводить на печать в формате А3.
A. Когда отчет уже строится, размер менять нельзя.
Q. настройки CharSet и Font по умолчанию ???
A. Пока никак, правь исходники frxClass.pas.
Q. Почему не сохраняются значения переменных ?
Report.Script.Variables := YearOf(Date);
Report.Variables := YearOf(Date);
A. Заводите переменную FVariablesFr : TfrxVariables; и используйте ее.
Q. Как теперь работать с блоб полями
A. Смотри мой рабочий модуль
unit UBsReport3;
interface
uses
SysUtils, Classes, DB, Windows, Graphics, Controls, Forms, Dialogs,
frxVariables,
frxExportPDF, frxExportXLS, frxExportHTML,frxDMPClass,
frxExportTXT, frxClass, frxDesgn, frxDMPExport, frxGradient, frxChBox,
frxCross, frxRich, frxChart, frxDCtrl, frxFIBComponents, fs_iinterpreter,
frx_BsReplace, frx_BsImpMsWord ;
type
TDmReport = class(TDataModule)
frxFIBComponents: TfrxFIBComponents;
frxDialogControls: TfrxDialogControls;
frxChartObject: TfrxChartObject;
frxRichObject: TfrxRichObject;
frxCrossObject: TfrxCrossObject;
frxCheckBoxObject: TfrxCheckBoxObject;
frxGradientObject: TfrxGradientObject;
frxDotMatrixExport: TfrxDotMatrixExport;
Designer: TfrxDesigner;
frxTXTExport: TfrxTXTExport;
frxHTMLExport: TfrxHTMLExport;
frxXLSExport: TfrxXLSExport;
frxPDFExport: TfrxPDFExport;
fsScript: TfsScript;
DsCross: TfrxCrossObject;
DS: TDataSource;
Report: TfrxReport;
function DesignerSaveReport(Report: TfrxReport;
SaveAs: Boolean): Boolean;
procedure DataModuleCreate(Sender: TObject);
private
FActiveBlobField: TBlobField;
FVariablesFr : TfrxVariables;
procedure LoadFromBlobField(BlobFl: TBlobField);
public
procedure DesignReportFromBlobField(BlobFl: TBlobField; Caption: String);
procedure ShowReportFromBlobField(BlobFl: TBlobField; Caption: String);
procedure AddReportVar(pName :string; Value :Variant);
procedure DsPrint(pds : TDataSource);
end;
var
DmReport: TDmReport;
implementation
{$R *.dfm}
procedure TDmReport.DesignReportFromBlobField(BlobFl: TBlobField;
Caption: String);
begin
// Report.Script.Variables := '¦єёъ';
LoadFromBlobField(BlobFl);
Report.FileName := Caption;
Report.DesignReport;
end;
function TDmReport.DesignerSaveReport(Report: TfrxReport;
SaveAs: Boolean): Boolean;
var
Stream: TMemoryStream;
begin
Result := False;
if SaveAs then exit;
Stream := TMemoryStream.Create;
try
Report.SaveToStream(Stream);
Stream.Position := 0;
TBlobField(FActiveBlobField).LoadFromStream(Stream);
finally
Stream.Free;
end;
Result := True;
// Report.Designer.Modified := False;
end;
procedure TDmReport.LoadFromBlobField(BlobFl: TBlobField);
var
Stream: TMemoryStream;
begin
try
FActiveBlobField := BlobFl;
Stream := TMemoryStream.Create;
try
TBlobField(BlobFl).SaveToStream(Stream);
Stream.Position := 0;
if Stream.Size >0 then
Report.LoadFromStream(Stream);
finally
Stream.Free;
end;
except end;
Report.Variables.Assign(FVariablesFr);
end;
procedure TDmReport.ShowReportFromBlobField(BlobFl: TBlobField;
Caption: String);
begin
LoadFromBlobField(BlobFl);
Report.FileName := Caption;
Report.ShowReport;
end;
procedure TDmReport.AddReportVar(pName: string; Value: Variant);
begin
FVariablesFr[pName] := Value;
end;
procedure TDmReport.DataModuleCreate(Sender: TObject);
begin
FVariablesFr := TfrxVariables.Create;
end;
end.
Комментарии
A. У всех TfrxMemoView надо выставить свойство
Font.CharSet:=RUSSIAN_CHARSET;
Воспользуйтесь мастером поиск и замены. Он автоматом у все объектов меняет
на нужное свойство.
Делаю скрипт на OnBeforePrint
Memo999.Visible := := (<PAGE#> < <TOTALPAGES#>);
TOTALPAGES# почему то всегла 0
A . TotalPages# - это по сути макрос, работает в объекте "Текст". В данном случае надо использовать два прохода и переменную TotalPages.
Где что поправить/включить ?
A. входишь в папочку с рускими ресурсами и копируешь их где у тебя стоит ФР
или нажимаешь на програмке recompile.exe
recompile.exe после своей работы выводит окошко с предупреждением, что актуальные файлы теперь лежат в LIB.., игнорировать это предупреждение не рекомендуется