Вопрос по database – Найти таблицу, когда вы знаете название столбца?

7

У меня есть БД в Access с невероятным количеством таблиц. К сожалению, создатель использовал очень неописательные имена, так что в принципе невозможно даже догадаться, для чего таблица, просто взглянув на ее имя. Мне нужно срочно найти таблицу, которая содержит определенные данные, и я почти уверен, что знаю имя некоторых из ее столбцов или, по крайней мере, слова, содержащиеся в именах столбцов. По сути, мне нужен какой-то «Поиск по имени столбца в каждой таблице во всей базе данных», который показывает все таблицы, содержащие определенные имена столбцов.

Есть ли способ сделать это, прежде чем я начну поодиночке, как обезьяна?

Ваш Ответ

2   ответа
2

но для этого требуется некоторый код (в отличие от возможности просто выполнить запрос).

Сначала необходимо сделать системные таблицы «видимыми». в базе данных. Вы не упоминаете, какая версия MS Access используется, но в диалоге параметров должно быть разрешеновдоль этих линий.

Это выставляет таблицуMSysObjects который содержит все имена пользовательских таблиц.

Вероятно, вы захотите перебрать все пользовательские таблицы, передавая их имена в некоторый код, который открывает таблицы какDAO.TableDef объекты и исследует атрибуты соответствующихFields коллекция.

Аллен Браун имеетнекоторый код VBA, который отображает эти атрибуты, Вы можете настроить это в соответствии с вашими потребностями.

7

имена которых содержат текст, который вы вводите. Результаты выводятся в окне «Немедленно»Ctrl+g)

Public Sub ListTablesWithColumnNamesContaining(ByVal pText As String)
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Set db = CurrentDb
For Each tdf In db.TableDefs
    For Each fld In tdf.Fields
        If InStr(1, fld.Name, pText, vbTextCompare) > 0 Then
            Debug.Print tdf.Name & ":", fld.Name
        End If
    Next fld
Next tdf
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
End Sub
Работал как шарм, спасибо! Antrim

Похожие вопросы