Создание базы данных во время выполнения и регистрация ее как DSN во время выполнения - PullRequest
4 голосов
/ 09 ноября 2010

Я пытаюсь создать БД ACCESS во время выполнения, и регистр как DSN в ODBC.ini, используя следующий код:

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);

Первый оператор возвращает 1, показывая, что БД создана, новторой возвращает 0, указывая, что он не может быть зарегистрирован как DataSourceName в ODBC.ini.Может кто-нибудь, пожалуйста, скажите мне, почему это происходит, потому что все, как путь и имя, верны.

1 Ответ

1 голос
/ 02 декабря 2011

Это уже упоминалось в комментариях к вопросу, но я хотел предоставить ответ с дополнительной информацией:

Вместо создания 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
...