[pgsql-jp: 36178] Re: MSAccessからのDB移行
Tsugawa
tsugawa @ just-web.co.jp
2005年 10月 18日 (火) 14:30:12 JST
津川です。
少しでも、状況が改善出来ればと思います。
苦労を乗り越えるか、新しい手法を見つけれるか?察します。
> そう思いますが、Left関数使用部分を削除しても目的は達せられる筈ですから。
最終的には、システムオブジェクトにはアクセスできないので、
必要にはなると思います。
※Accessの再インストールを推奨します。再インストールの場合は
以下は無視してください。
1.参照設定
基本的にAccessは以下の参照設定だけで動作するはずです。
Visual Basic For Applications <--Left関数
Microsoft Access 8.0 Object Library <--Docmd
Microsoft DAO 3.5 Object Library <--DAO
2.ERRORログ
サーバー側のログを見ました。
重複してテーブルをエクスポート使用とした時、
ERROR: relation "テーブル名" already exists
3.Excel2003からこの間のサンプルコードを実行してみました。
すると
ERROR: relation "msysconf" does not exist
が出ました。
これは、ExcelからAccessオブジェクトが正しく召喚?されていない為に
Docmdオブジェクトが実行できなかったためです。
以下のようにすれば、操作は完了しました。
--ExcelからAccessを操作した例です。---
Dim AC As Object
Dim DBS As DAO.Database
Dim TDF As DAO.TableDef
Dim Str_ODBC As String
'***********ODBC接文字列の作成**************************
Str_ODBC = "ODBC;"
Str_ODBC = Str_ODBC & "DRIVER={PostgreSQL};" '<--ドライバー名
Str_ODBC = Str_ODBC & "DATABASE=***DB NAME***;" '<--データーベース名
Str_ODBC = Str_ODBC & "SERVER=***SERVER NAME***;" '<--サーバー名を入力
Str_ODBC = Str_ODBC & "PORT=5432;" '<--ポートの設定
Str_ODBC = Str_ODBC & "UID=postgres;" '<--テーブル作成権限のあるユーザ
Str_ODBC = Str_ODBC & "PWD=******;" '<--パスワード
Str_ODBC = Str_ODBC & "READONLY=0;" '以降は便宜必要であれば設定してください。
Str_ODBC = Str_ODBC & "PROTOCOL=6.4;"
Str_ODBC = Str_ODBC & "FAKEOIDINDEX=0;"
Str_ODBC = Str_ODBC & "SHOWOIDCOLUMN=0;"
Str_ODBC = Str_ODBC & "ROWVERSIONING=0;"
Str_ODBC = Str_ODBC & "SHOWSYSTEMTABLES=0;"
Str_ODBC = Str_ODBC & "CONNSETTINGS="'
**********************************************
Set AC = CreateObject("Access.Application")
AC.OpenCurrentDatabase ("データベースのフルパス.mdb")
Set DBS = CurrentDb
For Each TDF In DBS.TableDefs
If Not Left(TDF.Name, 4) = "MSys" Then
AC.DoCmd.TransferDatabase acExport, "ODBC", Str_ODBC, acTable,
TDF.Name, TDF.Name, True
End If
Next TDF
AC.Quit
pgsql-jp メーリングリストの案内