2011-08-31 124 views
0

我正在创建一个链接到SQL Server的Access项目。而不是为SQL Server使用Windows身份验证,我想使用特定于应用程序的用户名/密码并使用登录表单自己对用户进行身份验证。原因是其他应用程序可能会从Windows身份验证不是选项的上下文连接到此数据库(例如,FileMaker Server)。在MS Access中使用VBA进行LDAP身份验证

我发现无论从哪个角度或从另一个角度来讨论这个问题的无数讨论,但没有任何实际上使我能够实施解决方案。我没有太多的VBA或LDAP经验,但我知道这一定是可能的。

所以,我想要做的是:

  1. 要求用户输入用户名和密码,当他们打开数据库。
  2. 使用该用户名和密码对我们的LDAP服务器进行身份验证 。
  3. 如果通过则继续,否则失败。

有人可以勾画出这是如何工作或指向我的资源,描述这个?

+0

你已经试过了什么?你能告诉我们你的代码吗? – JMax

+0

我还没有尝试过任何东西。在我开始编写代码之前,我仍然有工作要做。我真的很想找到一个正确的方向。一旦我理解了如何完成这个概要,那么我可以混淆实现并在稍后提出具体问题。 – jasongetsdown

+0

当Windows身份验证不可用时,通常的做法是使用SQL Server身份验证。这意味着任何试图使用数据库的应用程序都将使用相同的身份验证权限,所以在我看来它可以解决您的问题。你有什么理由拒绝这种方式? –

回答

1

完成此操作的一种方法是创建一个VBA过程,该过程遍历所有链接的表并更改连接字符串以从登录表单中嵌入用户名和密码。

您可以通过进入调试窗口,键入此获得现有的ODBC连接表的语法:

? CurrentDb().TableDefs("My Table Name").Connect 

这应该给你同样的东西:

ODBC; DRIVER = SQL服务器; SERVER = MYSQLSERVER001; UID = JPARKER; PWD = Pizza123; APP = 2007 Microsoft Office system; DATABASE = MyDatabaseName

因此,您的登录表单将捕获用户的用户名和密码,然后将它们存储为变量并用于建立一个新的连接字符串。然后遍历更新连接属性的tabledefs集合。发生得非常快。

+0

谢谢吉姆!这将避免需要处理LDAP。 – jasongetsdown

+0

我将不得不使用SQL Server身份验证权限? – jasongetsdown

+0

请注意,密码现在可以在连接字符串中显示给任何可以将数据库置回零售版Access并运行五行VBA代码的人。 –

相关问题