[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 メーリングリストの案内