在运行时创建数据库并在运行时将其注册为DSN

时间:2010-11-09 19:01:52

标签: ms-access odbc dsn

我正在尝试在运行时创建一个ACCESS数据库,并使用以下代码在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);

第一个语句返回1,表示创建了DB,但第二个返回0表示无法在ODBC.ini中注册为DataSourceName。任何人都可以告诉我为什么会发生这种情况,因为路径和名称之类的东西都是正确的。

1 个答案:

答案 0 :(得分: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
相关问题