检查访问表是否存在

新手上路,请多包涵

我想记录网站访问的 IP、日期时间、客户端和引用者数据以访问数据库,但我计划将每天的日志数据记录在单独的表中,例如 06.06.2010 的示例日志将记录在 2010_06_06 命名表中。更改日期后,我将创建一个名为 2010_06_07 的表。但问题是这个表是否已经创建。

关于如何检查 Access 中是否存在表的任何建议?

原文由 HasanG 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 659
2 个回答

您可以使用隐藏的系统表 MSysObjects 来检查表是否存在:

 If Not IsNull(DlookUp("Name","MSysObjects","Name='TableName'")) Then
    'Table Exists

但是,我同意每天创建一个新表是一个非常糟糕的主意。

编辑:我应该补充一点,表的类型为 1、4 或 6,并且不同类型的其他对象可能与表具有相同的名称,所以最好说:

 If Not IsNull(DlookUp("Name","MSysObjects","Name='TableName' And Type In (1,4,6)")) Then
    'Table Exists

但是,无法创建与查询同名的表,因此如果需要查找来测试名称,最好在 Type 列表中添加 5,即查询。

原文由 Fionnuala 发布,翻译遵循 CC BY-SA 2.5 许可协议

这是另一种解决方案,比遍历所有表要快一些。

 Public Function doesTableExist(strTableName As String) As Boolean
    Dim db As DAO.Database
    Dim td As DAO.TableDef
    Set db = CurrentDb
    On Error Resume Next
    Set td = db.TableDefs(strTableName)
    doesTableExist = (Err.Number = 0)
    Err.Clear
End Function

原文由 KevenDenen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进