home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2730 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  4.6 KB  |  144 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import pythoncom
  5. from win32com.client import gencache, constants, Dispatch
  6. import win32api
  7. import os
  8. import sys
  9.  
  10. def CreateTestAccessDatabase(dbname = None):
  11.     if dbname is None:
  12.         dbname = os.path.join(win32api.GetTempPath(), 'COMTestSuiteTempDatabase.mdb')
  13.     
  14.     access = Dispatch('Access.Application')
  15.     dbEngine = access.DBEngine
  16.     workspace = dbEngine.Workspaces(0)
  17.     
  18.     try:
  19.         os.unlink(dbname)
  20.     except os.error:
  21.         print 'WARNING - Unable to delete old test database - expect a COM exception RSN!'
  22.  
  23.     newdb = workspace.CreateDatabase(dbname, constants.dbLangGeneral, constants.dbEncrypt)
  24.     table = newdb.CreateTableDef('Test Table 1')
  25.     table.Fields.Append(table.CreateField('First Name', constants.dbText))
  26.     table.Fields.Append(table.CreateField('Last Name', constants.dbText))
  27.     index = table.CreateIndex('UniqueIndex')
  28.     index.Fields.Append(index.CreateField('First Name'))
  29.     index.Fields.Append(index.CreateField('Last Name'))
  30.     index.Unique = -1
  31.     table.Indexes.Append(index)
  32.     newdb.TableDefs.Append(table)
  33.     table = newdb.CreateTableDef('Test Table 2')
  34.     table.Fields.Append(table.CreateField('First Name', constants.dbText))
  35.     table.Fields.Append(table.CreateField('Last Name', constants.dbText))
  36.     newdb.TableDefs.Append(table)
  37.     relation = newdb.CreateRelation('TestRelationship')
  38.     relation.Table = 'Test Table 1'
  39.     relation.ForeignTable = 'Test Table 2'
  40.     field = relation.CreateField('First Name')
  41.     field.ForeignName = 'First Name'
  42.     relation.Fields.Append(field)
  43.     field = relation.CreateField('Last Name')
  44.     field.ForeignName = 'Last Name'
  45.     relation.Fields.Append(field)
  46.     relation.Attributes = constants.dbRelationDeleteCascade + constants.dbRelationUpdateCascade
  47.     newdb.Relations.Append(relation)
  48.     tab1 = newdb.OpenRecordset('Test Table 1')
  49.     tab1.AddNew()
  50.     tab1.Fields('First Name').Value = 'Mark'
  51.     tab1.Fields('Last Name').Value = 'Hammond'
  52.     tab1.Update()
  53.     tab1.MoveFirst()
  54.     bk = tab1.Bookmark
  55.     tab1.AddNew()
  56.     tab1.Fields('First Name').Value = 'Second'
  57.     tab1.Fields('Last Name').Value = 'Person'
  58.     tab1.Update()
  59.     tab1.MoveLast()
  60.     if tab1.Fields('First Name').Value != 'Second':
  61.         raise RuntimeError, 'Unexpected record is last - makes bookmark test pointless!'
  62.     tab1.Fields('First Name').Value != 'Second'
  63.     tab1.Bookmark = bk
  64.     if tab1.Bookmark != bk:
  65.         raise RuntimeError, 'The bookmark data is not the same'
  66.     tab1.Bookmark != bk
  67.     if tab1.Fields('First Name').Value != 'Mark':
  68.         raise RuntimeError, 'The bookmark did not reset the record pointer correctly'
  69.     tab1.Fields('First Name').Value != 'Mark'
  70.     return dbname
  71.  
  72.  
  73. def DoDumpAccessInfo(dbname):
  74.     import daodump
  75.     a = None
  76.     forms = None
  77.     
  78.     try:
  79.         sys.stderr.write('Creating Access Application...\n')
  80.         a = Dispatch('Access.Application')
  81.         print 'Opening database %s' % dbname
  82.         a.OpenCurrentDatabase(dbname)
  83.         db = a.CurrentDb()
  84.         daodump.DumpDB(db, 1)
  85.         forms = a.Forms
  86.         print 'There are %d forms open.' % len(forms)
  87.         reports = a.Reports
  88.         print 'There are %d reports open' % len(reports)
  89.     finally:
  90.         if a is not None:
  91.             sys.stderr.write('Closing database\n')
  92.             
  93.             try:
  94.                 a.CloseCurrentDatabase()
  95.             except pythoncom.com_error:
  96.                 pass
  97.             except:
  98.                 None<EXCEPTION MATCH>pythoncom.com_error
  99.             
  100.  
  101.  
  102.  
  103.  
  104. def GenerateSupport():
  105.     gencache.EnsureModule('{00025E01-0000-0000-C000-000000000046}', 0, 4, 0)
  106.     gencache.EnsureDispatch('Access.Application')
  107.  
  108.  
  109. def DumpAccessInfo(dbname):
  110.     amod = gencache.GetModuleForProgID('Access.Application')
  111.     dmod = gencache.GetModuleForProgID('DAO.DBEngine.35')
  112.     if amod is None and dmod is None:
  113.         DoDumpAccessInfo(dbname)
  114.         GenerateSupport()
  115.     else:
  116.         sys.stderr.write('testAccess not doing dynamic test, as generated code already exists\n')
  117.     DoDumpAccessInfo(dbname)
  118.  
  119.  
  120. def test(dbname = None):
  121.     if dbname is None:
  122.         
  123.         try:
  124.             GenerateSupport()
  125.         except pythoncom.com_error:
  126.             print '*** Can not import the MSAccess type libraries - tests skipped'
  127.             return None
  128.  
  129.         dbname = CreateTestAccessDatabase()
  130.         print "A test database at '%s' was created" % dbname
  131.     
  132.     DumpAccessInfo(dbname)
  133.  
  134. if __name__ == '__main__':
  135.     import sys
  136.     from util import CheckClean
  137.     dbname = None
  138.     if len(sys.argv) > 1:
  139.         dbname = sys.argv[1]
  140.     
  141.     test(dbname)
  142.     CheckClean()
  143.  
  144.