This is a fairly broad question since we don't know what you understand about DAO or TableDefs or ... Below is some code that I use to create a table, fields, and indexes in a database.
Function CreateAdmins() As Boolean
On Error GoTo errCreateAdmin
Dim db As DAO.Database
Dim tdf As DAO.TableDef
'Dim fld As DAO.Field
'Dim ndx As DAO.Index
Dim strRemoteDB As String
Dim strSQL As String
Dim strTableName As String
CreateAdmins = True
strTableName = "tblSecurity"
Set db = CurrentDb
Set tdf = db.CreateTableDef(strTableName)
With tdf
.Fields.Append .CreateField("admAdmID", dbLong)
.Fields("admAdmID"

.Attributes = dbAutoIncrField
.Fields.Append .CreateField("admSecLevel", dbInteger)
.Fields.Append .CreateField("admLogin", dbText, 20)
db.TableDefs.Append tdf
db.TableDefs.Refresh
End With
strSQL = "CREATE UNIQUE INDEX PriKey ON " & strTableName & " (admAdmID) WITH PRIMARY"
db.Execute strSQL, dbFailOnError
strSQL = "INSERT INTO tblSecurity (admSecLevel, admLogin) Values (3, 'thomsom')"
db.Execute strSQL, dbFailOnError
strSQL = "INSERT INTO tblSecurity (admSecLevel, admLogin) Values (3, '" & fOSUserName() & "')"
db.Execute strSQL, dbFailOnError
exitCreateAdmin:
On Error Resume Next
Set tdf = Nothing
Set db = CurrentDb
Exit Function
errCreateAdmin:
Select Case Err
Case Else
End Select
CreateAdmins = False
Resume exitCreateAdmin
End Function
Duane
MS Access MVP