正如所指出的,当您链接表格时,您可以选择将密码保存在这些表格链接中。如果你错过了这一步,那么你会得到那个 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 提示。当然,一旦链接表的问题得到解决,那么当然创建或单击查询或运行这些查询现在也可以在没有提示的情况下工作。
您不能自动填充该提示,您必须首先采取正确的步骤来防止该提示出现。所以回答你的问题?
不,你不能编写代码来输入请求的提示,但是如果你用保存的密码链接你的表,或者执行上面的登录代码,提示将不会首先出现。