Top > OOobbs3 > 106

** [[OOobbs3/106]] [#l88cfba6]
-''サマリ'': 【Base】レポートを独立ファイル化させるには?
-''環境'': Basic
-''状態'': 未解決
-''投稿者'': [[nari]]
-''投稿日'': 2013-03-21 (木) 21:50:47

*** 質問 [#s489368b]
度々失礼します。

先日、
【BASE】フォームのデータソースの値をBasicで動的に設定したい
で質問させていただいたものです。



フォームについては独立させることが出来たのですが、
レポートについても似たようなこと起き、つまづいてしまいました。

odbファイル内に埋め込まれたレポートは、
起動させると自動でレポートを出力してくれる
(ダイアログが出る)
のですが、
ファイルを独立させた場合、起動時にデータベースと接続していないようです
(ダイアログが出ない)。



とりあえず、どの部分が関わっているのかわからないので、
拡張機能で関係ありそうな値を確認してみたり、
起動時のオプションで関係ありそうな値を設定してみたりしているのですが、これといって変化はないようです。

どうすればよいのか、ご教授のほどよろしくお願いいたします。


'FILE => 独立化させたレポートファイルのパス
 Sub RunReport(File)	
	Dim oDoc As Object
	dim prop(2) as new com.sun.star.beans.PropertyValue
        prop(0).name = "MacroExecutionMode"
        prop(0).value = 0
        prop(1).name = "OpenMode"
        prop(1).value = "open"
        prop(2).name = "ReadOnly"
        prop(2).value = true
        'prop(3).name = "Hidden"
        'prop(3).value = true
        'prop(4).name = "StartPresentation"
        'prop(4).value = true
        oDoc = StarDesktop.loadComponentFromURL(File,"_default", 0, prop )
	'読み込むデータベース
        dbPath = "" 'パスを指定
	
        'データベースと接続
        DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
        DataSource = DatabaseContext.getByName(dbPath)
        Connection = DataSource.getConnection("", "")
        'データベースと接続して関連づけてみようとしたが、エラー
        'DP = oDoc.DrawPage
	'DP.getForms.getByName("ReportSource").DataSource=  DataSource
 End Sub
*** 回答 [#s5ac073a]
- このあたりを調べると分かるかもしれません。http://opengrok.adfinis-sygroup.org/source/xref/aoo-AOO34/main/dbaccess/source/ui/app/AppController.cxx#1841 -- はにゃ? &new{2013-03-22 (金) 22:30:26};
- ありがとうございます!何のページかよくわかりませんが、多分オープンオフィスのソースコードですよね?javaはやったことがありませんが、1400行目あたりが怪しい気がするので、いろいろ試してみたいと思います。貴重な情報ありがとうございます! -- nari &new{2013-03-22 (金) 23:00:10};
- すみません、開発の続行を断念しました。

と、申しますのは、こちらに掲げた質問内容とは関係ないことが原因です。



今回質問させていただいたことは、Baseに不可解な挙動が多いため、定期的なバックアップをとろうと思い、BaseのフォームやレポートをBaseファイルから独立させ、データベースの内容ファイルを軽量化させようと思って開発に着手したなかでの疑問点でした。



先日の質問で、フォームを独立させることに成功しました。
しかし、いざ使ってみると、データベース内容のファイルに他のファイルからアクセスした際、データベース内容のファイルにロックがかかり、データベースが更新できないトラブルが発生しました。  「ファイルにロック」というよりも、「コミットができない状態になる」といった方が相応しいかもしれません。
しかし、いざ使ってみると、データベース内容のファイルに他のファイルからアクセスした際、データベース内容のファイルにロックがかかり、データベースが更新できないトラブルが発生しました。


「ファイルにロック」というよりも、「コミットができない状態になる」といった方が相応しいかもしれません。

この様な状態が不定期で発生します。

データベース内容のファイルを直接開いて、何らかの値を書き換え、再度保存しなおすと、この状態から脱却することもあるようです。
脱却できないこともあります。

また、データベースのファイルにアクセスした際、.odb.lckという拡張子のファイルがデータベースのファイルと同じディレクトリ内に一時的に自動的に作られ、これが関係しているような気もしますが、調べた結果、関係あるかないかが、やはり断定できないような状態です。

Baseファイル内のフォームやレポートをいじっていたときは、この様な現象は発生しませんでした。

Base側のトランザクションの都合でこういった現象が発生するような仕様になっているものと考えておりますが、この不可解な状態が発生する条件を調べ、それを回避したり解決したりするプログラムを書くのは、私には力不足だと考え、フォームやレポートの外部ファイル化を断念しました。



フォームやレポートを独立させず、単一のファイルのままバックアップをとって使い続けようと思います。



はにゃさんには、せっかくご協力いただいたのに申し訳ありません。 -- nari &new{2013-03-23 (土) 18:34:20};

#comment


*** 感想,コメント,メモ [#t1c1a6b5]

#comment

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes