Библиотека Рефераты Курсовые Дипломы Поиск
Библиотека Рефераты Курсовые Дипломы Поиск
сделать стартовой добавить в избранное
Кефирный гриб на сайте www.za4et.net.ru

Компьютеры, Программирование Компьютеры, Программирование     Программное обеспечение Программное обеспечение

Опыт использования ADO для доступа к базам данных форматов MS Access, xBase и Paradox

Ночник-проектор "Звездное небо, планеты", черный.
Оригинальный светильник-ночник-проектор. Корпус поворачивается от руки. Источник света: 1) Лампочка (от карманных фанариков); 2) Три
350 руб
Раздел: Ночники
Карабин, 6x60 мм.
Размеры: 6x60 мм. Материал: металл. Упаковка: блистер.
44 руб
Раздел: Карабины для ошейников и поводков
Брелок LED "Лампочка" классическая.
Брелок работает в двух автоматических режимах и горит в разных цветовых гаммах. Материал: металл, акрил. Для работы нужны 3 батарейки
131 руб
Раздел: Металлические брелоки

Иванов Денис Михайлович Подвигло меня на написание этой статьи то обстоятельство, что когда я приступал к этой работе (я имею в виду использование ADO), я размещал свои вопросы во многих конференциях, а ответов на них не получено до сих пор и, более того, эти же вопросы стали задаваться по новой, а ответов на них как не было, так и нет. На некоторые из них я отвечал, а потом подумал, что не все будут просматривать конференцию целиком, да и когда все сведено в одном месте оно и лучше. Кроме того, толковой литературы по использованию ADO практически нет никакой. Например, мне не удалось найти в солидных по объему книгах г-на Архангельского необходимую мне информацию. Или еще пример - Microsof Press 'Справочник по OLE DB'. Здесь другой уклон - информации много, слишком много, а примеров никаких (но это вообще проблема справок от Microsof - написано много, а примеров использования почти нет). Надеюсь, что те сведения, которые я приведу здесь, помогут коллегам по цеху в решении его задач.   Причины перехода от BDE к ADO Итак, чтобы было понятно что к чему, сначала поясню, зачем же понадобился переход к ADO. Я работаю программистом в компании, которая занимается написанием оболочки для создания геоинформационных систем (ГИС). То есть имеется некая красивая карта и необходимо получение каких-то атрибутивных данных по объектам на этой карте размещенным. При этом атрибутивные таблицы не имеют заранее установленной структуры - только некие предустановленные поля, которых пользователь не видит, но которые используются для связи объектов на карте и записей в базе данных. Итак, для хранения атрибутивной информации был выбран формат MS Access, который имеет то обстоятельство, что все таблицы хранятся в одном файле (в отличие от Paradox и Dbase) и не требует при этом запущенного сервера, как, к примеру, I erbase. Необходима также связь с файлами форматов dbf и db для загрузки/выгрузки данных в/из БД. Для написания программы мы используем Delphi 4, а для подключения к файлам БД использовалась BDE. И все это было отлично, но вот появились два важных обстоятельства: Вышел MS Access 2000. BDE отказывается работать с этим форматом. Как мне удалось найти ответ после долгих поисков на сайте I prise - I prise не знает как производить коннект к этому формату. Цитата: 'Для доступа к данным MS Access мы используем DAO 2.5, который не может работать с форматом MS Access 2000. Если Вам необходим доступ к БД формата MS Access 2000, используйте, пожалуйста, компоненты ADO Delphi 5. По нашей (возможно неверной) информации причина здесь в отсутствии официальной документации от Microsof . 2. Была найдена интересная особенность поведения BLOB потоков под управлением Wi dows 4. Допустим, нам необходим доступ к BLOB полям таблиц в БД формата MS Access 97. Как произвести подключение через BDE к MS Access 97 я говорить не буду, т.к. многие знают, а кто не знает, тот легко найдет эту информацию. Итак, подключение произведено. Отлично. Вот фрагмент программы: Var AS ream: BLOBS ream; Da a: I eger; Begi // Открываем таблицу (обычный able) A able.Ope ; // Создаем поток.

