home *** CD-ROM | disk | FTP | other *** search
- # import dao3032
- # No longer imported here - callers responsibility to load
- #
- import win32com.client
-
- def DumpDB(db, bDeep = 1):
- # MUST be a DB object.
- DumpTables(db,bDeep)
- DumpRelations(db,bDeep)
- DumpAllContainers(db,bDeep)
-
- def DumpTables(db, bDeep = 1):
- for tab in db.TableDefs:
- tab = db.TableDefs(tab.Name) # Redundant lookup for testing purposes.
- print "Table %s - Fields: %d, Attributes:%d" % (tab.Name, len(tab.Fields), tab.Attributes)
- if bDeep: DumpFields(tab.Fields)
-
- def DumpFields(fields):
- for field in fields:
- print " %s, size=%d, reqd=%d, type=%d, defVal=%s" % (field.Name, field.Size, field.Required, field.Type, str(field.DefaultValue))
-
- def DumpRelations(db, bDeep = 1):
- for relation in db.Relations:
- print "Relation %s - %s->%s" % (relation.Name, relation.Table, relation.ForeignTable)
-
- #### This dont work. TLB says it is a Fields collection, but apparently not!
- #### if bDeep: DumpFields(relation.Fields)
-
- def DumpAllContainers(db, bDeep = 1):
- for cont in db.Containers:
- print "Container %s - %d documents" % (cont.Name, len(cont.Documents))
- if bDeep: DumpContainerDocuments(cont)
-
- def DumpContainerDocuments(container):
- for doc in container.Documents:
- import time
- timeStr = time.ctime(int(doc.LastUpdated))
- print " %s - updated %s (" % (doc.Name, timeStr),
- print doc.LastUpdated,")" # test the _print_ method?
-
- def TestEngine(engine):
- import sys
- if len(sys.argv)>1:
- dbName = sys.argv[1]
- else:
- dbName = "e:\\temp\\TestPython.mdb"
- db = engine.OpenDatabase(dbName)
- DumpDB(db)
-
- def test():
- import win32com.client.gencache
- if win32com.client.gencache.GetModuleForProgID("DAO.DBEngine.35") is None:
- print "DAO 3.5 does not seem to be installed or have makepy support"
- else:
- TestEngine(win32com.client.Dispatch("DAO.DBEngine.35"))
-
- if win32com.client.gencache.GetModuleForProgID("DAO.DBEngine.30") is None:
- print "DAO 3.0 does not seem to be installed or have makepy support"
- else:
- TestEngine(win32com.client.Dispatch("DAO.DBEngine.30"))
-
-
- if __name__=='__main__':
- test()
-
-