我正在尝试在运行时创建一个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。任何人都可以告诉我为什么会发生这种情况,因为路径和名称之类的东西都是正确的。
答案 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