AS ream := // Что-либо читаем из него. AS ream.Read(Da a, SizeOf(Da a)); // Освобождаем поток и закрываем таблицу. AS ream.Free; A able.Close; E d; Казалось бы - абсолютно тривиальный код. НО! Строка, где производится чтение из потока, вызывает исключительную ситуацию - 'Ex er al error - EEFFACE'. И в исходных текстах VCL от Delphi 5 мы находим потрясающее объяснение - это, оказывается, 'C Excep io '. Интересно, а при чем тут C ? Единственный ответ, какой я знаю, - Delphi написана на C . Плюс ко всему, если вы запускаете эту программу из-под Delphi - ошибка не возникает, а если запускаете ее прямо в Wi dows - ошибка будет непременно. Я дошел в своих поисках до вызовов прямых вызовов BDE API - вот там-то ошибка и возникает, так что я думаю тут очередная ошибка BDE, хотя я использовал на тот момент самую последнюю версию с сайта I prise - BDE 5.11. Так что, господа, если Вы используете нечто подобное в своих программах, то знайте, что под Wi dows 4.0/Wi dows 2000 Ваши программы работать не будут. Самое интересное, что компоненты из библиотеки VCL, которые используют подобный метод для получения данных (к примеру, DBRichEdi ) тоже не работают! Итак, этих двух причин оказалось достаточно для нашей фирмы, чтобы начать переход от BDE к ADO.   ADO и файлы формата MS Access К чему я привел эту цитату - в результате всей этой работы я пришел к выводу, что у нас, программистов, и у Microsof разный взгляд на фразу 'Обеспечивается доступ к данным'. Мы (ну или, по крайней мере, я) в этой фразе видим следующее содержание 'обеспечивается доступ к данным для их просмотра и РЕДАКТИРОВАНИЯ (т.е. редактирование, удаление и добавление новых данных)'. Что имеет в виду Microsof можно только догадываться, но явно, что без особых проблем достигается только просмотр данных. Кроме того, практически все примеры в литературе ограничиваются получением данных именно для просмотра, после чего следует несколько бодрых фраз и все заканчивается. Как говорится выше - разные точки зрения Итак, прежде всего, работа была ограничена условием разработки в Delphi 4. Причин этому много, но к этой статье это отношения не имеет. Просто - программа, разработанная в Delphi 4 должна работать через ADO. Поэтому приступили к поиску компонент, обеспечивающих такую работу. Нашли их довольно много, как платных, так и бесплатных. Все, что будет написано, одинаково и для всех вариантов и даже для Delphi5. Исключение составляет только работа с закладками в Delphi 5. ADO была взята на тот момент самая последняя версия с сайта Microsof - это ADO 2.6. Итак, возьмем файл mdb формата MS Access 97. Его можно сделать с помощью хотя бы самого Access. И создадим там небольшую таблицу, к примеру, такую: Objec ID I eger - идентификатор объекта на карте Objec Descrip io ex (50) - описание объекта на карте Введем туда какие-либо данные (абсолютно все равно какие). Только надо учесть, что в силу специфики работы у нас могут быть описания, которым пока объекты не соответствуют. Такая связка будет выполнена позже пользователем. Ну, попробуем вывести содержимое таблицы в DBGrid. Ага, получилось.

