AccessでPostgreSQLを操作する方法

  1. 暫定的なメモ。

何が出来るようになるのか?
「データベースサーバーを利用することで、複数の人がデータを操作することが出来るってこと!」
しかも、PostgreSQLは無料なので設備的なコストがかからないってメリットがある。
あと、PostgreSQL8.1からは、あまり評価の高くなかった「バキューム」が自動的に行われるようになった*1
そして、早い!

まずは、PostgreSQLをインストール!

「pg_hba.conf」をおもむろに開く。(Windows版の場合はpgAdminIIIがあるので、空行でダブルクリックするとダイアログボックスが開きます)
んで、LAN内のPCからアクセスできるように次の呪文を唱える。
「host all 192.168.0.0 255.255.255.0 trust」
この呪文は、ローカルネットワークのIPアドレス192.168.0.1から192.168.0.255までのPCからの接続が許可されます。
その他必要な設定を行うこと。

PostgreSQLでデータベースを作成する

アカウント作って、データベースを作成しましょう。
PostgreSQLの8.1以降は「ユーザ名」の代わりにロールで管理することが出来ます。
良くわからんってかたは、ユーザの追加でやってれば良いんジャマイカ
http://www.postgresql.jp/document/pg811doc/html/user-manag.htmlを参照のこと

ODBCのドライバのインストール

PostgreSQLをインストールすれば自動的にDOBCが入るんですが、
http://www.postgresql.org/download/ ここからDLする事も出来ます。
取りあえずDBを作成しちゃいましょう。作成は「test」でOK。
Windows版をご利用の場合「pgAdminIII」があるので、そっからやると簡単。

ODBCの設定方法

「スタート」-「コントロールパネル」-「管理ツール」と選択していきます。
んで、「データソース(ODBC)」ってのをエグルようにダブルクリックです。
ODBCデータソースの画面が開くと思います。
ここで、「ユーザーDSN」か「システムDSN」に登録をするわけですが。自分のPCに他ユーザがいてそっちのアカウントでも利用したい! と言う場合(AdominとUserなんかで別管理している場合とかね)は、「システムDSN」に追加すると良い感じ。逆にユーザ一人だけってばあいは、「ユーザーDSN」に設定で良い感じだと思います。

  1. 「追加」ボタンをクリック。
    1. データソースの新規作成ダイアログボックスが表示されます。
  2. ダイアログボックス内から表示されているリストから、「PostgreSQL UNICODE」を選択します。
  3. 完了ボタンを選択。
  4. リストに追加されたはず。
  5. リストから追加した奴を選択し、「構成」ボタンをクリック。
  6. PostgreSQL Unicode ODBCセットアップ ダイアログボックスが表示されます。
    1. データソース名は分かり易い名前を付けましょう。
    2. SSL Modeについては「無効」にしておくと良いかも。
    3. サーバー名は自分のPCに保存してあるのならば、「localhost」をそれ以外であれば、IPアドレスを設定します。
    4. データベース名はPostgreSQLで作成したものを
    5. 規定の認証は、PostgreSQLで設定したユーザ名またはロール名を設定します。
    6. 設定できたら「テスト」ボタンをクリックしてアクセスしてみましょう。
      1. 成功すると、「Connection successful」と表示されるはず。
    7. 設定が完了したら「保存」ボタンをクリック。
  7. 他のウィンドウも閉じちゃってOK

PostgreSQLにテーブルを作成する

CREATE TABLE t_kokyaku (
  f_id serial,
  f_sei text,
  f_mei text,
  f_age int
);

-- データの挿入
INSERT INTO t_kokyaku ( f_name, f_hurigana, f_age ) VALUES ( 'yamada', 'tarou', 29);
INSERT INTO t_kokyaku ( f_name, f_hurigana, f_age ) VALUES ( 'murata', 'jirou', 25);
INSERT INTO t_kokyaku ( f_name, f_hurigana, f_age ) VALUES ( 'tamura', 'hanako', 23);
INSERT INTO t_kokyaku ( f_name, f_hurigana, f_age ) VALUES ( 'tayama', 'saburou', 32);

-- シリアルの更新
SELECT SETVAL('t_kokyaku_id_seq',max(id)) FROM t_kokyaku ;

-- 今作成したデータを表示
SELECT * FROM t_kokyaku ;

取りあえずコイツを流し込んでテストするのですYo!
pgAdmonIIIでやっちゃえば多分楽ちん。

Accessを起動してみる

Accessとの連携ですから当たり前っちゃー当たり前。
「空のデータベース」からやってみましょ。

リンクテーブル

リンクテーブルってのは、PostgreSQLサーバーにアクセスしてテーブルのレコードを引っ張り出してくれる機能。ここが今回のキモに当たります。

  1. ファイル-外部データの取り込み-テーブルのリンク と選択します。
  2. ダイアログボックスが表示されるので、まずはファイルの種類を「ODBC Database()」を選択します。
  3. そうすると、データソースダイアログボックスが開くので、使用するデータソースを選択します。
  4. ユーザ(ロール)の設定に問題がなければPostgreSQLのサーバーにあるテーブルが一覧表示されますので、必要なテーブルを選択してOK!
  5. いつものテーブルアイコンと違ったアイコンですが、ダブルクリックをすると、自動的にサーバーにアクセスしてテーブル内の情報を表示します。

取りあえずこいつを使えば何とかなるかも?

*1:あ、デフォルトではFalseになってるから手動で設定しないといけないけど