[AccessD] Table size

Gustav Brock Gustav at cactus.dk
Fri Oct 2 01:47:18 CDT 2009


Hi Jim

Okay, okay, so everyone here have lost their arms!
Anyway, skipping a sip at the pub, here is how - leaving the "nice" things to someone else.

<code>
Public Sub ListTableSize()

  Dim dbs As DAO.Database
  Dim tdf As DAO.TableDef
  
  Dim strName As String
  Dim strFile As String
  Dim strPath As String
  Dim lngBase As Long
  Dim lngSize As Long
    
  Set dbs = CurrentDb
  strName = dbs.Name
  strPath = Left(strName, Len(strName) - Len(Dir(strName)))
  
  ' Create empty database for Jim to measure the base file size.
  strFile = strPath & "base" & ".mdt"
  CreateDatabase strFile, dbLangGeneral
  lngBase = FileLen(strFile)
  Kill strFile
  Debug.Print "Base size", lngBase
  
  For Each tdf In dbs.TableDefs
    strName = tdf.Name
    ' Apply some filtering.
    If Left(strName, 4) = "tblS" Then
      strFile = strPath & strName & ".mdt"
      Debug.Print strName, ;
      CreateDatabase strFile, dbLangGeneral
      DoCmd.TransferDatabase acExport, "Microsoft Access", strFile, acTable, strName, strName
      lngSize = FileLen(strFile) - lngBase
      Kill strFile
      Debug.Print lngSize
    End If
  Next
  
  Set tdf = Nothing
  Set dbs = Nothing
  
End Sub
</code>

Note that it will not measure linked tables; the function must be run from withing the backend or modified to use the backend database for dbs.

/gustav

>>> jimdettman at verizon.net 01-10-2009 19:16 >>>

  That needs to be modified a tad; a blank DB needs to be created and the
disk size needs to be subtracted after the table is exported into it.

  It would also be nice to have the tables sizes stored in a table.

Jim. 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com 
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock
Sent: Thursday, October 01, 2009 12:37 PM
To: accessd at databaseadvisors.com 
Subject: Re: [AccessD] Table size

Hi Arthur

So much talking, so little action ...

<code>
Public Sub ListTableSize()

  Dim dbs As DAO.Database
  Dim tdf As DAO.TableDef
  
  Dim strName As String
  Dim strFile As String
  Dim strPath As String
    
  Set dbs = CurrentDb
  strName = dbs.Name
  strPath = Left(strName, Len(strName) - Len(Dir(strName)))
  
  For Each tdf In dbs.TableDefs
    strName = tdf.Name
    ' Apply some filtering.
    If Left(strName, 4) = "tblS" Then
      strFile = strPath & strName & ".mdt"
      Debug.Print strName, ;
      CreateDatabase strFile, dbLangGeneral
      DoCmd.TransferDatabase acExport, "Microsoft Access", strFile, acTable, strName, strName
      Debug.Print FileLen(strFile)
      Kill strFile
    End If
  Next
  
  Set tdf = Nothing
  Set dbs = Nothing
  
End Sub
</code>






More information about the AccessD mailing list