ник: Дядя Федор
Public Function f_NewField()
Dim fld As Field
Dim Tbl As TableDef
Dim dbs As Database
Dim rez As Recordset
Set dbs = CurrentDb
Set rez = dbs.OpenRecordset("SELECT * FROM TblJobAddField WHERE IsDone = False;")
Do While Not rez.EOF
Set Tbl = dbs.TableDefs([rez]![TabName])
Set fld = Tbl.CreateField([rez]![FieldName])
'Определение свойств поля
fld.Type = ([rez]![FieldType])
If [rez]![FieldSize] & "" <> "" Then fld.Size = ([rez]![FieldSize])
fld.DefaultValue = Nz([rez]![FieldDefaultValue], "")
'Добавление
Tbl.Fields.Append fld
'Заполнение комментария
SetAccessProperty Tbl.Fields([rez]![FieldName]), "Description", dbMemo, [rez]![FieldMemo]
DoCmd.SetWarnings False
DoCmd.RunSQL ("UPDATE TblJobAddField SET IsDone = True, DateAddDone = Now() WHERE IdJobAddField = " & [rez]![IdJobAddField] & ";")
DoCmd.SetWarnings True
rez.MoveNext
Loop
End Function
|
Структура таблицы TblJobAddField понятна из текста функции.
Необходимость возникает при работающей базе, когда открыть серверную часть для изменения в рабочее время затруднительно, т.к. таблица занята.
Помещаем функцию в ночной запуск и ок!