ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

OpenOffice Base(データベース)でマクロから「レポート」を開く方法&その前に(^^;)

2007-01-29 15:21:29 | OpenOffice

 以前、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の差込印刷のほうがいいのかなあ
(差し込み印刷使ってないので、よくわかんないけど。。)

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 利用者の出力から業務を分析... | トップ | Wiiとソニーをビル・ゲイツが... »
最新の画像もっと見る

OpenOffice」カテゴリの最新記事