Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Поле в таблице  [new]
Mitja_L
Member

Откуда:
Сообщений: 2
Мне надо добавить поле в таблицу ( Alter Table ..... )
Но перед добавлением я хочу проверить, есть ли в таблице поле с именем, которое я хочу добавить.
Как проверить есть ли поле (по имени) в таблице ?
13 янв 05, 03:11    [1240557]     Ответить | Цитировать Сообщить модератору
 Re: Поле в таблице  [new]
Alexander G
Member

Откуда: Чукчи мы, однако
Сообщений: 3270
Цель какая? если поле есть не добавлять?
К примеру
CurrentDb.Execute "alter table tbl add column b text(5)", dbfailonerror
если поле b уже есть, просто даст ошибку 3380, что поле с таким именем есть и не добавит его
Можно ее обработать, но зачем?

написать
On Error Resume Next
CurrentDb.Execute "alter table................
On Error GoTo 0
и ничего не проверять
13 янв 05, 03:43    [1240565]     Ответить | Цитировать Сообщить модератору
 Re: Поле в таблице  [new]
Mitja_L
Member

Откуда:
Сообщений: 2
Именно так! Если есть, не добавлять.
Хочется сделать максимально корректно, а не провоцировать ошибки.
13 янв 05, 23:43    [1243763]     Ответить | Цитировать Сообщить модератору
 Re: Поле в таблице  [new]
Alexander G
Member

Откуда: Чукчи мы, однако
Сообщений: 3270
Вам шашечки или ехать?
Работа с генерацией или игнорированием ошибок вполне нормальный стиль програмирования.
ну если уж так хочется:
Public Function fnCheckFields(strTblName As String, strFldName As String) As Boolean
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Set dbs = CurrentDb()
Set tdf = dbs.TableDefs(strTblName)
For Each fld In tdf.Fields
    If fld.Name = strFldName Then
    fnCheckFields = True
    Set tdf = Nothing
    Set dbs = Nothing
    Exit Function
    End If
Next fld
fnCheckFields = False
Set tdf = Nothing
Set dbs = Nothing
End Function
14 янв 05, 00:15    [1243790]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить