gpt4 book ai didi

security - 使用 VBA 打开由 mdw 文件保护的 ms-access 数据库时模拟 SHIFT 键按下?

转载 作者:行者123 更新时间:2023-12-04 04:56:39 24 4
gpt4 key购买 nike

我想通过 *.mdb 的目录递归运行文件并搜索它们以查看哪些具有特定的链接表。

这些文件使用多个 *.mdw 保护。文件。我没有写任何一个,但我是他们的维护者。

我有 found a way to do this ,但互动性太强;我需要它是非交互式的;因为其中一些*.mdb s 我正在搜索使用 Autoexec 宏。

据我了解,如果在打开宏时按住 SHIFT 键,则可以避免执行 Autoexec 宏;但是我使用 command linemy macro打开这些文件,似乎没有办法按住 shift 键。

我找到了另一个例子,which does allow you to hold down the shift key to avoid the Autoexec macro (请参阅打开数据库时绕过启动设置),但是 允许您使用 *.mdw 解锁数据库文件,因为 OpenCurrentDatabase()方法没有 *.mdw 的参数文件

最佳答案

如果您的目标只是检查 db 文件是否包含特定的链接表,您可以使用 ADO OpenSchema方法。使用这种方法,您无需在 Access 应用程序 session 中打开 db 文件,因此 AutoExec 宏不会运行。

下面是一个使用后期绑定(bind)的例子。如果您更喜欢早期绑定(bind),我会留下评论说明。如果您的 Access 版本早于 2007,请更改提供程序。

由于您使用的是 Access 用户级安全性,因此您还必须调整连接字符串以包含 MDW 的路径并提供 Access 安全性用户名和密码。这是来自 ConnectionStrings.com 的示例连接字符串(使用 Jet 4 提供程序) .为了便于阅读,我在分号上拆分了单行字符串:

Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\mydatabase.mdb;
Jet OLEDB:System Database=system.mdw;
User ID=myUsername;
Password=myPassword;

Public Function HasLinkedTable(ByVal pDb As String, _
ByVal pTable As String) As Boolean

Const adSchemaTables = 20&
Dim cn As Object ' ADODB.Connection
Dim rs As Object ' ADODB.Recordset
Dim strConnect As String
Dim blnReturn As Boolean

strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & pDb & ";"
'Set cn = New ADODB.Connection
Set cn = CreateObject("ADODB.Connection")
cn.Open strConnect

Set rs = cn.OpenSchema(adSchemaTables)
With rs
Do While Not .EOF
If !TABLE_NAME = pTable And !TABLE_TYPE = "LINK" Then
'Debug.Print !TABLE_NAME, !TABLE_TYPE
blnReturn = True
Exit Do
End If
.MoveNext
Loop
.Close
End With
cn.Close
Set cn = Nothing
HasLinkedTable = blnReturn
End Function

关于security - 使用 VBA 打开由 mdw 文件保护的 ms-access 数据库时模拟 SHIFT 键按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16674472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com