![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить список полей, их типы и индексы при помощи SQL [MS Jet 4.0(Access)]
-=XP=- © (2005-05-05 14:55:00)Есть ли средства для получения списка полей в таблице (с указанием их типа данных, размера) при помощи SQL запроса? Какая системная таблица хранит эти данные?
Чтобы получить нечто наподобие:
Name Type Size
Field1 CHAR 10
Field2 INTEGER
Field3 TEXT
И то же самое по индексам: наименование индекса, какие поля входя в индекс, дополнительные параметры.
Anatoly Podgoretsky (2005-05-05 19:21:00) [1]sniknik © (05.05.05 17:45) [7]
И пример Adotest, там широко используется схема, для визуального создания запросов и много другого. Кстати очень приятный пример для ознакомления с возможностями АДО
Anatoly Podgoretsky (2005-05-05 19:20:00) [2]Я подозревал :-)
Все таки Микрософт и он многое взял из Акцесс, ведь в свое время это был их продукт номер один, это сейчас они стараются перенаправить пользователей на MSDE
sniknik (2005-05-05 17:45:00) [3]> ... возможно она доступна и для Акцесс.
точно доступна,
вплоть до связок по форейн кеу, и описателей (description) полей, не говоря уж о типах. и открывать таблицу (выкачивать все записи) только для узнавания структуры не придется.
-=XP=-
см. хелп по методу OpenSchema.
DSKalugin (2005-05-05 16:51:00) [4]>Но как определить наличие индекса для таблицы без использования TADOTable?
А чем тебе АДО не устраивает не могу понять. Чем как не АДО ковырять Акцесс?
>Каким образом определить наличие того или иного индекса в таблице?
Получить список индексов и проверить в нем наличие искомого с помощью TADOTable.GetIndexNames
Anatoly Podgoretsky (2005-05-05 16:42:00) [5]В АДО есть понятие схема, возможно она доступна и для Акцесс. Через схему можно получить абсолютно все метаданные.
-=XP=- (2005-05-05 16:21:00) [6]RDB$FIELDS
Was ist das?
В Access такого, увы, нет.
Всякие MSYSObjects, MSYSAccess не дают того, что нужно.
Может, какая-то скрытая таблица есть?
-=XP=- (2005-05-05 16:18:00) [7]Но как определить наличие индекса для таблицы без использования TADOTable? TADOQuery не имеет свойства IndexDefs. Каким образом определить наличие того или иного индекса в таблице?
Lexer (2005-05-05 16:16:00) [8]select R.RDB$RELATION_NAME, R.RDB$FIELD_POSITION, R.RDB$FIELD_NAME,
F.RDB$FIELD_LENGTH, F.RDB$FIELD_TYPE, F.RDB$FIELD_SCALE, F.RDB$FIELD_SUB_TYPE
from RDB$FIELDS F, RDB$RELATION_FIELDS R
where F.RDB$FIELD_NAME = R.RDB$FIELD_SOURCEand R.RDB$SYSTEM_FLAG = 0
order by R.RDB$RELATION_NAME, R.RDB$FIELD_POSITION
DSKalugin (2005-05-05 15:17:00) [9]Не знаю как там в SQL но обычными компонентами эту информацию можно получить манипулируя методами объектов TFieldDefsи TIndexDefs