【发布时间】:2020-11-26 10:38:39
【问题描述】:
我想编写一些自定义代码以编程方式执行“链接表管理器”操作。我有 MS-Access 数据库,它目前正在从 Excel、MS-Access 和 SQL 服务器引用外部数据。
在我的 MS-Access 数据库上执行宏之前,我想重新链接外部数据源或提供数据源的新位置,以防数据源位置发生变化。
我在 MS-Access 数据库中有一个表,它链接到外部 SQL 数据源(测试数据库)。现在我希望它链接到生产数据库。我尝试了以下代码,但它抛出了一个 COM 异常,错误描述为“ODBC--连接到 'EmployeeConnectionForSQL' 失败。”
public void performLinkTableMangerOperationForSQL()
{
string CurrentDatabasePath = @"D:\UDTDatabase\InternalDatabase.accdb";
Microsoft.Office.Interop.Access.Dao.DBEngine DAO = new Microsoft.Office.Interop.Access.Dao.DBEngine();
Microsoft.Office.Interop.Access.Dao.Database db;
Microsoft.Office.Interop.Access.Dao.TableDefs dt;
db = DAO.OpenDatabase(CurrentDatabasePath);
dt = db.TableDefs;
// Refreshing link for Sql server external table with DSN.
string sqlSource = @"DATABASE=Employee;";
string DSNName = "EmployeeConnectionForSQL;";
string sqlNewConnectionString = @"ODBC;FileDSN=" + DSNName + sqlSource;
foreach (Microsoft.Office.Interop.Access.Dao.TableDef table in dt)
{
string name = table.Name;
if (table.Name == "dbo_Employees")
{
table.Connect = sqlNewConnectionString;
table.RefreshLink();
}
}
db.Close();
}
【问题讨论】:
标签: c# sql-server ms-access dao