看似从tabledef得到错误的连接字符串

时间:2011-08-19 18:20:35

标签: ms-access odbc

使用Ms Access ...

我正在尝试将从Access连接到SQL Server数据库的用户更改为。我的Access应用程序中的启动表单通过Microsoft KB上发布的例程的Altered版本动态连接到表。在Essence中,它删除与您调用它的名称localName匹配的tabledef,调用Currentdb.CreateTableDef以使用适当的新连接字符串创建一个新的,并将其附加到CurrentDb.TableDefs集合。据我所知,它是实际联系数据库的追加函数,如果连接字符串错误则会抛出错误。

在我的情况下,我对数据库中的所有表进行了原始传递,使用旧的(标准化的 - 即我通常使用此字符串)字符串调用此例程,并且所有表都连接正常。

我正在尝试使用新的用户/密码组合在此启动表单中进行第二次传递,以便测试数据库中的不同权限。

然后我构建了一个新的连接字符串,其中包含修改后的名称和密码,目前正在逐步完成我刚才描述的功能。

我有一个变量td,它包含新创建的tabledef,我只是在将它附加到Currentdb.TableDefs集合之前

在调试器中,“立即”窗口?td.connect正确地为连接字符串提供新形成的连接字符串,?td.name给出tblConfig作为表名。

为了确保TableDef已从当前集合中正确删除,我从即时窗口中?CurrentDb.Tabledefs("tblConfig").Connect获得了奖励,并获得了一个对话框,表示该集合不包含具有该名称的成员

然后我单步过线

CurrentDb.TableDefs.Append td

现在再次从调试器立即窗口调用?CurrentDb.Tabledefs("tblConfig").Connect,响应是旧连接字符串而不是新连接字符串。

此例程中有一个OnError处于活动状态,但在单步执行期间未激活。

我能想到的唯一解释是,由于在某个时刻保存了数据库,旧的连接字符串存储在磁盘上,并且当最终追加时,追加不会在连接字符串中复制。 / p>

有没有人有更好的解释?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

我的新连接字符串的密码不正确(一个字符错误),并且当问题发生时,访问似乎不会存储新的用户名和密码。

不知何故,尽管使用旧的用户名和密码删除了旧的tabledef,但Access能够将其恢复 - 可能是缓存,我不知道 - 并使用它。显然这是有效的,因此它继续使用该字符串而不是新字符串。

似乎因为旧字符串工作,它没有麻烦抛出错误,所以我现在连接到具有服务器登录的表,该登录没有我预期的相同权限。