我有一个Access数据库连接(链接表)到Oracle数据库。我写了一些Select查询。每次运行它时,我都会得到一个“Oracle ODBC Driver Connect”输入框。有没有办法写一个vba宏来输入用户名和密码(自动填充)和输入确定。尝试在此Access数据库中为宏设置自动运行。
任何帮助表示赞赏。
正如所指出的,当您链接表时,您可以选择将密码保存在这些表链接中。如果您错过了这一步,那么您将获得该ODBC提示。
这与你编写选择查询有关。简单的事情是尝试单击您在此类查询中使用的链接表之一。您可以获得ODBC提示,也可以不获得。
如果你这样做,那么你当然会在编写查询时得到这样的提示。您希望首先使表链接在没有ODBC提示的情况下工作,然后根据链接表编写这些查询。
所以首先让链接表工作。忘了,不要担心你写的问题。直到简单地单击(打开)链接表并且不会抛出ODBC提示符,那么您正在查看错误的问题。
一旦您的链接表在没有提示的情况下工作,那么您的查询也可以在没有提示的情况下工作。
所以你有两个选择来解决这个问题。
简单地重新链接表格,并确保在重新链接期间选择[x]复选框以保存密码。
您错过并想要选择的提示是这一个:
现在,如果您的表已经链接并且您运行链接表管理器,那么您将不再获得此提示。所以你必须删除表链接,然后重新创建。
当然,删除表链接通常会导致链接的表名被更改,这可能很痛苦,尤其是如果您有很多链接表。只有你可以判断什么是少工作。如果您只有几个表,那么只需删除它们,然后使用外部数据 - >然后在导入和链接部分中,选择ODBC并添加表,但请记住选择(选中)上面的保存密码框为超过你错过的。
现在,大多数人随着时间的推移结束了一些表重新链接代码VBA。因此,如果您已经成功使用了重新链接代码,那么只需使用您在该代码中使用的连接字符串中包含的用户/密码重新运行该代码即可。当然,如果您没有这样的代码,那么Access中的上述链接表管理器是一个免代码解决方案,显然是您的最佳选择和行动方案。
因此,您可以找到一些表重新链接代码,以便为您强制(保存)表链接中的用户/ ID。
但是,如果您不想删除+重新创建所有这些表,并且您还没有设置一些重新链接代码,那么还有另一个(第三)选择。
在您的应用程序启动代码中,简单执行一次性登录。如果执行此操作,则在使用链接表时不会显示ODBC提示,因此当您尝试基于这些链接表运行/构建/使用查询时也不会出现。
执行一次性登录的代码如下所示:
Function TestLogin(strCon As String) As Boolean
On Error GoTo TestError
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Set dbs = CurrentDb()
Set qdf = dbs.CreateQueryDef("")
qdf.connect = strCon
qdf.ReturnsRecords = False
'Any VALID SQL statement that runs on server will work below.
' this does assume user has enough rights to query built in
' system tables
qdf.sql = "SELECT 1 "
qdf.Execute
TestLogin = True
Exit Function
TestError:
TestLogin = False
Exit Function
End Function
上面的代码在启动应用程序时运行一次将因此在您单击链接表时消除ODBC提示。当然,一旦解决了链接表的问题,那么当然创建或单击您的查询或运行这些查询现在也可以在没有提示的情况下工作。
您无法自动填写该提示,您必须首先采取正确的步骤以防止该提示出现。那么回答你的问题?
不,您无法编写代码来输入请求的提示,但如果您将表与保存的密码链接,或执行上述登录代码,则提示不会出现在第一位。