'Анализ структуры таблицы
Public Function TableDataStrAnalise(table As String)
'Создаем таблицу-отчет
Dim tblAnN As String 'Задаем имя таблицы-отчета (имеет вид 'ИмяАнализируемойТаблицы'+StrRep)
tblAnN = table & "StrRep"
On Error Resume Next
DoCmd.DeleteObject acTable, tblAnN 'Удаляем таблицу с заданным именем (если она была уже создана)
Err.Clear
Dim tblnew As TableDef
Set tblnew = CurrentDb.CreateTableDef(tblAnN)
With tblnew 'Создаем поля
.Fields.Append .CreateField("OrdinalPosition", dbByte) 'Позиция поля
.Fields.Append .CreateField("Name", dbText) 'Имя поля
.Fields.Append .CreateField("Caption", dbText) 'Подпись поля
.Fields.Append .CreateField("Description", dbText) 'Описание поля
.Fields.Append .CreateField("DataType", dbLong) 'Тип данных поля
End With
CurrentDb.TableDefs.Append tblnew 'Таблица-отчет создана
Dim tblO As DAO.Recordset 'Открываем рекордсет таблицы-отчета для добавления данных
Set tblO = CurrentDb.OpenRecordset(tblAnN)
Dim tblA As DAO.Recordset 'Открываем рекордсет анализируемой таблицы
Dim tbf As DAO.TableDef
Dim fld As DAO.Field
Set tblA = CurrentDb.OpenRecordset(table)
For Each fld In tblA.Fields 'Цикл по полям анализируемой таблицы со считыванием свойств
With tblO 'Цикл заполнения таблицы-отчета
tblO.AddNew
tblO!OrdinalPosition = fld.OrdinalPosition
tblO!Name = fld.Name
tblO!Caption = fld.Properties("Caption")
tblO!Description = fld.Properties("Description")
tblO!DataType = fld.Type
tblO.Update
.MoveNext
End With 'Конец цикла заполнения таблицы-отчета
Next fld
MsgBox "Структура таблицы '" & table & "' готова.", vbInformation, "Сервис"
DoCmd.OpenTable tblAnN
End Function
|