在 MS Access/VBA 中使用 ADO 连接对话框

Posted

技术标签:

【中文标题】在 MS Access/VBA 中使用 ADO 连接对话框【英文标题】:Using ADO connection dialog in MS Access/VBA 【发布时间】:2008-12-09 09:51:22 【问题描述】:

我想在 MS Access 中使用标准的 ADO 连接字符串对话框。 我该怎么做?

【问题讨论】:

【参考方案1】:

如果尚未选择,请在“参考”对话框中检查以下参考:

Microsoft OLE DB 服务组件 1.0 类型库

Microsoft ActiveX 数据对象 2.7 库

以下代码将打开对话框并将连接对象设置为数据链接属性对话框中提供的参数:

Dim dl As MSDASC.DataLinks
Dim cn As ADODB.Connection

Set dl = New MSDASC.DataLinks
Set cn = New ADODB.Connection

Set cn = dl.PromptNew
cn.Open

然后您可以打开带有连接的 ADODB 记录集或检索有关连接的属性并根据需要继续操作。

【讨论】:

IIRC 在调用 PromptNew 之前您需要一个 On Error... 语句并测试其返回值是否为空,这是检测该用户已取消对话的唯一方法。【参考方案2】:

除了按照 John Mo 所说的 prerequisites,以下函数将返回一个完整的 ADO 连接字符串。它可以使用默认的“m_connectionString”值启动。这样的值可以存储在“连接表”中。

Function connectToDababase(Optional m_connectionString As String) As String
Dim dl As MSDASC.DataLinks
Dim cn As ADODB.Connection

Set dl = New MSDASC.DataLinks
Set cn = New ADODB.Connection

If IsMissing(m_connectionString) Then
    Set cn = dl.PromptNew
Else
    cn.ConnectionString = m_connectionString
    dl.PromptEdit cn
End If

connectToDababase = cn.ConnectionString
End Function

【讨论】:

您的可选参数 m_connectionString 需要声明为 Variant 才能使用 IsMissing() 测试它的缺失。如果声明为字符串并被调用者省略,则 m_connectionString 的值将是空字符串,而不是“缺失”。 你是对的!但我没有检测到它,因为结果是一样的:连接对话框以空白值打开...【参考方案3】:

见How to bind Microsoft Access forms to ADO recordsets

【讨论】:

这个链接很有趣,但是......它没有回答问题。

以上是关于在 MS Access/VBA 中使用 ADO 连接对话框的主要内容,如果未能解决你的问题,请参考以下文章

MS Access VBA下载附件Mkdir路径不存在

使用 MS Access VBA 在 .xlsx 文件中插入一行...如何避免损坏文件?

MS Access - VBA 中报告的参数

MS Outlook 干扰 Access vba 程序

MS Access vba中的分组字段

如何在 ms-access VBA 中检索表的 odbc 数据库名称