12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # 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), end=' ')
- 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():
- for progid in ("DAO.DBEngine.36", "DAO.DBEngine.35", "DAO.DBEngine.30"):
- try:
- ob = win32com.client.gencache.EnsureDispatch(progid)
- except pythoncom.com_error:
- print(progid, "does not seem to be installed")
- else:
- TestEngine(ob)
- break
- if __name__=='__main__':
- test()
|