请问如何用DAO建立表之间的关系?不使用SQL语句,采用DAO提供的对象.

解决方案 »

  1.   

    引用dso3.6 object libraryPrivate Sub Command1_Click()
        Dim tdExample As TableDef
        Dim fldForeName As Field
        Dim fldSurname As Field
        Dim fldDOB As Field
        Dim fldFurtherDetails As Field
        Dim dbDatabase As Database
        Dim sNewDBPathAndName As String
        
        sNewDBPathAndName = "c:\NewDB" & Right$(Time, 2) & ".mdb"
        Set dbDatabase = CreateDatabase(sNewDBPathAndName, dbLangGeneral, dbEncrypt)
        Set tdExample = dbDatabase.CreateTableDef("Example")    Set fldForeName = tdExample.CreateField("Fore_Name", dbText, 20)
        Set fldSurname = tdExample.CreateField("Surname", dbText, 20)
        Set fldDOB = tdExample.CreateField("DOB", dbDate)
        Set fldFurtherDetails = tdExample.CreateField("Further_Details", dbMemo)
        
        tdExample.Fields.Append fldForeName
        tdExample.Fields.Append fldSurname
        tdExample.Fields.Append fldDOB
        tdExample.Fields.Append fldFurtherDetails
        
        dbDatabase.TableDefs.Append tdExample
        MsgBox "New .MDB Created - '" & sNewDBPathAndName & "'", vbInformation
    End Sub
      

  2.   

    表已经建好了,现在是要建立表之间的关系以保证数据的完整性。要通过DAO来完成,因为是建立和另外一个数据库一样的关系
      

  3.   

    用下面的代码可以实现,注意在创建索引的时候,不能拷贝外关键字(index.forign =false)
    'copy the relations from DATABASE
            For Each rltFrom In DB.Relations
                Set rltTo = db.CreateRelation(rltFrom.Name, rltFrom.Table, rltFrom.ForeignTable, rltFrom.Attributes)
                With rltTo
                    For j = 0 To rltFrom.Fields.Count - 1
                       Set fld = .CreateField(rltFrom.Fields(j).Name)
                       fld.ForeignName = rltFrom.Fields(j).ForeignName
                       rltTo.Fields.Append fld
                    Next j
                End With
                db.Relations.Append rltTo
                db.Relations.Refresh
            Next rltFrom