FAQ по FR3

отредактировано 06:26 Раздел: FastReport 3.0

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ ПО 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.




Комментарии

  • отредактировано 06:26
    Q. При формировании отчета в Windows NT на экран выводится какая-то ... вместо русских букв. В остальных ОС все нормально. Что ЭТО?

    A. У всех TfrxMemoView надо выставить свойство
    Font.CharSet:=RUSSIAN_CHARSET;
    Воспользуйтесь мастером поиск и замены. Он автоматом у все объектов меняет
    на нужное свойство.
  • отредактировано 06:26
    Q Как скрыть поле, например, на последней странице?
    Делаю скрипт на OnBeforePrint
    Memo999.Visible := := (<PAGE#> < <TOTALPAGES#>);
    TOTALPAGES# почему то всегла 0

    A . TotalPages# - это по сути макрос, работает в объекте "Текст". В данном случае надо использовать два прохода и переменную TotalPages.
  • отредактировано 06:26
    Q компилирую проект, запускаю программу, открываю дизайнер во время выполнения программы - в дизайнере всё по-английски.
    Где что поправить/включить ?

    A. входишь в папочку с рускими ресурсами и копируешь их где у тебя стоит ФР
    или нажимаешь на програмке recompile.exe
    recompile.exe после своей работы выводит окошко с предупреждением, что актуальные файлы теперь лежат в LIB.., игнорировать это предупреждение не рекомендуется

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.