Форум программистов, компьютерный форум, киберфорум
Alex_pac
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

сравнение форматов баз данных MS Access

Запись от Alex_pac размещена 27.05.2012 в 02:20
Показов 9349 Комментарии 0
Метки delphi, ms access

сравнение форматов баз данных MS Access

начну с того какие новые функции появились в *.ACCDB

Новые возможности формата файлов Office Access 2007

Поля подстановок, одновременно допускающие несколько значений
Большая часть программ баз данных, включая ранние версии Access, позволяли хранить одиночные значения в каждом поле. В Office Access 2007 можно создавать поля подстановок, которые содержат одновременно более одного значения в поле. Это создает отношения «многие ко многим» внутри поля и скрывает детали реализации в системных таблицах.

Тип данных «Вложение»

Новый тип данных «Вложение» позволяет хранить документы и двоичные файлы любых типов в базе данных без излишнего увеличения ее объема. Чтобы уменьшить общий объем хранимых данных, вложения автоматически сжимаются, если это возможно.

Интеграция с Windows SharePoint Services 3.0 и Microsoft Office Outlook 2007

Работа с автономными списками SharePoint

Отслеживание истории поля MEMO
Поля MEMO полезны для хранения больших объемов информации. При работе с Office Access 2007 можно задать свойство (Только добавление(AppendOnly)), при котором приложение Access сохраняет историю всех изменений поля MEMO.
если так посмотреть то с точки зрения Конструирования БД ничем не отличает от MDB

Поскольку обе базы являются локальными БД то производительность ACCDB даже если и будет выше, то не намного.
Исходя из этого можно сделать вывод что существенной разницы между MDB и ACCDB как между Базами данных нет.

теперь посмотрим на специфику подключения баз данных.

доступ к ACCDB осуществляется через
MS Office 12.0 Access DB Engine

MDB может работаь как через
MS Office 12.0 Access DB Engine
так и через
MS Jet 4.0 OLE DB

последний причем работает только в x86 Windows ОС

итак в чем же главная разница?
а дело все в том что эти драйверы по-разному указывают тип данных полей для Delphi, если вычисляемое поле находится внутри SQL запроса,
а не вычисляется внутри Delphi

итак возмем базу в формате MDB (разницы нет ибо дело в драйвере)
таблица tt

Нажмите на изображение для увеличения
Название: 4e56436edd71d.jpg
Просмотров: 544
Размер:	9.8 Кб
ID:	711

тип полей ttt и ttt2 являются строковыми до 255 символов

теперь создадим проект в Delphi подключим базу через драйвер
MS Office 12.0 Access DB Engine

Нажмите на изображение для увеличения
Название: 4e56442d2a1ba.jpg
Просмотров: 442
Размер:	18.9 Кб
ID:	712

напишем SQL запрос
и поместим его в ADOQuery
Название: 4e5644ef3d193.jpg
Просмотров: 1372

Размер: 12.7 Кб

и теперь самое интересное
угадайте какой тип поля получит колонка в датасете?
TWideMemo !!!
то есть из универсальной безопасной строки мы получили MEMO поле которое нужно еще дополнительно преобразовывать в Delphi чтобы отобразить в Гриде например
Название: 4e5645a419e54.jpg
Просмотров: 1211

Размер: 13.1 Кб

а теперь посмотрим что нам покажет другой драйвер
MS Jet 4.0 OLE DB
переподключаем базу

после переподключения базы и попытке активации AdoQuery получаем следующее

Нажмите на изображение для увеличения
Название: 4e5646b6656a9.jpg
Просмотров: 644
Размер:	13.4 Кб
ID:	715

что означает что драйвер регистрирует поле другим типом данных TWideString
удалим поле и создадим заново
Название: 4e5648513fcc0.jpg
Просмотров: 1338

Размер: 11.1 Кб

получим тип поля TWideString который более гибкий чем TWideMemo

Можно было закрыть глаза на эти несовметимости, однако есть самый существенный баг который ставит крест на использовании ACCDB
это несовместимость драйвера в офисе 2007 с драйвером 2010
То есть один и тот же драйве баз данных
MS Office 12.0 Access DB Engine
в разных версиях офиса возвращает разные типы полей для delphi

в 2007 этот запрос на поле tt3 вернет TWideString как и старый MS Jet4
а вот в 2010 уже будет Memo поле.

то есть получаем что программа написанная с использованием ACCDB на том или ином офисе будет вылетать изза того что один и тот же драйвер в разных офисах себя по-разному ведет.

выход из этой ситуации это использовать для доступа MS Jet4.0 и формат MDB который не зависит от офиса и работать будет везде.

ДОПОЛНЕНИЕ

как сохранить базу данных *.accdb в формате *.mdb через Access 2010?

нажимаем "файл"-->"Сохранить и опубликовать"
Выбираем там нужный формат и сохраняем.

Нажмите на изображение для увеличения
Название: 4dee465d15472.jpg
Просмотров: 598
Размер:	80.9 Кб
ID:	717

Также для драйвера
MS Office 12.0 Access DB Engine
можно приклеплять с приложением этот сам драйвер, чтобы даже если офис отсуствует или он не той версии чтобы приложение работало.
http://www.microsoft.com/downl... x?id=13255
работает как 2010 (TWideMemo) как mdb так и accdb
Метки delphi, ms access
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru