Last Update:
[ Home ] - [ Back ] - [ Top ]

 

Tips

ODBC接続によるCalcデータ処理

OpenOffice Calc のODBC接続によるRDB(Jet4.0を例題に)からのデータ取り込み方の説明です。
Jet(*.MDB MS AccessのRDB)を例にしています。
他のRDBでもODBCのデータソースの設定方法が異なるだけで、貼り付け方等は同様に処理できます。

- ODBCデータソースの設定 -

▲ 管理ツール ▲

ODBCデータソース作成のためODBCマネージャー(言葉違うかも)を起動する。

1) Win98は[スタート]−−>[コントロールパネル]−−>[ODBCデータソース(32ビット)]で、Win2K,NTは[スタート]−−>[コントロールパネル]−−>[管理ツール]−−>[ODBCデータソース(32ビット)]を選択実行します。

Calcのデータソース選択画面でもODBCマネージャーにこれるので、後で設定しても良いが、多分設定してからCalcに言ったほうが解りやすいのではないでしょうか。

ODBCデータソースは、どのドライバーを使用して、どのRDBを使用するのかを設定するためのものです。RDBの中にどんなテーブルが有るかは関係有りません。


▲ DSN選択 ▲

作成又は構成(更新)するDSNの設定

1)ODBCデータソースの新規作成および既存のデータソースの変更(1の[追加]ボタンの下の下の[構成」ボタン)をクリックします。まずは上のタブでどのタイプのDSNを使用するかを決め、[追加]・[削除]・[構成]の各ボタンをクリックします(構成:普通に言う所の更新)

2)ユーザDSN 作成したユーザだけが使用できます。

3)システムDSN このシステム(PCのことか)で使用できます

4)ファイルDSN ファイル形式で出来上がるので、他のシステム(PC)へ移行も簡単に出来ます。現在CalcのデータソースとしてはこのDSNは使用できません


▲ ドライバー選択 ▲

使用するドライバー選択

1)Driver do Microsoft Access (*.MDB)か、2)Microsoft Access Driver (*.MDB)、またはMicrosoft Access-Treiber Driver (*.MDB)のどれかを選択して

3)[完了]ボタンクリックします

当方は2)を普段使いますが、MDBに関してこの3種類のドライバーの違い良く分りません。


▲ MDBの選択 ▲

使用するMDBの選択

1)データソース名 適当な名前をつけます。同一DSN内で一意になるような名前なら何でも可。

2)[選択]ボタンで一般的なファイル選択画面になりますから、読み込みたいMDBを選択します。

3)[OK]ボタンクリック。以上でODBCデータソースの設定は終了です。

各々のRDBによりここの設定項目が変わります。詳しくは各RDBのマニュアル参照するか、適当に設定してみて動けばそれがきっとその設定が正解でしょう。

注) 2)の[選択]でのネットワークコンピュータの指定は(JETの場合)、ネットワークドライブだけです。UNCパス名(\\コンピュータ名\共有名\なんたらかんたら・・・.MDB)は指定できません。UNCパス名どうしても使用したい(PC立ち上げるごとにネットワークドライブ接続するのが面倒だ等)なら、MDBの方のリンク(昔はアタッチと言った。今でもそう呼ぶ人もいる)設定で自PC内にリンク情報+クエリーのMDB作成して、このMDBにODBC接続するよう指定してください。又はADO接続って手も有りますけど(下記にチョボットだけ書いときます)。



ここからいよいよOpenOffice Calc の処理です


- データソースの設定 -

▲ データソース設定 ▲

まずはデータソースという形でCalcに外部ファイル(ODBC接続した)を認識させます。

1) [ツール]−−>[データソース]を選択実行します。

 


▲データソース設定 ▲

データソース設定。

1)新しいデータソース 新規作成のときはここをクリック。修正のときは、6)の欄よりデータソースクリックするとその情報が右側に表示される。

2)名前 データソース名適当に付けます。6)の[データソース1]がこの名前になります

3)データベースの種類 リストボタン押して[ODBC]選びます。

4)データソースURL ODBCマネージャーで指定したデータソース名入力するか、5)のボタン押して表示された中より(下記参照)選択します。

ここでクエリーなど作成しないなら、これで[適用]ボタンクリックして、データソースの設定は終了します。

基本的には[全般]タブのページ(このページ)の設定だけでRDBよりデータ持ってこれるはずです。

[ODBC]タブは、ユーザーとパスワードの関係などの設定です。

[テーブル]タブは、実際に使用できるテーブルを設定します。表示させたくない(一般に公開しない秘密のテーブル等)場合は、ここで非表示する各テーブルのレ点はずします。と、言ってもこの処理でレ点つければ選択対象になりますので、あまり意味無いのでは。

