大家好,
因为平时写程序主要是使用Access数据库,而偏偏Access属于那种谁打开了就可以乱改的数据库,所以就打算写一个分析、读取Access数据库结构的小程序。包括:1、读取数据库内所有的表格(已经实现,用 Openschemas )
2、读取每个数据库表内的字段和类型 (已经实现,就是用 Field 的 Name 和 Type 属性)
3、读取每个表格的主键(已经实现,用 ADOX )4、读取每个字段是否属于“必填字段”和“允许有空值”(无法实现)
5、读取数据库内表间的关系,以及同步(同步删除、同步更新 等等)(这个也无法实现)然后把这些信息保存到一个文本文件里面,当数据库程序启动的时候,就读取该文件内数据库的信息,然后和正要打开的数据库进行比对,比对无误之后才正式启动程序。不知道这里的大侠是否知道如何解决 4 和 5 的这两个问题呢?小弟在这里先谢过各位了啊~

解决方案 »

  1.   

    第四个问题:
    对于 Field 对象,Attributes 属性可以是一个或多个 FieldAttributeEnum 值的和。
    请参考 FieldAttributeEnum 的帮助。第五个问题:
    可以参考 ADOX 的 KeyTypeEnum,估计主要是外键的判断吧。
      

  2.   

    使用DAO对象 , 给你部分核心代码 你可以通过 ACCESS 97的帮助查到资料    Dim dbs As Database
        Dim rel As Relation
        Dim fld As Field
        For Each rel In dbs.Relations
            For Each fld In rel.Fields
             rel.Table'主标名
              fld.Name'主标字段
              rel.ForeignTable'子表名
                  fld.ForeignName'子表字段
                   rel.Attributes'关系
                    dbRelationDontEnforce
                    dbRelationUpdateCascade            
                  dbRelationUpdateCascade + dbRelationDeleteCascade
                   Next
             Next