powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка на наличие поля
7 сообщений из 7, страница 1 из 1
Проверка на наличие поля
    #32452328
6apaH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные в нескольких таблицах с немного отличающейся структурой. Нужно вывести отчет по определенным полям (причем в части таблиц неск треб полей отсутствует)
Как сделать чтоб в случае отсутствия поля в таблице в отчете выводилась пустая строка.
Как програмно определить есть ли поле X в таблице Y?
...
Рейтинг: 0 / 0
Проверка на наличие поля
    #32452362
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как програмно определить есть ли поле X в таблице Y?
Код: plaintext
1.
2.
3.
4.
5.
Dim RrecSet as DAO.Recordset

Set RrecSet = CurrentDB.OpenRecordset( "SELECT ПроверяемоеПоле FROM tbl" )

If RrecSet.EOF Then
....
...
Рейтинг: 0 / 0
Проверка на наличие поля
    #32452411
6apaH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! пойду попробую :))
...
Рейтинг: 0 / 0
Проверка на наличие поля
    #32452443
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мой вариант. Конечно Sub можно ваще не использовать - это просто для демонстрации. Можно где-то в коде передавать значение в функцию и получать ответ. Сразу хочу сказать, что на таблице со 100 полями определяет примерно секунды за 2-3.

Sub Poisk_polya()
table_name = InputBox("Введите имя таблицы")
pole_name = InputBox("Введите имя поля")
MsgBox naydeno(table_name, pole_name)

End Sub

Public Function naydeno(ByVal table_name As String, ByVal pole_name As String)
count_poley = CurrentDb.tabledefs(table_name).Fields.Count

For i = 0 To count_poley - 1
If CurrentDb.tabledefs(table_name).Fields(i).Name = pole_name Then
naydeno = True
End If
Next i

End Function
...
Рейтинг: 0 / 0
Проверка на наличие поля
    #32452725
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеволовВDim RrecSet as DAO.Recordset
Set RrecSet = CurrentDB.OpenRecordset("SELECT ПроверяемоеПоле FROM tbl")
If RrecSet.EOF Then
....
неправильно, надо

Dim RrecSet as DAO.Recordset
on error resume next
Set RrecSet = CurrentDB.OpenRecordset("SELECT ПроверяемоеПоле FROM tbl")
if err.number = 3061 then' Или какая там ошибка вылезет
' нету
else
' наверное есть (еще м. не быть самой таблицы)
endif

или

Dim RrecSet as DAO.Recordset
on error resume next
Set RrecSet = CurrentDB.OpenRecordset("SELECT ПроверяемоеПоле FROM tbl")
if err.number = 0 then
' есть
else
' наверное нет
endif
...
Рейтинг: 0 / 0
Проверка на наличие поля
    #32452794
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Public Function xxx() as Boolean
On Error GoTo xxx_err
xxx = iif(Currentdb.TableDefs("MyTable").Fields("MyField").Name <> "", True, False)
Exit Function
xxx_err:
xxx=False
End Function
...
Рейтинг: 0 / 0
Проверка на наличие поля
    #32452803
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Так правильнее...

Public Function xxx() as Boolean
On Error GoTo xxx_err
xxx = switch(Currentdb.TableDefs("MyTable").Fields("MyField").Name <> "", True)
Exit Function
xxx_err:
xxx=False
End Function
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка на наличие поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]