2009-12-05 5 views

Répondre

2

Un schéma peut convenir:

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

Où adSchemaColumns = 4
rs est un objet recordset
cn un objet de connexion
SelectFieldName est le nom de la colonne "Date de la demande" dans ce cas.

Les contraintes de ce schéma sont:

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
COLUMN_NAME 

colonnes (champs) retournés sont:

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 

- [Obtenir des informations sur le schéma d'une base de données] (http://msdn.microsoft.com/en-us/library/kcax58fh(VS.80).aspx)

2

est ici un Solution de type vbscript/asp Vous pouvez l'adapter à 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 
4

Il existe deux méthodes disponibles sur le composant de connexion qui sont utiles pour ce type de travail. La première est:

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

qui renseigne un descendant TStrings avec une liste de toutes les tables disponibles dans la base de données actuelle. La méthode suivante est la suivante:

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

qui remplit une liste de tous les champs pour une table spécifique. Vous pouvez ensuite créer une routine simple pour parcourir tous les champs de toutes les tables pour le champ spécifique que vous recherchez.

+0

Savez-vous lequel fonctionne le plus vite? OpenSchema ou GetTableNames? –

Questions connexes