【问题标题】:ODBC Driver Connect auto fillODBC Driver Connect 自动填充
【发布时间】:2019-03-15 20:24:42
【问题描述】:

我有一个连接到 Oracle 数据库的 Access 数据库(链接表)。 我写了一些选择查询。每次我运行它时,我都会得到一个“Oracle ODBC Driver Connect”输入框。 有没有办法编写一个 vba 宏来输入用户名和密码(自动填充)并输入 Ok。 正在尝试为此 Access db 中的宏设置自动运行。

感谢任何帮助。

【问题讨论】:

  • 当您链接表格时(假设您已链接),您是否保存了密码? -- 查询是使用链接表的 Access 查询,还是 Pass-Through 查询?
  • 您可以在代码中执行单独的登录,然后再触摸或使用任何链接表。但是,在我发布此类代码之前,对于一般应用程序,您仍然会遇到此提示 + 登录问题。因此,您应该重新链接表格并检查保存密码问题,否则此问题不仅会在您尝试运行的 VBA 代码中持续存在,而且会在一般应用程序中出现。
  • @Andre 我创建了一个引用 Oracle db 的 DSN,以创建链接表。不,我没有在任何地方保存密码,我不记得有保存它的选项。是的,我正在运行的查询是一个选择查询,从链接表中选择记录。
  • @AlbertD.Kallal,抱歉我听不懂。
  • 查看我的答案 - 我举了一个登录代码概念的示例,但实际上,最简单的方法是重新链接表格并确保选中复选框以保存密码。

标签: ms-access odbc driver connect autofill


【解决方案1】:

正如所指出的,当您链接表格时,您可以选择将密码保存在这些表格链接中。如果你错过了这一步,那么你会得到那个 ODBC 提示符。

这与您编写选择查询无关。简单的事情是尝试单击您在此类查询中使用的链接表之一。要么得到 ODBC 提示,要么没有。

如果你这样做了,那么当你写一个查询时,你当然会得到这样的提示。您想首先让表链接在没有 ODBC 提示的情况下工作,然后根据链接的表编写这些查询。

所以首先让链接表工作。忘记并且不要担心您正在编写的查询。直到一个简单的点击(打开)一个链接表工作并且没有抛出 ODBC 提示,那么你正在寻找错误的问题。

一旦您的链接表在没有提示的情况下工作,那么您的查询也将在没有提示的情况下工作。

所以你有两个选择来解决这个问题。

简单地重新链接您的表格,并确保在重新链接期间选中 [x] 复选框以保存密码。

你错过并想选择的提示是这个:

现在,如果您的表已经链接并且您运行链接表管理器,您将不会再收到此提示。所以你必须删除表链接,然后重新创建。

当然,删除表链接通常会导致链接表名称被更改,这可能会很痛苦,尤其是当您有很多链接表时。只有你可以做出这样的判断,什么是更少的工作。如果您只有几张表,则只需删除它们,并使用外部数据 -> 然后在导入和链接部分中,选择 ODBC,您可以添加表,但请记住选择(选中)上面的保存密码框为根据您错过的上述内容。

现在,随着时间的推移,大多数人都会使用一些表格重新链接代码 VBA。因此,如果您的 suc re-link 代码已经可以使用并且方便,那么只需使用您在该代码中使用的连接字符串中包含的用户/密码重新运行该代码。当然,如果你没有这样的代码,那么上面的 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 提示。当然,一旦链接表的问题得到解决,那么当然创建或单击查询或运行这些查询现在也可以在没有提示的情况下工作。

您不能自动填充该提示,您必须首先采取正确的步骤来防止该提示出现。所以回答你的问题?

不,你不能编写代码来输入请求的提示,但是如果你用保存的密码链接你的表,或者执行上面的登录代码,提示将不会首先出现。

【讨论】:

    猜你喜欢
    • 2022-06-29
    • 2015-08-08
    • 2016-04-19
    • 2012-04-02
    • 1970-01-01
    • 2016-02-20
    • 2015-07-04
    • 2018-12-30
    • 1970-01-01
    相关资源
    最近更新 更多