2010-11-09 98 views
4

我想在運行時創建的Access數據庫和註冊是使用下面的代碼在ODBC.INI一個DSN註冊爲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); 

的第一個語句返回1,表示數據庫已創建,但第二個返回0,表示它不能在ODBC.ini中註冊爲DataSourceName。任何人都可以告訴我爲什麼會發生這種情況,因爲路徑和名稱都是正確的。

+0

嘗試調用SQLInstallerError,看看是什麼錯誤。 – 2010-11-09 19:23:50

+1

在第一次調用中不使用ODBC_ADD_SYS_DSN,或者第二次使用ODBC_CONFIG_DSN,即它們不應該匹配嗎? – 2010-11-09 19:29:46

+0

我嘗試過使用ODBC_CONFIG_DSN ....但仍不起作用 – Omayr 2010-11-09 19:31:47

回答

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