VBA, MS Access MS Access в примерах

Добавление поля в таблицу (DAO) + Создание ключа (Счетчик)

Private Sub AddNewKeyField(sTName$, sFiedName$)
Dim dbs As DAO.Database
Dim tbl As DAO.TableDef
Dim fld As DAO.Field
Dim idx As DAO.Index
Dim idxFLD As DAO.Field
On Error GoTo AddNewFieldErr
    Set dbs = CurrentDb
    Set tbl = dbs.TableDefs(sTName$)
    Set fld = tbl.CreateField(sFiedName, dbLong) ' создаю ключевое поле
    
    fld.Attributes = fld.Attributes + dbAutoIncrField 'Поле = Счетчик
    fld.OrdinalPosition = 0   'Положение поля = наверху !
    tbl.Fields.Append fld     'Добавление поля в таблицу

    Set idx = tbl.CreateIndex("PrimaryKey")
    With idx
    'Добавление поля(ей) в индекс
        .Fields.Append .CreateField(sFiedName)
    'Свойства индекса
        .Unique = True   'Уникальный
        .Primary = True  'Первичный
    End With
    tbl.Indexes.Append idx
    tbl.Indexes.Refresh

AddNewFieldBye:
    On Error Resume Next
    Set idx = Nothing
    Set fld = Nothing
    Set tbl = Nothing
    Set dbs = Nothing
    
    Exit Sub

AddNewFieldErr:
    MsgBox "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in procedure AddNewField of Module mod00Test", vbCritical, "Error!"
    Resume AddNewFieldBye
End Sub

Назад ToTop
L.E. 07.10.2022
Рейтинг@Mail.ru