Question: I want to log web site visits' IP, datetime, client and refferer data to access database but I'm planning to log every days log data in separate tables in example logs for 06.06.2010 will be logged in 2010\_06\_06 named table. When date is changed I'll create a table named 2010\_06\_07. But the problem is if this table is already created.

Any suggestions how to check if table exists in Access?

Answer: 
Here's another solution, will be a bit faster than looping over all of the tables.

```
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

```
I have found querying system tables or tabledefs to be unreliable and introduce unpredictable behaviour in scripts where tables get regularly created and dropped.

Based on my results, my hypothesis is that these tables aren't necessarily updated at the exact instant a `CREATE` or `DROP` is executed, or that concurrency issues are preventing me from getting an accurate result.

I've found the following method to be more reliable:

```vb
Public Function TableExists(theDatabase As Access.Application, _
    tableName As String) As Boolean

    ' Presume that table does not exist.
    TableExists = False

    ' Define iterator to query the object model.
    Dim iTable As Integer

    ' Loop through object catalogue and compare with search term.
    For iTable = 0 To theDatabase.CurrentData.AllTables.Count - 1
        If theDatabase.CurrentData.AllTables(iTable).Name = tableName Then
            TableExists = True
            Exit Function
        End If
    Next iTable

End Function

```

There should be no runtime issue iterating unless there is an staggeringly enormous collection of tables.