Count the fields in a table

I am trying to document an existing application, and I want to determine the number of fields in each table.  Is there a way to do this with the TableDefs collection?
Aaron GreeneProgrammerAsked:
Who is Participating?
 
VTKeganConnect With a Mentor Commented:
And after putting some thought into it.  I didn't need the For loop to count.  It is already a property of Fields.

This is a simpler version of the code.
Sub PrintTableCounts()

    Dim Tbl As Object
    For Each Tbl In CurrentDb.TableDefs
        If Not Tbl.Name Like "*Sys*" Then
            Debug.Print Tbl.Name & ": " & Tbl.Fields.Count & " Fields"
        End If
    Next
    Set Tbl = Nothing

End Sub

Open in new window

0
 
VTKeganCommented:
This will print to the immediate window the number of records in each table excluding System Tables.
Sub PrintTableCounts()

    Dim Tbl As Object
    Dim rst As DAO.Recordset
    For Each Tbl In CurrentDb.TableDefs
        If Not Tbl.Name Like "*Sys*" Then
            Set rst = CurrentDb.OpenRecordset("Select * From " & Tbl.Name)
            If Not rst.EOF Then
                rst.MoveLast
                Debug.Print Tbl.Name & ":" & rst.RecordCount & "Records"
            Else
                Debug.Print Tbl.Name & ": 0 Records"
            End If
        End If
    Next
    Set Tbl = Nothing
    Set rst = Nothing
End Sub

Open in new window

0
 
VTKeganCommented:
After re-reading the question is looks like you are looking for fields, not records.  My mistake.

Use this code below
Sub PrintTableCounts()

    Dim Tbl As Object
    Dim Counter As Integer
    For Each Tbl In CurrentDb.TableDefs
        Counter = 0
        If Not Tbl.Name Like "*Sys*" Then
            For Each Field In Tbl.Fields
                Counter = Counter + 1
            Next
            Debug.Print Tbl.Name & ": " & Counter & " Fields"
        End If
    Next
    Set Tbl = Nothing

End Sub

Open in new window

0
 
nathanielIT ConsultantCommented:
here is a function if you want to know the number/count of fields in a given table:

Function fieldCount(vTable)
    dim db as Database
    dim tdf as TableDef
    set db  = CurrentDb
    set tdf = db.TableDefs(vTable)
    fieldCount = tdf.Fields.Count
End Function

hope that helps
0
All Courses

From novice to tech pro — start learning today.