Например, как на картинке: Вроде как все нормально и доступ к данным мы получили. А теперь давайте, вообразим себя пользователями и попробуем что-нибудь исправить или добавить. Например, добавим несколько пустых записей и попробуем внести туда данные. Добавляем. Нормально. Теперь внесем данные и нажмем POS . И что мы видим? Ага. Интересно, а при чем тут ключ, если у нас на таблицу ключ не наложен? Пробуем добавить новую запись, удалить запись без Objec ID. Результат одинаков - все то же сообщение об ошибке. И что же делать? Запускаем MS Access, пробуем там, и видим, что там все отлично. Стало быть, что-то не так мы делаем с ADO. И тут мы вспоминаем, что когда мы создавали таблицу в MS Access, он предлагал создать ключевые поля для этой таблицы. А после долгих поисков в ADO SDK я нашел этому такое объяснение: ADO предполагает, что таблица будет в первой нормальной форме. Если кто не помнит главное требование первой формы - отсутствие повторяющихся записей. В данном случае мы не можем создать ключ на то, что есть. Что же делать? И тут приходит на ум простое решение: добавим еще одно поле, чтобы каждая запись была однозначно определена (т.е. некий внутренний идентификатор). Чтобы не думать о содержимом этого нового поля, делаем совсем просто - пусть это будет автоинкрементное поле, и создадим на него первичный ключ. Отлично! Делаем - все работает. Пока мы не добавляем больше одной записи. Если мы их добавим подряд несколько, мы увидим очень интересную ситуацию как на картинке. Что здесь интересного? А то, что содержимое I er al ID для всех этих записей равно нулю, хотя это автоинкрементное поле! И able.Refresh здесь не помогает! Только закрытие и последующее открытие таблицы приводит к тому, что мы видим то, что и ожидалось. А пока мы не имеем правильных идентификаторов, наличие такого поля не дает ничего. Выше приведенные ошибки будут продолжать сыпаться как из рога изобилия. Но вот только закрывать - открывать таблицу каждый раз после добавления новой записи для того, чтобы автоинкрементное поле принимало правильные значения - это сильно. Так не пойдет. Вот так ADO, подумал я, а давай-ка попробуем MS Access 2000. И тут оказалось, что там все нормально работает: добавляем запись, делаем сохранение (Pos ) автоинкрементное поле тут же принимает правильное значение. В результате я могу сделать только один вывод - Microsof активно, всеми доступными средствами, пытается заставить пользователей переходить к своим новым продуктам. А вот почему в Access все нормально работает - это загадка. Я думаю, что сам-то он пользуется какими-то своими методами, либо в процессе работы у него есть некий идентификатор записи типа только что придуманного нами. Ну а чтобы пользователь не видел этого внутреннего идентификатора (он ведь нужен только нам) делаем это поле невидимым. Надеюсь, что все знают, что это делается через Field.Visible := FALSE. Кто-нибудь может возразить: а зачем нам такой идентификатор, мы можем записи идентифицировать по каким-нибудь своим полям. Ради Бога! Но тут есть еще одна проблема и эта проблема называется закладки.

Другая проблема DB2/400 (как и любой другой базы данных) обработка сложных типов данных, таких как объекты. При повсеместном переходе на использование распределенных объектов, база данных должна будет работать с этими абстрактными типами данных. Хотя крайне маловероятно, что кто-либо из основных производителей баз данных до конца столетия откажется от реляционной модели в пользу полностью объектно-ориентированной, все же нужно работать на опережение. Несмотря на то, что в данной области по-прежнему нет стандартов, организации типа OMG вносят предложения по методам хранения объектов или их компонентов в реляционной базе данных с возможностью выборки через систему управления объектно-ориентированной базой данных. IBM также рассматривает аналогичные предложения по базе DB2. Если эти предложения будут приняты, мы их реализуем. DB2/400 будет оставаться опорой для приложений AS/400 в версии 4. В базы данных AS/400 будут внесены изменения, повышающие производительность и расширяющие функциональные возможности как больших, так и малых баз данных

1. Использование системы управления базами данных Acceess при ведении бухгалтерского учета затрат на производство

2. Работа с базами данных в MS Excel

3. Создание баз данных в Microsoft Access

4. Бази даних в Excel, Access з викликами на VBA

5. Использование Internet/intranet технологий для организации доступа к базам данных

6. Организация Web-доступа к базам данных с использованием SQL-запросов
7. Форматы баз данных в автоматизированных библиографических системах
8. Принципы проектирования и использования многомерных баз данных

9. Организация удаленного доступа к распределенным базам данных

10. Организация доступа к базам данных в Интернет

11. Система баз данных MS Access

12. Разработка базы данных «Магазин бытовой техники “Электрон” средствами СУБД MS Access»

13. База данных MS Access

14. Информационные технологии создания и обработки баз данных с помощью MS Access XP

15. Проектирование баз данных MS Access

16. Проектирование, создание и управление базой данных «Переплетная мастерская» в пакете MS Access

Форма разъемная "Webber" BE-4286N, черная.
Материал: сталь. Покрытие: антипригарное. Высота: 6,8 см. Диаметр: 24 см.
314 руб
Раздел: Формы и формочки для выпечки
Багетная рама "Isabelle" (золотой), 30х40 см.
Багетные рамы предназначены для оформления картин, вышивок и фотографий. Оформленное изделие всегда становится более выразительным и
651 руб
Раздел: Размер 30x40
Набор для черчения "College", 9 предметов.
В набор входит: циркуль 14 см с одной сгибаемой ножкой, циркуль - измеритель, удлинитель, кронциркуль, механический карандаш, контейнер с
539 руб
Раздел: Циркули, чертежные инструменты

17. Разработка проводной локальной сети и удаленного доступа к данной сети с использованием беспроводной сети (Wi-Fi)

18. Система баз данных MS Access

19. Табличный процессор Excel. Система управления базой данных MS Access. Векторный редактор CorelDraw

20. Базы данных и их использование

21. Базы данных в Internet

22. Пример базы данных на Delphi 2.0
23. Реляционные Базы Данных. SQL - стандартный язык реляционных баз данных
24. Примеры баз данных (Студенческая группа)

25. Современные системы управления базами данных

26. Создание и описание базы данных "СТУДЕНТЫ" (Отчет по курсу "Базы данных")

27. Использование макросов для программирования в MS ACCESS

28. Базы данных Microsoft Access

29. Лекции по теории проектирования баз данных (БД)

30. Разработка базы данных

31. Система управления базами данных ACCESS

32. База данных - Бактериологическая испытательная лаборатория Боханского района

Бумага крафт, без печати (10 листов).
Размер: 100x70 см. Плотность бумаги 70 г/кв.м.
495 руб
Раздел: Однотонная, голография
Комплект чехлов "Карапуз" для колясок с поворотными колесами.
Чехлы для колясок с поворотными колесами. Изготовлены из водонепроницаемой ткани. Диаметр передних поворотных колес 25 см, задних 32 см.
323 руб
Раздел: Чехлы для колес
Набор детской посуды "Тачки. Дисней", 3 предмета.
Детский набор посуды "Тачки" сочетает в себе изысканный дизайн с максимальной функциональностью. Предметы набора выполнены из
447 руб
Раздел: Наборы для кормления

33. Создание базы данных "Библиотека"

34. Разработка рисунка настенного календаря с помощью графического редактора CorelDRAW. Создание базы данных «Туристических фирм г. Минска» с помощью пакета программ Access

35. Классификация баз данных

36. Системы принятия решений, оптимизация в Excel и базы данных Access

37. HTML и базы данных

38. Работа в среде EXCEL. Средства управления базами данных в EXCEL
39. Опыт использования ЭВМ на уроках математики
40. Опыт использования информационых технологий

41. База данных страховой компании

42. База данных

43. Система управления базой данных объектов гражданской обороны для принятия решений в чрезвычайной ситуации (Диплом)

44. Visual C++. Бази даних Укр.

45. Ответы на теоретические вопросы по предмету База данных

46. Инфологическая модель баз данных "Сущность-связь"

47. Пример проектирования базы данных "Библиотека"

48. Основы работы с базами данных Delphi

Настольная игра "Колорама".
Ты знаешь цвета и формы? Красные круги, желтые четырехугольники, синие треугольники - пестрая неразбериха! На костях выброшен квадрат и
1363 руб
Раздел: Классические игры
Фломастеры "Замок", 50 цветов.
Количество цветов: 50. Очень качественные фломастеры. Чернила на водной основе и натуральных красителях. Яркие, насыщенные
761 руб
Раздел: Более 24 цветов
Средство для мытья люстр "UNiCUM", 500 мл.
Бесконтактная 4D-технология и специальная формула "Diamond" позволяет мгновенно вымыть люстру не прикасаясь к ней руками. Без
381 руб
Раздел: Для стекол, зеркал

49. Параллельные машины баз данных

50. Инфологическое моделирование базы данных

51. Базы данных и знаний

52. Web-серверы, базы данных в Интернет, Поиск информации в Интернет, Основные системы и средства

53. База данных Бюро знакомств

54. Базы данных. Создание форм и отчетов (на примере ACCESS)
55. Иерархические структуры в реляционных базах данных
56. Операционная среда Windows. База данных Microsoft Access

57. Перенос Базы Данных на WEB-сервер

58. Работа с базами данных

59. Реляционные базы данных

60. Создание базы данных в интегральном пакете Works

61. Создание учебной базы данных Телефонный справочник в Access 97

62. Формирование базы данных

63. Некоторые аспекты обеспечения эффективности работы системы управления базами данных

64. Манифест систем объектно-ориентированных баз данных

