4

実行時に ACCESS DB を作成しようとしていますが、登録は次のコードを使用して ODBC.ini の DSN として行われます。

BOOL fCreated;  
fCreated = SQLConfigDataSource(NULL,ODBC_ADD_DSN,
           "Microsoft Access Driver (*.mdb)",
           "CREATE_DB=.\\ATest.mdb General\0" );
printf("Database created : %d\n",fCreated);

BOOL ReturnResult = SQLConfigDataSource (NULL, ODBC_CONFIG_DSN, 
           "Microsoft Access Driver (*.mdb)", 
           "DSN=TESTDSN_DSN\00DBQ=.\\ATest.mdb\ \
00FIL=MSAccess\00Description=TESTDSN_database\00UID=\00");

printf("Database registered : %d\n",ReturnResult);

最初のステートメントは、DB が作成されたことを示す 1 を返しますが、2 番目のステートメントは、ODBC.ini に DataSourceName として登録できなかったことを示す 0 を返します。パスや名前などすべてが正しいため、なぜこれが起こっているのか教えてください。

4

1 に答える 1

1

質問へのコメントですでに言及されていましたが、さらに情報を提供したいと思いました。

一部のマシンでコードによって DSN を作成する代わりに、データベースにアクセスするクライアントで (プログラムによって) DSN を使用せずにテーブルをリンクする方がおそらく簡単です。

クライアントも MS Access の場合は、次のようにして実行できますDoCmd.TransferDatabase

Dim SourceDB As String
Dim SourceTable As String
Dim LocalTable As String

'path to the database that contains the original table
SourceDB = "C:\Your_Database.mdb" 

'name of the original table in the source database
SourceTable = "Original_Table"

'name of the linked table in the local database
LocalTable = "Linked_Table"                    

DoCmd.TransferDatabase acLink, "Microsoft Access", SourceDB, acTable, SourceTable, LocalTable
于 2011-12-01T22:58:13.543 に答える