TStringList *TableNames = new TStringList();
ADOConnection->GetTableNames(TableNames);
Access system tables
My application I develop should retrieve some meta data from Access database (mdb file). It should analyze objects of some DB. A difficulty I encountered and I must to solve:
- Every table in database has some columns. So could you tell me please which system table stores names and ids of columns? How should my application work in order to retrieve names and ids of all columns in databases tables?
I opened all system tables but I dodn't find such kind of information. Using MS SQL Server to retrieve such a kind of meta information there are no problems. But I stuck using Access.
I was looking for some information in Internet but ineffectively. Please, help me...
По теме:
Насколько я знаю, в акцесс нет аналога таблиц sysobjects, syscolumns и т.д. как в MS SQL. Поэтому вряд ли возможно при написании "запросов акцесс" - вкладка запросы (бледный аналог хп) определить какие таблицы есть в базе или колонки, соответсвенно, в таблице, по крайней мере я не знаю таких стандартных функций.
Но если эту информацию необходимо получить клиенту, который работает с этой базой, он может попробовать запросить эту информацию у провайдера БД. Приведу пример кода написанного в c++ builder (в качестве провайдера используется Microsoft.Jet.OLEDB.4.0 via ADO):
Получение списка таблиц бд
Код:
Получение списка полей для таблицы TableName
Код:
TStringList *FieldNames = new TStringList();
ADOConnection->GetFieldNames(TableName, FieldNames);
ADOConnection->GetFieldNames(TableName, FieldNames);
Spasibo, palucilos! Eto rabotayet.