|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- # 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()
|