Как найти список всех таблиц в базе данных Access, соответствующих определенному формату в Delphi - PullRequest
1 голос
/ 05 декабря 2009

Мне нужно вычислить список имен таблиц в заданной базе данных (формат MDB), которые имеют определенный формат (например, который содержит поле DateTime «Дата применения»). Как я могу это сделать?

Примечание. Я использую компоненты Delphi 7, ADO, Microsoft JET 4.0 для подключения к базе данных типа MDB.

Ответы [ 3 ]

4 голосов
/ 07 декабря 2009

В компоненте подключения есть два метода, которые полезны для такого рода работы. Первый:

procedure GetTableNames(List: TStrings; SystemTables: Boolean = False); 

, который заполняет потомка TStrings списком всех таблиц, доступных в текущей базе данных. Следующий метод:

procedure GetFieldNames(const TableName: string; List: TStrings);

, который заполняет список всех полей для конкретной таблицы. Затем вы можете создать простую процедуру для циклического перебора всех полей всех таблиц для определенного поля, которое вы ищете.

2 голосов
/ 05 декабря 2009

Вот решение типа vbscript / asp. Вы можете адаптировать это к Delphi

Const adSchemaTables = 20


Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

objConnection.Open _
    "Provider = Microsoft.Jet.OLEDB.4.0; " & _
        "Data Source = 'C:\Scripts\Test.mdb'" 

Set objRecordSet = objConnection.OpenSchema(adSchemaTables)

Do Until objRecordset.EOF
    Wscript.Echo "Table name: " & objRecordset.Fields.Item("TABLE_NAME")
    Wscript.Echo "Table type: " & objRecordset.Fields.Item("TABLE_TYPE")
    Wscript.Echo
    objRecordset.MoveNext
Loop
2 голосов
/ 05 декабря 2009

Схема может подойти:

   Set rs = cn.OpenSchema(adSchemaColumns, _
   Array(Empty, Empty, Empty, SelectFieldName))

Где adSchemaColumns = 4
rs является объектом набора записей
cn объект соединения
SelectFieldName - это имя столбца, в данном случае «Дата применяется».

Ограничения для этой схемы:

TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME 

Возвращаются столбцы (поля):

TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
COLUMN_GUID
COLUMN_PROPID
ORDINAL_POSITION
COLUMN_HASDEFAULT
COLUMN_DEFAULT
COLUMN_FLAGS
IS_NULLABLE
DATA_TYPE
TYPE_GUID
CHARACTER_MAXIMUM_LENGTH
CHARACTER_OCTET_LENGTH
NUMERIC_PRECISION
NUMERIC_SCALE
DATETIME_PRECISION
CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME
COLLATION_CATALOG
COLLATION_SCHEMA
COLLATION_NAME
DOMAIN_CATALOG
DOMAIN_SCHEMA
DOMAIN_NAME
DESCRIPTION 

- [Получение информации о схеме из базы данных] (http://msdn.microsoft.com/en-us/library/kcax58fh(VS.80).aspx)

...