You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/WPy32-3720/python-3.7.2/Lib/site-packages/win32com/test/daodump.py

62 lines
2.0 KiB

6 years ago
# 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()