[クエリータブ] Calcで設定するクエリーを登録します。RDBのクエリー(RDBによってはビューと呼ぶものも有り)はCalc側からはテーブルとして認識されます。

あともう一つ。MDB限定ですが[データベースの種類]の中にADOも有りますので、ODBCのデータソース作るの(最初の説明参照)面倒ならば、この方法も有ります。

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Password=;Data Source=C:\hoge\hoge.mdb 

ここでは[Data Source=] 以下にフルパスでMDB名まで指定する。[Data Source=]以前はこのまま指定します。ネットワークならUNCパス名(\\コンピュータ名\)でも指定できます。UserID と Password は指定しなくても良かったような気がしたが。

後ADO接続ならばODBC接続使用して

Provider=MSDASQL;DSN=ODBCのDSN名;UID=Admin;PWD=;  

こんなのも有りかも?

 


▲ データソース選択 ▲

上記で5)の参照ボタンクリックしたときの、データソース選択画面

1) の欄よりデータソース選択する。きっとそのうち、ファイルDSNも表示されるようになるのかな?

3)管理 ODBCマネージャーの処理にここからいけます。指定してなかったり、設定ミスあったときなどに便利かもしれません。


▲ テーブルの選択 ▲

[テーブル]タブのページ データソースで指定されたRDB内のテーブルとクエリー(ビューという呼び方もあり)の一覧。表示するテーブル(非表示にするというべきか)の指定を行う。

1)データソース名の欄

3)レ点のついているものが処理の対象テーブルになります。


▲ ヴュー作成 その1 ▲

[クエリー]タブのページ Calc用のクエリーの設定関係です。Accessのクエリーと殆ど同じです。

3)二枚紙のアイコンがGUIによるクエリー作成。SQL文字のアイコンがCUIによるクエリー作成(SQL文の直接入力)で、前二つが新規作成、次の2つが修正処理です。

前にも説明しましたが、これはCalc用のクエリーです。ここで作成したものが、呼出もとのRDBに追加されるわけではありません。


▲ ヴュー作成 その2 ▲

使用テーブルの追加

1) で使用するテーブル選択して、2)の[追加]ボタンクリックするか、テーブル名ダブルクリックする。


▲ ヴュー作成 その3 ▲

結合フィールドの指定

複数テーブル選択したときに、各テーブル間の結合カラムをドラッグ&ドロップします。複数カラムあるときは複数カラム分ドラッグ&ドロップします。

2)結合条件(初期値は等結合)変更したいときは、結合線の真中当たりをダブルクリックすると下記の画面になります。

リレーションシップ設定してあると、レレーションシップ元に結合線も自動的に惹かれます。私の場合は、開発終わるとリレーションシップ消しちゃうので意味無いけど。


▲ ヴュー作成 その4 ▲

結合方法の指定

1)オプション 結合方法を指定する。詳しい説明は右側に表示されるので参照してください。


▲ ヴュー作成 その5 ▲

使用カラムの選択

1),2)のカラム一覧より3),4)の各欄へドラッグするかダブルクリックで使用カラム選択します。カラム一覧の一番上の[*]は全カラムをあらわします。フィールド欄の右端クリックしてリストボックスにしてそこで選択することも出来ますが、テーブル名のエリアス設定がなぜか複数のアンダーバーになっていますので、同名のカラム有ると探しずらいです。

5)並び替えで、レコードの並び順指定します。左から右の順番で並び替えます。カラムの並び順と異なるカラム順で並び替えたいときは、並び替え専用のカラムを指定します。この時は[表示]属性のレ点をはずせば表示対象から除かれます。

 

エリアス欄に文字入力するとカラム見出し(貼り付けたときに列見出しになります)変更できます。

関数欄で集計関数等(合計、件数、最大値・・・)できるはずですが、現在SYNTAXエラーで落ちてしまいます。今出来るのは重複カラムのしぼりこみだけです(グループ化のみ)。

抜き出し条件は[条件]欄にしていしてください。[*]で全フィールド選択した場合は、並べ替えと同様に、条件カラム追加して[表示]属性のレ点はずして条件入力すれば、カラム重複することは有りません。


▲ ヴュー作成 その6 ▲

1)実行(左のCD重ねたようなアイコン) で指定したクエリーに従いデータ上に表示されます。

2)保存 ここで指定したクエリー保存します。保存しなくても[ファイル]−−>[閉じる] か [×]でも変更していれば保存聞いてきます。

 

注)実際にデータソース使用するときも同様ですが、

データ表示欄で各カラムの値修正できます。ODBC設定の[オプション]で読取専用にしても修正できてしまいます。もろRDBの中身変わってしまいます。

