Cómo search la list de todas las tablas en la Base de datos de acceso que coinciden con cierto formatting en Delphi

Necesito calcular una list de nombres de tablas en una database dada (formatting MDB), que tienen cierto formatting (por ejemplo, que contiene el campo DateTime "Fecha de aplicación"). ¿Cómo puedo hacerlo?

Nota: Estoy usando Delphi 7, componentes ADO, Microsoft JET 4.0 para conectarme a la database de tipo MDB.

Un esquema puede adaptarse:

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

Donde adSchemaColumns = 4
rs es un object recordset
cn un object de connection
SelectFieldName es el nombre de la columna, "Fecha de aplicación" en este caso.

Las restricciones para este esquema son:

 TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME 

Las columnas (campos) devueltas son:

 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 

– [Obtención de información de esquema de una database] ( http://msdn.microsoft.com/en-us/library/kcax58fh(VS.80).aspx)

Hay dos methods disponibles en el componente de connection que son útiles para este tipo de trabajo. El primero es:

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

que rellena un descendiente TStrings con una list de todas las tablas disponibles en la database actual. El siguiente método es:

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

que completa una list de todos los campos para una tabla específica. A continuación, puede crear una rutina simple para recorrer todos los campos de todas las tablas para el campo específico que está buscando.

Aquí hay una solución de tipo vbscript / asp. Puedes adaptar esto a 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