以前、OpenOfficeのデータベースである、Baseにおいて、マクロを使って、フォームを開く方法を書いたので、今回はレポートを開く方法です。
あ、それと、その前に、今回から、カテゴリにOpenOfficeを追加しました。
■仕様
C:¥temp¥テスト用1.odbというOpenOffice Baseのデータベースファイルがあって、その中にある「レポート1」を開きたい場合
(なお、¥は、本当は半角です)
■ソース
マクロは、以下のとおりです
Sub Main '**** プロパティを入れるところ Dim pProp(1) As New com.sun.star.beans.PropertyValue '**** データベースを開く sURL = ConvertToURL("C:¥temp¥テスト用1.odb") oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) '**** レポートとコネクションの接続 oForms = oDoc.getReportDocuments() oAConnection = oDoc.DataSource.getConnection("","") '**** プロパティを設定 Nameが属性 Valueが値 pProp(0).Name = "ActiveConnection" 'コネクション pProp(0).Value = oAConnection pProp(1).Name = "OpenMode" ' デザインで開く?入力フォーム? pProp(1).Value = "open" ' 入力フォーム(openDesignだとデザイン) '**** フォームを開く oFormulario = oForms.loadComponentFromURL("レポート1","_default",0,pProp()) End Sub |
(上記¥ < > は、本当は半角)
上記で赤で書かれているところが、ファイル名、フォーム名など、固有のものになります
(使うときは、実際のみなさんの開きたいものが、入ります)
青字のところが、フォームと違うところです。
つまり、フォームの場合は、
oDoc.getFormDocuments()
レポートの場合は
oDoc.getReportDocuments()
をつかって、対象ドキュメントを取得します。
なお、レポートのとき(つまり、今回の上記のソース)でも、その結果の受け取りをoFormsとしていますが、これは、変更点を最小にするためで、本当はoReportsなどの変数のほうがいいです(ただし、もちろん、oFormsのままでも、動作はするけど)
■しかし、その前に。。
しかし、その前に!です。。
そのレポートを作る話。
OpenOfficeの2.1を使っているのですが、Baseでは、レポートをウィザードでつくるかたちになっていて、このウィザードでできるレポートが(^^;)
あの・・・
フォームから、印刷しましょうか(^^;)
ってかんじなのだ。。。。
なんか、もっと、まっとうなレポートを作る方法があるのかもしれない。。
それがみつかるまでは、フォームを印刷していたり、Writeの差込印刷のほうがいいのかなあ
(差し込み印刷使ってないので、よくわかんないけど。。)