「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:1
総数:1296
現在:1


正しい書き方

ページOpenOffice.org FAQの登録ページ
投稿者タイガー
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-12-11 14:32:59 (土)
OSWin XP
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

TestBの方では、Set conDB = New ADODB.Connectionで作成した場合は、 終了時にconDB = Nothingを記入しないといけないが、 TestAの方みたいに、conDB = CreateObject("ADODB.Connection")で作成した場合は、 conDB = Nothing を省略しても問題ないのでしょうか?

TestAのエラー処理について TestAを実行するともちろんconDB.Open(sURL)でエラーが発生致し On Error で ERRLINE:に飛び conDB.Closeで再度エラーが発生し「オブジェクトが閉じている場合は、操作は許可されません。」 とエラーがでます。 もし、conDB.Open(sURL)が開いてからのエラーであれば問題ないのですが、 この様な場合、どのようにエラー処理をした方が良いのでしょうか?

Sub TestA()
  	Dim sURL As String
  	Dim conDB As Object
  	Dim mdbURL As String
  	Dim oSimpleFileAccess As Object
  	
  	mdbURL ="C:\Test.csv"
  		
	On Error Goto ERRLINE
	oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
	If oSimpleFileAccess.exists( mdbURL ) Then Exit Sub
	
  	conDB = CreateObject("ADODB.Connection")
  	sURL = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdbURL & ";"
  	conDB.Open(sURL)
	'〜〜なんだかの処理
ERRLINE:
	conDB.Close
End Sub

Sub TestB()
  	Dim sURL As String
  	Dim conDB As Object
  	Dim mdbURL As String
  	Dim oSimpleFileAccess As Object
  	
  	mdbURL ="C:\Test.msb"
  	
  	On Error Goto ERRLINE
	oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
	If oSimpleFileAccess.exists( mdbURL ) Then Exit Sub
	
  	Set conDB = New ADODB.Connection
  	sURL = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdbURL & ";"
  	conDB.Open(sURL)
	'〜〜なんだかの処理
		
ERRLINE:
	conDB.Close
	conDB = Nothing
End Sub

プログラマではないので分かりませんが

ike@九州 (2010-12-12 13:16:49 (日))

OOo を時々終了するのであれば、その時メモリは全て開放されるので
"= Nothing" は必要無いような気がします。
OOo を起動しっぱなしの場合は、取りあえず "= Nothing" しておいた方がよいような…これも実際開放しているのか判断できません。
過去に OOo をサーバ起動して行った実験では、Nothing しても メモリの開放は行われませんでした。

エラー処理については
何処でエラーが発生したのかによって処理を分けたいのであれば
On Error Resume Next にて、アクションを要求した後
随時エラー判断を仕込み、処理分岐させるのではないのでしょうか?

以下に Connection オブジェクトのプロパティ、メソッドがあります。
http://msdn.microsoft.com/ja-jp/library/cc364252.aspx

利用できるのは State プロパティや Errors コレクションなどでしょうか
conDB.State = 0 なら切断されているので close の必要はないとか
conDB.State > 0 and conDB.Errors.count > 0 ならクエリの実行に失敗しているなど想像できますね(conDB.Errors.Clearも組み合わせ使用)

この程度しか、自身には分かりません。

有難う御座いました

タイガー (2010-12-12 17:31:38 (日))

有難う御座いました
http://msdn.microsoft.com/ja-jp/library/cc364252.aspx
じっくりと調べてみます。

完了にします

M.Kamataki (2010-12-13 10:16:44 (月))

ike@九州さん、タイガーさん、ありがとうございます。

お名前:
題名: