引用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)
用下面的代码可以实现,注意在创建索引的时候,不能拷贝外关键字(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
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
'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