リンクテーブルとパススルークエリ
ACCESS で PostgreSQL を使う上でもっともお手軽なのがリンクテーブルです。
一旦リンクテーブルとして PostgreSQL のテーブルにリンクしてしまえば、
あとは普通の ACCESS のテーブルと同じように操作できます。
(ただし、完全に同じではないし、よくわからないエラーになることもありますが...)
まぁ、手っ取り早い、ということではこれが一番簡単でしょう。
とりあえずファイルDSNは作ってありますか?作ってない場合は こちら を参照してください。
リンクテーブルを作る 
それではODBCリンクテーブルを作って見ましょう。
- では、まず空のACCESSデータベースを作成します。名前は何でもいいです。
- 作ったら、ファイル - 外部データの取り込み - テーブルのリンク の順でメニューを選択します。
- そうすると リンク ダイアログが開くので、ファイルの種類に ODBC Database(一番下)を選択します。
- 次にデータソースの選択ダイアログが開くので、そこから使用するデータソース(TEST)を選択します。
- データソースの設定に問題がなければ テーブルのリンク ダイアログに変わり、 PostgreSQL 側のテーブルが一覧表示されるので、必要なテーブル(zaiko)を選択して OK をします。
- これでテーブルがリンクされ、アクセス可能となります。
設定によってはユニークなキーを決めてくれ、と聞いてくるかもしれません。
この場合で設定しないと読み取り専用となります。(Recognise Unique Indexes がOFFの場合)
テーブルがリンクされれば準備は完了です。あとは ACCESS のテーブルと同じように扱えます。
どうですか、zaiko テーブルが地球アイコン!?になってリンクされているはずです。
開いて中を見てみましょう。データが見えますか?
エラーが出る場合はなんか原因があるはずですので、いろいろ調べてみてください(^^;;;
さて、これで PostgreSQL のテーブルを ACCESS から自由に扱うことができるようになりました。
ただし、一度にたくさんのレコードをデータシートビューで操作したりするとエラーになったり、
最悪落ちたりすることもあるようなので、注意した方が良いかも知れません(^^^;;;
パススルークエリを作る 
パススルークエリは、ODBC ドライバ経由で直接 PostgreSQL データベースへクエリを発行します。
また、パススルークエリでは、通常のクエリと違って全て SQL文 でクエリを書く必要があり、
この際に書く SQL は ACCESS の SQL ではなく、PostgreSQL の SQL を書かなければなりません。
基本的な構文は同じですが、ワイルドカードなどに違いがあるので注意が必要です。
ですので、SQL が苦手な方はリンクテーブルをレコードソースにした普通のクエリの方が扱いやすいと思います。
では、次にパススルークエリを作ってみます。
- ACCESS データベースを開き、メニューから 挿入 - クエリ を選択します。
- そうすると クエリの新規作成 ダイアログが開くので、とりあえず デザインビュー を選びます。
- 次に テーブルの表示 ダイアログが出るので、ここでは一旦 閉じる を選択しダイアログを閉じます。
- そしたらメニューから クエリ - SQL - パススルー を選ぶとデザインビューが真っ白になります。
- さらにメニューから 表示 - プロパティ を選びプロパティ画面を表示させます。 すでに表示されていた場合はそのまま表示させておいてください。
- プロパティの中に ODBC接続文字列 というのがあるのでその欄をクリックし、 右側に出てくる「...」ボタンをクリックすると、ファイルDSN の選択ダイアログが開きます。
- そしたら必要な ファイルDSN を選択してやると ODBC文字列 が勝手に設定されます。 尚、このとき 接続文字列にパスワードを含めますか? と聞かれるかもしれないので、必要に応じて答えます。
- 後は、真っ白な部分に、有効なSQL文字列を記入します。例えば、
SELECT * FROM zaiko ;
などと入力してみてください。
- 最後にクエリを実行すれば ODBC経由 で PostgreSQL データベースから返されたデータが表示されます。
パススルークエリは ODBCワークスペース を使うより扱いが楽なので、VBA でもいい感じかも知れません。
ただし、パススルークエリを QueryDef から実行しても RecordsAffected プロパティを参照できないので、
結果を確認したい場合などは ODBCワークスペース の方が良いでしょう。
|