Как получить список типов данных MS Access?

Я пытаюсь перечислить типы данных из Microsoft Access 2000-2007 (в зависимости от версии базы данных MS Access) в поле со списком для программы C #. Как я могу этого добиться?


person Community    schedule 22.07.2009    source источник
comment
Вам нужны типы данных Access или типы данных Jet / ACE? Вероятно, поскольку вы используете C #, вам нужны только типы данных Jet / ACE, но это может быть база данных, с которой вы работаете, была создана Access и использует специфичные для Access типы данных (которые обычно являются обычными типами данных Jet / ACE с расширенными атрибуты, например, поле гиперссылки, которое является мемо-полем с определенной настройкой, которая указывает Access, что это поле гиперссылки, а не просто обычное мемо-поле).   -  person David-W-Fenton    schedule 23.07.2009
comment
Да, я хочу использовать определенные типы данных MS Access. Если не ошибаюсь, совместим ли ACE с MS Access 2000-2007? Я пытаюсь сделать свою программу способной открывать базы данных MS Access 2000-2007. Так, например, если я открываю MS Access 2003, я хочу, чтобы моя программа могла использовать типы данных любых данных, специфичных для MS Access 2003. Если я открою базу данных MS Access 2007, это будет для типов данных любых данных для MS Access 2007 ...   -  person Partial    schedule 23.07.2009
comment
Я закрываю этот вопрос, потому что он был недостаточно тщательным, и я хочу узнать кое-что еще ... вот ссылка на новый вопрос: stackoverflow.com/questions/1172617   -  person Partial    schedule 23.07.2009


Ответы (2)


Я не думаю, что можно опросить движок во время выполнения, чтобы перечислить типы данных, которые он поддерживает. Например, DAO не раскрывает некоторые типы данных Jet 4.0, такие как NCHAR и BINARY; ADO покажет типы данных, которые никогда не поддерживались ядром базы данных Access; только ACEDAO покажет многозначные типы.

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

Типы данных Jet 4.0 (с Access2000 по 2003 включительно) и различные синонимы можно найти здесь (должен также дать некоторые подсказки о том, какие типы являются новыми для Jet 4.0, на случай, если вам потребуется поддержка более ранних версий движка).

ACE (Access2007) добавил тип вложения; также многозначные («сложные») типы для поддержки списков SharePoint: я думаю, вам нужно будет решить для себя, являются ли многозначные типы отдельными типами или просто вариациями существующих типов. Некоторые подробности можно найти в справке по Access2007.

person onedaywhen    schedule 22.07.2009
comment
Итак, вы говорите, что я должен добавить ссылку на ACEDAO и использовать ее? - person Partial; 23.07.2009
comment
Могу ли я использовать ACEDAO с MS Access 2000-2003 или только с MS Access 2007? - person Partial; 23.07.2009

Microsoft.Office.Interop.Access.Dao.DataTypeEnum

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

person David    schedule 22.07.2009
comment
DAO предоставит вам только типы данных до Access2000 плюс DECIMAL (но не значения масштаба и точности), например, Типы данных NCHAR и BINARY, начиная с Jet 4.0 (Access2000 и далее) или многозначные типы (начиная с Access2007). - person onedaywhen; 23.07.2009
comment
Нельзя ли использовать DAO с поздним связыванием, что означало бы, что вам не понадобится ссылка? Во-вторых, если вы работаете с файлами, созданными как в Access 2007, так и в более ранних версиях, вам потребуются проверки для конкретной версии DAO, поскольку DAO 3.6 (Jet 4.0 или Access 2000, 2002 и 2003) был заменен на Jet Специальная для / ACE версия DAO, которая поставлялась с Access 2007 и добавляла некоторые новые типы данных (не очень полезные - в основном для совместимости с Sharepoint). - person David-W-Fenton; 23.07.2009
comment
Невозможно использовать DAO с поздним связыванием - нет. DAO 3.6 не будет раскрывать типы данных NCHAR и двоичные. - person onedaywhen; 23.07.2009