Нижний Новгород |
ГЛАВНАЯ | НОВОСТИ | БАНКИ | ГОСТИНИЦЫ | КАФЕ | АФИША | НОВОСТИ IT | КОНСУЛЬТАЦИИ | РЕЦЕПТЫ |
|
Для того чтобы было понятно, для чего необходим переход от BDE к ADO, напишу небольшое пояснение. Моя работа связана с написанием оболочки для создания ГИС - геоинформационных систем. Таким образом, из красивой карты необходимо получить некоторые атрибутивные данные по каждому размещенному на карте объекту. Атрибутивные таблицы при этом не имеют какой-либо установленной структуры, лишь несколько предустановленных полей, невидимых пользователю, но используемых для записей в базе данных и связи объектов на карте.
Таким образом для хранения атрибутивной информации специальной был выбран формат MS Access, положительным моментом которого являлось хранение всех таблиц в одном файле, а также отсутствие требования включенного сервера. Ко всему прочему мне была необходима связь с файлами форматов dbf и db, используемых для загрузки и выгрузки данных БД. Так для написания программы была взята Delphi 4, в то же время для подключения к файлам базы данных применялась BDE. Такая ситуация устраивала всех, однако через некоторый период времени появились некоторые важные обстоятельства:
Появился MS Access 2000, с которым BDE категорически отказался работать. После продолжительных поисков информации, оказалось, что ей практически никто не владеет. Однако была найдена одна интересная особенность в поведении потоков BLOB под управлением Windows NT 4. Если необходим доступ к BLOB, а также полям таблиц в БД формата MS Access 97, то можно произвести подключение через BDE к MS Access 97. Впоследствии оказалось, что написанные таким образом исходники pascal, работают не всегда и не везде. В большинстве случаев коды отказываются корректно выполнять свои функции. Именно это и послужило причиной перехода с BDE на ADO.
В результате продолжительной работы над этим вопросом, я пришел к выводу, что обычный программист Pascal и Microsoft по разному смотрят на фразу «Обеспечивается доступ к данным». Так программист предполагает, что здесь предполагается просмотр данных и редактирование. Что же под такой фразой предполагает Microsoft невозможно догадаться, но на деле оказывается, что данные можно только просмотреть.
Для работы с ADO была взята самая последняя на тот момент версия с сайта Microsoft - ADO 2.6. Но и тут оказалось не все так просто. Для начала мы создали таблицу, в которую будут вноситься некоторые данные. Во время попытки использования данной таблицы, она начала требовать с пользователя какой-то ключ, хотя его-то мы и не задавали.
Далее мы попробовали сделать тоже самое, но в MS Access, все получилось отлично. Отсюда вывод, что в ADO мы делаем что-то не так. После долгих поисков в ADO SDK, нашлось некоторое объяснение: ADO предполагает, что в самой таблице не будет повторяющихся записей.
Для решения проблемы возникла идея добавления дополнительного поля, где каждая запись будет однозначно определена – своего рода внутренний идентификатор. Не думая о его содержимом, мы сделали автоинкрементное поле, на которое и создали первичный ключ. На первый взгляд все работало. Далее мы добавили еще несколько подобных полей. В результате увидели замечательную картину: содержимое Internal_ID для каждой записи было равно нулю, хотя такого просто не должно быть. Только закрытие и новое открытие таблицы приводит к нужному результату.
Далее мы попробовали сделать тоже самое в MS Access 2000 с помощью Pascal, в котором все работало отлично. В результате можно было сделать однозначный вывод: Microsoft активно, причем в добровольно-принудительном порядке, используя все доступные средства, пытается заставить переходить на свои новые программы.
Все новости рубрики новости телекоммуникаций за сегодня
© 1996-2012 INNOV.RU (Иннов.ру), ООО «Иннов», г. Нижний Новгород Свидетельство РОСКОМНАДЗОРА ИА № ТУ 52-0604 от 29 февраля 2012 г. Дизайн-студия «Иннов» - продвижение и cоздание сайтов |