便利だとは思わないで下さい。普通RDB用のデータ入力するフォーム等では、整合性やコードの妥当正等顧慮したプログラムで入力しているはずです(データチェックしているはずです)。ここで修正するとせっかくチェックしたデータがむちゃくちゃになって後で取り返しのつかないことになります。たぶん。すごく痛い目見ますよ、きっと。

このデータ修正は出来てもかまいませんが、初期値は読取専用(修正不可)にしてほしいものです。もろ「小さな親切大きなおせは」の仕様では、と思うのは私だけなのかな?


▲ ヴュー作成 その7 ▲

クエリー名 新規作成で保存選んだときや、保存せずに終了しようとしたときに、作成したクエリー保存するためのクエリー名入力します。

 

クエリー作成今のところ、終了時に良く落ちます(当方は)。あまり使うなと言うことなのかな?と、勘ぐってしまいたくなるほどです。




- データソースの使用 -
▲ データソース選択 ▲

1)[表示]−−>[データソース]かF4キー(ショートカット)でデータソースよりデータ抜き出処理実行します。


▲ データ抜き出し その1 ▲

1)データソース 上記で作成したデータソース選択します

  クエリー 上記で作成したクエリーの一覧

  テーブル 接続されているRDBが持っている、てーぶるとクエリー(ヴュー)の一覧

2)Calcのシート 上のエクスプローラもどきから、クエリー、テーブル等ドラッグ&ドロップで、データ取り出せます。

3)シートの表示方法 [浮動](ピン刺さっていない)だと、先頭10行ぐらい隠れてしまいます。1行目から貼り付けたいときは[固定](ピンが刺さった状態)にしてください。

4)データ表示欄 選択したクエリー又はテーブルの中身表示されます

注)データソースの作成でも書きましたが、

データ表示欄で各カラムの値修正できます。ODBC設定の[オプション]で読取専用にしても修正できてしまいます。もろRDBの中身変わってしまいます。

便利だとは思わないで下さい。以下同文

1)のテーブルのところで右クリックすると、RDB側(サーバーにある)テーブル、ビュー(クエリー)等作成できるようです。SQL文も実行できます(Inserta とか Update とか・・・)Calcでやる必要が有るのかとと、同上(上の赤字)という問題有ります。テスト環境としては面白いですが本番用となるとちょとこわい。


▲ データ抜き出し その2 ▲

1)[表示]−−>[データソース]かF4キー(ショートカット)でデータソースよりデータソース処理終了します。

4)データ表示欄で行ごとに選択して(クリックや、Shift+クリックやCtrl+クリックで抜き出すデータ選択できます。反転表示したものドラッグして4)のエリアでドロップします。が、データの修正可能状態ですので、間違って値変えてしまう可能性有りますのであまりお勧めしません。選択したいなら、クエリーや、RDB側で抜き出す(クエリー等)で処理するか、Calcのシートに貼り付け後、行削除や、列削除で処理するようにしたほうが良いのでは。


▲ データ抜き出し その3 ▲

データソース処理から抜け出して(F4キーや[表示]−−>[データソース])普通のシート処理に戻った所です。

後は普通に処理してください。

データソース使用してOpenOffice側でクエリー作成したときに、結果が大きくなると( 当方では、60欄*7,000行程度で)Calc自体落ちます。10欄*7,000行程度では落ちません。Access側で作成した同様のクエリー(60カラ ム*7000件)からは問題なく読み込めます。ともかくでっかい時(どの位からでかいのかは不明)は元のRDBでクエリー作成しといてください。

リストボックスやコンボボックスのソースとして指定できますが、ウィザードみたいなところで指定できるのは、RDB側のテーブルとして認識できる ものだけなので、今のところデータソースで作成したクエリーは使用できません。

データパイロット(ピボットテーブルというかクロス集計というのか)のデータソースとしても使えますが、カラム選択で出てくるカラム名はデータソースの一番上より持ってきているみたいです。結果はちゃんと選択しているデータソースより持ってきています。



ODBCのデータソースはどのドライバーを使って、どのRDBをもってくるかを指定して、CalcのデータソースはどのODBCデータソースを使って、どのテーブル(又はクエリー・ビュー)を持ってくるかを決めます。

RDB側のテーブルとクエリーからデータを持ってきてCalcで整形・出力、てな形が今のところよさそうです。Calcのクエリー使っても良いですが、少し複雑なSQL文になると何か荷が重そうな感じがします(ハングアップしたり落っこちたり)。今のところRDBとCalcのデータの橋渡し程度の処理形態がよさそうです。

2002-07-8:この文書は、翁さんより提供されました

[ Home ] - [ Back ] - [ Top ]


(C) 2002 OpenOffice.org Users Group Japan. All Rights Reserved
当サイトの閲覧や、記載事項の実行によって何らかの損害を被っても、OpenOffice.org 日本ユーザー会は免責されるものとします。