0

我如何能够Items通过 Excel vba 检查给定的表(称为)是否在特定的 Access 数据库中。

我已经通过 Excel vba 建立了从 excel 表到两个不同数据库 [A] 和 [B] 的连接,并且我的其他代码工作正常。

到目前为止,我能在网上找到的最接近的是:

If IsNull(DLookup("[Name]", "MSysObjects", "[Name]='Items'")) Then

此代码未指定我要搜索的数据库。Items有没有一种方法可以编写一条语句,仅当在数据库 [B] 中找不到表时才运行?这段代码将如何编写?

我引用数据库没有问题。我的大部分代码都是从 Excel 运行的 SQL,并且我能够在特定于每个数据库的字段中引用各种条目。我只是在寻找一行写着“如果此表在数据库中不存在,则创建一个具有名称的表”。是否有我可以编写的 SQL 字符串,甚至是 try...catch 方法?

任何帮助将不胜感激

4

1 回答 1

0

您可能可以使用该On Error技术(它有点像try...catch,除了后者在 VBA 中不存在)。例如:

On Error GoTo whoa
Set db = OpenDatabase(DBFullName) ' use the name of [A] or [B] here.
Set rs = db.OpenRecordset( *** your expression to get something from db *** )
' if you get past this line, then reading the data went OK
MsgBox "Everything is fine"
' it is possible that the above will not throw an error, but returns something "empty"
' I would put a breakpoint in the code and step through, then examine `rs`
' both for the case where the table exists, and where it doesn't
Exit Function
whoa:
MsgBox "Something went horribly wrong: error is " & Err.Description
' this is where you would go if you were not able to get the data

显然,您会为 [A] 和 [B] 都这样做以找出表存在的位置(如果有的话)。我的机器上没有访问权限,所以我无法轻松地为您测试,抱歉。

于 2013-11-14T14:55:34.117 回答