Магнитные истории "Кто где живет?".
Игра магнитные истории "Кто где живет?" поможет малышу познать окружающий мир, развить внимательность и память, развить мелкую
499 руб
Раздел: Игры на магнитах
Игровой набор "Весы".
Размер: 280х122х130 мм.
338 руб
Раздел: Кассы, весы, игрушечные деньги
Набор для творчества "Свечи".
С помощью этого набора дети научатся делать настоящие восковые свечи своими руками. Оригинальные свечи будут красивым дополнением к
894 руб
Раздел: Наборы по изготовлению свечей

65. Работа с базами данных

66. Создание файла и таблиц базы данных мастером и по заданной логической модели

67. Современные системы управления базами данных

68. HTML и базы данных

69. Создание базы данных «расписание»

70. Проектирование Базы Данных для коммерческого предприятия
71. Проблемы совместного доступа к данным в Oracle
72. Расчет экономической эффективности и срока окупаемости программы «База данных по учету табельного времени»

73. Правовая охрана программ для ЭВМ и баз данных

74. Автоматизация базы данных для ООО "ОриенБанк"

75. База даних клієнтів і замовлень

76. База даних по обліку вогнепальної зброї

77. База даних по приватних підприємствах регіону

78. База даних фільмотеки: розробка проекту

79. База данных

80. База данных "Автосервис" в среде Borland Delphi 6.0.

Стиральный порошок Attack "Multi-Action", концентрированный, с кислородным пятновыводителем, 0,81.
Концентрированный стиральный порошок Attack "Multi-Action" с активным кислородным пятновыводителем и кондиционером подходит для
342 руб
Раздел: Стиральные порошки
Горка детская.
Представляем вашему вниманию прочную детскую горку из пластика. Высокие бортики и устойчивое основание конструкции делают ее не только
1450 руб
Раздел: Горки
Конструктор "Транспорт".
Конструктор «Транспорт» - набор всевозможных машинок и элементов, имеющих отношение к транспорту, в т.ч. зданий (вокзал, милиция, заправка
561 руб
Раздел: Деревянные конструкторы

81. База данных "Библиотека"

82. База данных "Пассажирские железнодорожные перевозки"

83. База данных "Сотрудники"

84. База данных "Учет готовой продукции на складе"

85. База данных аптеки готовых лекарственных форм

86. База данных велосипедного магазина
87. База данных для организации по продаже канцелярских товаров
88. База данных заместителя директора по воспитательной работе приюта г. Аксу

89. База данных компьютерного магазина

90. База данных по учету металлопродукции на платформе SQL Server

91. База данных предприятия

92. База данных станции технического обслуживания автомобилей

93. База данных: "Деканат: дистанционное обучение"

94. Базы данных

95. Базы данных

96. Базы данных и информационные технологии

Настольная семейная игра "Усачи".
Весёлая игра на реакцию. Каждый игрок берёт усы на специальной палочке с присоской. Сдающий переворачивает по одной карте из колоды. На
445 руб
Раздел: Игры на ловкость
Синтетическое средство для стирки белья с ферментами для лучшего отстирывания "Топ", 900 г.
Синтетическое средство для стирки белья подходит как для ручной, так и для автоматической стирки белья из натуральных, смесовых и
342 руб
Раздел: Стиральные порошки
Кружка керамическая "FIFA 2018", 350 мл.
Объем: 350 мл. Материал: керамика.
769 руб
Раздел: Кружки, посуда

97. Базы данных и управление ими

98. Восстановление базы данных

99. Инфологическая модель базы данных "Паспортный учет"


Поиск Рефератов на сайте za4eti.ru Вы студент, и у Вас нет времени на выполнение письменных работ (рефератов, курсовых и дипломов)? Мы сможем Вам в этом помочь. Возможно, Вам подойдет что-то из ПЕРЕЧНЯ ПРЕДМЕТОВ И ДИСЦИПЛИН, ПО КОТОРЫМ ВЫПОЛНЯЮТСЯ РЕФЕРАТЫ, КУРСОВЫЕ И ДИПЛОМНЫЕ РАБОТЫ. 
Вы можете поискать нужную Вам работу в КОЛЛЕКЦИИ ГОТОВЫХ РЕФЕРАТОВ, КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ, выполненных преподавателями московских ВУЗов за период более чем 10-летней работы. Эти работы Вы можете бесплатно СКАЧАТЬ.