* レポート [#cb8a30c9] Base ドキュメントに埋め込まれたレポートドキュメント。 レポートドキュメントは普通の Writer ドキュメントに隠しコントロールフィールドを挿入したものです。com.sun.star.container.XChild インターフェースをサポートおり、そのインターフェースのメソッドを使用して親ドキュメントへアクセスできます。 #contents ** レポートコンテナ [#hbb760a2] データベースドキュメントに埋め込まれたレポートドキュメントにはレポートコンテナからアクセスできます。 Sub Reports_1 oDoc = StarDesktop.getCurrentComponent() oReports = oDoc.getReportDocuments() End Sub ** レポートの読み込み [#f33444de] レポートドキュメントはレポートコンテナから読み込み、開くことができます。 Sub Reports_2 oDoc = StarDesktop.getCurrentComponent() Dim args(1) As New com.sun.star.beans.PropertyValue args(0).Name = "ActiveConnection" args(0).Value = oDoc.DataSource.getConnection("", "") args(1).Name = "OpenMode" args(1).Value = "open" oReports = oDoc.getReportDocuments() oReports.loadComponentFromURL("ReportName", "_blank", 0, args) End Sub 編集する場合には OpenMode に openDesign を指定します。 ** レポートドキュメントの構成 [#g5fe6313] レポートドキュメントは普通の Writer ドキュメントと変わりありませんが、レポートに表示するレコードの指定などが隠しフォームコントロールとして埋め込まれています。 フォーム名は ReportSource を使用します。また、レポートの部分はセクション RecordSection に入れられています。表は Tbl_RecordSection。 - CommandType~ Command で指定したコマンドの種類を integer で指定 - QueryName~ CommandType がクエリー (1) のときにはクエリー名。コマンドの時には空 - Command~ CommandType がコマンド (0) のときにはレコードを取得するコマンド。CommandType に指定した種類のコマンド - GroupFieldNames - FieldNames~ レポートドキュメント中でのフィールド名をセミコロンで区切って - RecordFieldNames~ レコード中でのフィールド名をセミコロンで区切って。FieldNames のフィールドと対応させる レポートを生成するコードは以下にあります。 http://lxr.go-oo.org/source/installation/wizards/com/sun/star/wizards/report/ReportTextImplementation.java |