Solved

Count the fields in a table

Posted on 2010-11-30
4
441 Views
Last Modified: 2013-11-27
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?
0
Comment
Question by:AaronGreene1906
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
4 Comments
 
LVL 10

Expert Comment

by:VTKegan
ID: 34240508
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
 
LVL 10

Expert Comment

by:VTKegan
ID: 34240812
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
 
LVL 10

Accepted Solution

by:
VTKegan earned 500 total points
ID: 34240829
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
 
LVL 6

Expert Comment

by:nathaniel
ID: 34242464
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

Featured Post

Ransomware: The New Cyber Threat & How to Stop It

This infographic explains ransomware, type of malware that blocks access to your files or your systems and holds them hostage until a ransom is paid. It also examines the different types of ransomware and explains what you can do to thwart this sinister online threat.  

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It’s been over a month into 2017, and there is already a sophisticated Gmail phishing email making it rounds. New techniques and tactics, have given hackers a way to authentically impersonate your contacts.How it Works The attack works by targeti…
As tax season makes its return, so does the increase in cyber crime and tax refund phishing that comes with it
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

632 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question