Top > OOobbs3 > 71

OOobbs3/71 Edit

  • サマリ: Baseでのテーブル情報取得について
  • 環境: Basic
  • 状態: 解決
  • 投稿者: My?
  • 投稿日: 2011-10-14 (金) 19:10:28

質問 Edit

いつもお世話になっております。

 OpenOffice.org3.2.1でBaseを使用しております。

 unoidl.com.sun.star.sdbc.XConnectionサービスを使用してテーブルに接続し、unoidl.com.sun.star.sdbc.XStatementサービスの  executeQueryメソッドやexecuteUpdateメソッドでSQLの実行ができることは確認しました。

 そこで、テーブルのフィールドのタイプを取得することはできますでしょうか?(VARCHAR(20)等)

 取得メソッドがあるのではと探していましたが、なかなか見つけることができずに困っております。

もしわかる方いらっしゃいましたら、よろしくお願い致します。

回答 Edit

  • ActiveConnection から接続された状態で、com.sun.star.sdbcx.IndexEnumerable インターフェースでテーブルの一覧をまず取得します。該当するテーブルのカラムの情報にアクセスできるので、そこから型なども取得できます。
Sub GetColumnInfo
 oCurrentController = ThisComponent.getCurrentController()
 oActiveConnection = oCurrentController.ActiveConnection
 oTables = oActiveConnection.getTables()
 
 oObj_1 = oTables.getByIndex(0)
 oColumns = oObj_1.getColumns()
 oElementNames = oColumns.getElementNames()
 
 oColumn = oColumns.getByName("NAME")
 msgbox "type: " & CStr(oColumn.Type) & ", " & _
        "len: " & CStr(oColumn.Precision)
 ' 12: VARCHAR
End Sub

カラムのプロパティ値は com.sun.star.sdbcx.Column のサービスで定義されています。 また、Type の値は com.sun.star.sdbc.DataType の定数で定義されています。

ちなみに、X から名前が始まっているのはインターフェースでサービスではありません。

どこかに書いたはずとおもったら、OOoBasic/Base/Columnの表と同じですね。これじゃ分かりにくいですねぇ。

  • はにゃ? 2011-10-14 (金) 20:44:43

感想,コメント,メモ Edit

はにゃ?さん、早速のご回答ありがとうございます。書いてある場所があったんですね、探し方がまだまだ甘いようですいません。 いろいろと詳しく説明していただきありがとうございます。



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