1

Stackoverflow ユーザーの皆様。助けが必要です。私は、FastReport 4.0 の Embarcadero XE2 RAD スタジオ エディションに組み込まれていることに苦労しています。より具体的には、同じエラーが何度も何度も発生しています。これは、不思議な「Class TfrxReport Not found」エラーです。以下に、問題を引き起こすコードの一部を提出します

procedure TForm1.buildReport(Sender: TObject);
var
 DevicePic, SymbolPic: TfrxPictureView;
 TitleEntry, xmlField: TfrxMemoView;
 MasterDataBand: TfrxMasterData;

begin
if not ADOConnection1.Connected then
       ShowMessage('Cannot build Report! Please, connect to the DB!')
else

try
 //this is where the Class Not Found Exception is Thrown
 frxReport1.LoadFromFile('LibreportTemplate.fr3',True);
 // frxReport1.LoadFromFile('helloInfineonThree.fr3',True);

 if (frxDBDataset1 = nil) then frxDBDataset1 := TfrxDBDataset.Create(Self);
 // connect the report to the DATA
 frxDBDataset1.DataSource := DataSource1;
 frxReport1.DataSet := frxDBDataset1;
 except
     ShowMessage('Error has Occured! Report Template File Not Found!');
 // exit from this procedure!
     Exit;
 end;
 // If no errors have occured, go on building ur report by actually filling it up with data!

 // attach dataSet to the masterdata band of the report.
 MasterDataBand := frxReport1.FindObject('MasterData1') as TfrxMasterData;
 MasterDataBand.DataSet := frxDBDataset1;
 // prepare textfields
 TitleEntry := frxReport1.FindObject('TitleEntry') as TfrxMemoView;
 TitleEntry.DataSet := frxDBDataset1;
 TitleEntry.DataField := 'LibFName';

 xmlField := frxReport1.FindObject('xmlField') as TfrxMemoView;
 // stretch the field if text too big.
 xmlField.StretchMode := TfrxStretchMode.smActualHeight;
 //get the XML DATA FROM THE DB.
 xmlField.DataSet := frxDBDataset1;
 xmlField.DataField := 'LibFXML';

 // prepare images
 DevicePic := frxReport1.FindObject('ImageEntry') as TfrxPictureView;
 DevicePic.DataSet := frxDBDataset1;
 DevicePic.DataField := 'LIBFIMAGE';

 SymbolPic := frxReport1.FindObject('SymbolEntry') as TfrxPictureView;
 SymbolPic.DataSet := frxDBDataset1;
 SymbolPic.DataField := 'LibFSymbol';

 // build and display report
 frxReport1.PrepareReport();
 frxReport1.ShowPreparedReport;

 end;

プログラムをビルドして実行すると、「クラス TfrxReport が見つかりません」というエラー メッセージが表示され、DebugMode で次の警告が表示されます。

プロジェクト "MyProject.exe" で例外クラス EClassNotFound が発生し、"Class TfrxReport not Found" というメッセージが表示されました。

上記のコードでコメントされているように、frxReport1.LoadFromFile('LibreportTemplate.fr3',True); を実行すると、問題の例外がスローされます。指図。

オンラインで解決策を検索するなど、問題を解決するためにさまざまなアプローチを試みました。これが私がしたことです:

フォームの OnCreate および OnClose 中に frxReport1 オブジェクトを手動で作成および破棄する - エラーが続く

FastReport で提案されているように (SO にリンクを投稿できませんでした。「申し訳ありませんが、投稿にそのコンテンツを含めることができません」というエラーが発生しました)、FastReport 4\LibD16 フォルダー内のファイルを置き換えます。- エラーが続く

FastReport 4 RAD STUDIO 32 ビット バージョンの再コンパイル - エラーが続く FastReport 4 RAD STUDIO 64 ビット バージョンの再コンパイル - エラーが続く Embarcadero RAD Studio と FastReport 4 を再インストールする - エラーが続く

STACKOVERFLOW で質問する - ????

fast-reports フォーラムのスレッドから、問題とそれぞれの解決策は次のように思われます (引用します):

このエラーは、GroupDescendentsWith(TfrxReport, TControl); によって発生します。コード。このコードは、FierMonkey から TfrxReport を非表示にし、何らかの理由で、レポートをロードしているときに "FindClass" 関数が TfrxReport クラスを見つけることができません (IDE のみ)。レポートをロードできない場合、または「Couldn't find TfrxReport」メッセージで同様のエラーが発生する場合は、この「ファイルへのリンク」ファイルを「Fast Report\LibD16」ディレクトリに置きます (すべて置き換えます)。

ただし、提案されたアプローチは問題を解決しません! 私は何をすべきか?誰にもアイデアはありますか?

4

5 に答える 5

2

私もこの問題に直面しており、これを行うことで解決しました。

  • 新しい ProjectGroup を作成し、デルファイのバージョンに適した DPK を追加します (私は XE6 を使用しています)。BPL がランタイムとデザインに分割されることがわかります。
  • ランタイム fsX (X はバージョンを意味します)、fqbX などのコンパイルを開始します。順番を間違えると気付きます。一部のパッケージでは、検索パス$(BSDCOMMONDIR)/DCP を追加する必要があります
  • デザイン パッケージをコンパイルしてインストールすると、TfrxReportが表示されます。

デザイン パッケージがインストールされると、結果は表示されません。IDE を再起動したところ、うまくいきました ;)

2年遅れで、これが役に立てば幸いです!

于 2015-11-03T16:52:07.653 に答える
1

ちょっとした考え。

RegisterClass(TfrxReport);プログラムの起動時にどこかに追加します。または、エラーが発生する行の直前。

于 2013-01-06T04:13:20.673 に答える
0

私は1から始めます

  1. fr3 ファイルへの絶対フル パスを入力し、
  2. ユーザーのドキュメント ディレクトリに配置し、

ファイルアクセスの問題を除外するだけです。FastReport のソース コードはありますか?

于 2013-01-04T19:46:47.743 に答える