1

Delphi XE3 を使用して Windows サービスを作成しています。サービスはデータベースから読み取り、quickreport 5.05.1 を使用して pdf を生成します。TQRPDFDocumentFilter を使用して pdf を生成する予定です。

通常の VCL アプリケーションではすべて正常に動作しますが、Windows サービスに実装すると、QuickRep.Prepare を実行するとサービスが (例外なく) ハングします。

Windows サービスで QuickReport を使用できると読みましたが、その方法がわかりません。助言がありますか?

コードはどこにありますか:

procedure foo
var
 pdfFilter: TQRPDFDocumentFilter;
begin
  with TForm2.Create(Self) do
  begin
    ClientDataSet1.Open;
    QuickRep1.Prepare;
    pdfFilter := TQRPDFDocumentFilter.Create(GetApplicationFolder() + 'test.pdf');
    try
      QuickRep1.QRPrinter.ExportToFilter(pdfFilter);
    finally
      pdfFilter.Free;
      ClientDataSet1.Close;
    end;
  end;
end;

編集:別のスレッドで提案されているように、QuickReport で「進行状況を表示」をオフにしてみました。例外をキャッチするコードを書くと、実際に例外がスローされることがわかります。メッセージは「現在選択されているデフォルトのプリンターはありません」です。したがって、サービスが実行されているローカル システム ユーザーにはプリンターがインストールされておらず、これが問題であると思われます。

4

1 に答える 1