** [[OOobbs3/71]] [#eb25f4dd] -''サマリ'': Baseでのテーブル情報取得について -''環境'': Basic -''状態'': 解決 -''投稿者'': [[My]] -''投稿日'': 2011-10-14 (金) 19:10:28 *** 質問 [#x0626691] いつもお世話になっております。 OpenOffice.org3.2.1でBaseを使用しております。 unoidl.com.sun.star.sdbc.XConnectionサービスを使用してテーブルに接続し、unoidl.com.sun.star.sdbc.XStatementサービスの executeQueryメソッドやexecuteUpdateメソッドでSQLの実行ができることは確認しました。 そこで、テーブルのフィールドのタイプを取得することはできますでしょうか?(VARCHAR(20)等) 取得メソッドがあるのではと探していましたが、なかなか見つけることができずに困っております。 もしわかる方いらっしゃいましたら、よろしくお願い致します。 *** 回答 [#tf9aa459] - ActiveConnection から接続された状態で、&idlref(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 カラムのプロパティ値は &idlref(com.sun.star.sdbcx.Column); のサービスで定義されています。 また、Type の値は &idlref(com.sun.star.sdbc.DataType); の定数で定義されています。 ちなみに、X から名前が始まっているのはインターフェースでサービスではありません。 どこかに書いたはずとおもったら、[[OOoBasic/Base/Column]]の表と同じですね。これじゃ分かりにくいですねぇ。 -- はにゃ? &new{2011-10-14 (金) 20:44:43}; #comment *** 感想,コメント,メモ [#g86b872d] はにゃ?さん、早速のご回答ありがとうございます。書いてある場所があったんですね、探し方がまだまだ甘いようですいません。 いろいろと詳しくして説明いただきありがとうございます。 いろいろと詳しく説明していただきありがとうございます。 #comment |