excel vbaからPostgreSQLに接続できますが、その方法を忘れてしまうので、書き留めておきます。
↓参考ページ
http://www.primestaff.jp/fumitakablog/2008/06/postgresqlaccessexcel.html
VisualBasic Editor→ツール→参照設定
私のPCには、PostgreSQL ver.8.3 for win をインストールしていますが、接続ツール(ODBC?)である 「PostgreSQL OLEDB 1.0 Type Library」もインストールされるようです。
postgresへ接続するには予め、VisualBasic Editorの画面からツール→参照設定でこれを選択しておく必要があります。
サンプルプログラム
次のvbaは、postgresへ接続し、select文を発行するものです。
Sub selectPostgres() Dim gpgDB As ADODB.Connection Set gpgDB = New ADODB.Connection 'DB接続 DBNAME=EndoTest ID=postgres PASSWD="" gpgDB.Open "Provider=PostgreSQL;Data Source=localhost;location=EndoTest", _ "postgres", "" gpgDB.BeginTrans Dim pgRs As ADODB.recordSet Set pgRs = New ADODB.recordSet 'SQL発行 pgRs.Open "select teicode from data_src", gpgDB, _ adOpenStatic, adLockReadOnly '静的カーソル,読み取り専用 'レコードセットの参照 Do Until pgRs.EOF MsgBox pgRs.Fields("teicode").Value pgRs.MoveNext Loop pgRs.Close 'gpgDB.RollbackTrans gpgDB.CommitTrans gpgDB.Close End Sub
普段、perlからpostgresを利用する際、次のようにautocommit = off にしていますが、vbaでの指定方法が分かりませんでした。
BeginTrans, RollbackTrans, CommitTrans で代用するしかないのだろうか?
package Test::DBI; use strict; use base qw/DBI/; use Test::Config; my $DB = config()->DB->address; my $DB_USER = config()->DB->db_user; my $DB_PASS = config()->DB->db_pass; my $CLIENTENCODING = config()->DB->client_encoding; my $DBI_OPT = { AutoCommit => 0 }; sub connect { my $dbh = DBI->connect($DB,$DB_USER,$DB_PASS,$DBI_OPT); $dbh->do("SET CLIENT_ENCODING TO $CLIENTENCODING") or die "cannot set encoding"; return $dbh; } 1;