Set Catalog.ActiveConnection = Nothing // освобождение памяти, выделенной объекту
// Catalog.ActiveConnection
End Sub
После запуска этого модуля мы получили таблицу «Заказчики» с полями «КодЗаказчика» (ключевое поле), «Название», «КонтактноеЛицо» и «Телефон». При необходимости, изменить параметры этой таблицы можно с помощью, ранее применявшегося, конструктора таблиц (рис.23.):
Рис.23. Конструктор таблицы «Заказчики».
Схема данных:
В окне схемы данных мы осуществили настройку связей между таблицами. Опция обеспечения целостности данных, включая каскадное удаление и обновление записей, установлена для всех связей, кроме связи Заказано.КодСемейства -> Микроконтроллеры.Код, поскольку удаление микроконтроллера из «Заказано» с целью отмены его покупки повлечет за собой удаление записи из «Микроконтроллеры». Отменяя заказ, мы не должны удалять сам микроконтроллер из базы данных, и поэтому устанавливать каскадное удаление записей нежелательно. Обновление (например, поступление новой модели микроконтроллера или оформление нового заказа) тоже не играет роли для уже совершенного заказа или существующего микроконтроллера. А целостность данных остается включенной для предупреждения попытки заказа несуществующей модели микроконтроллера.
Создание запросов:
На данном этапе нам необходимо создать ряд запросов для просмотра, изменения и анализа данных различными способами. При большом количестве данных запросы являются неотъемлемой частью физической структуры базы данных, поскольку позволяют сориентировать пользователя на поиск и выделение необходимой ему информации. В нашем случае создание запросов производилось с помощью конструктора запросов и встроенного редактора SQL-выражений.
1) Запрос на поиск микроконтроллеров с указанными параметрами, как и любой другой запрос с параметрами направлен на поиск и изменение информации, соответствующей значениям, вводимым пользователем в диалоговом окне. В дальнейшем, в разделе «Разработка интерфейса пользователя» будет описан процесс создания формы для данного запроса (именно поэтому в условиях поиска запроса присутствуют ссылки на текстовые блоки «Главной формы поиска»), а пока остановимся на механизме работы данного запроса.
В структуре создаваемой базы данных этот запрос разделен на 4 запроса относительно разрядности микроконтроллеров, поскольку, как уже было замечено ранее, некоторые характеристики устройств отличаются в зависимости от разрядности. На примере «Основного запроса по 32-разрядным микроконтроллерам» рассмотрим механизм работы этих запросов:
«Основной запрос по 32-разрядным микроконтроллерам»
Исходный текст запроса на SQL:
SELECT [32-разрядные МК].Производитель, [32-разрядные МК].НазваниеУстройстваСемейство,
[32-разрядные МК].Архитектура, [32-разрядные МК].ТактоваяЧастотаПроцессора,
[32-разрядные МК].ИнтерфейсШины, [32-разрядные МК].ШиринаИнструкции,
[32-разрядные МК].[Номинальные напряжения], [32-разрядные МК].НоминальнаяМощность,
[32-разрядные МК].РежимыПониженного, [32-разрядные МК].DSPsupport, [32-разрядные МК].FPU,
[32-разрядные МК].Кэш, [Комплекты памяти (32)].Объем_SRAM,
[Комплекты памяти( 32)].Объем_Flash, [Комплекты памяти (32)].Объем_DPRAM,
[Комплекты памяти (32)].Объем_ROM, [Комплекты памяти (32)].Объем_маск_ROM,
[Комплекты памяти (32)].Объем_EEPROM, [Комплекты памяти (32)].Объем_RAM,
[Комплекты памяти (32)].MTP, [Комплекты памяти (32)].XYmemory, [Комплекты памяти (32)].L2,
[Комплекты памяти (32)].Контроллер_памяти, [Комплекты памяти (32)].MMU,
[Комплекты корпусов (32)].Тип_корпуса, [Комплекты корпусов (32)].Число_выводов,
[Комплекты корпусов (32)].ДопСвед, [Комплекты таймеров (32)].Число_16бит,
[Комплекты таймеров (32)].Число_32бит, [Комплекты таймеров (32)].ФункцТаймеры,
[Комплекты АЦП/ЦАП (32)].КоличествоАЦП, [Комплекты АЦП/ЦАП (32)].РазрядностьАЦП,
[Комплекты АЦП/ЦАП (32)].ЧислоКаналовАЦП, [Комплекты АЦП/ЦАП (32)].КоличествоЦАП,
[Комплекты АЦП/ЦАП (32)].РазрядностьЦАП, [Комплекты АЦП/ЦАП (32)].ДопСвед,
[32-разрядные МК].Последователный_Параллельный, [32-разрядные МК].Прерывания,
[32- разрядные МК].ТемпературныйИнтервал, [32-разрядные МК].ДополнительныеВозможности,
[32-разрядные МК].Стоимость, [Комплекты АЦП/ЦАП (32)].ЧислоКаналовЦАП
FROM [Комплекты таймеров (32)] INNER JOIN ([Комплекты памяти (32)] INNER JOIN ([Комплекты
корпусов (32)] INNER JOIN ([Комплекты АЦП/ЦАП (32)] INNER JOIN [32-разрядные МК] ON
[Комплекты АЦП/ЦАП (32)].АЦП_ЦАП_комплект = [32-разрядные МК].АЦП_ЦАП_комплект) ON
[Комплекты корпусов (32)].Корпус_комплект = [32-разрядные МК].Корпус_комплект) ON
[Комплекты памяти (32)].Память_комплект = [32-разрядные МК].Память_комплект) ON
[Комплекты таймеров (32)].Таймеры_комплект = [32-разрядные МК].Таймеры_комплект
WHERE ((([32-разрядные МК].ТактоваяЧастотаПроцессора)>=([Forms]![Главная форма
поиска]![MCfrequency])) AND (([32-разрядные МК].ШиринаИнструкции)<=([Forms]![Главная
форма поиска]![MCInstrWith])) AND (([32-разрядные
МК].НоминальнаяМощность)<=[Forms]![Главная форма поиска]![MCPower]) AND (([Комплекты
памяти (32)].Объем_SRAM)>=[Forms]![Главная форма поиска]![MCSRAM]) AND (([Комплекты
памяти (32)].Объем_Flash)>=[Forms]![Главная форма поиска]![MCFlash]) AND (([Комплекты памяти
(32)].Объем_ROM)>=[Forms]![Главная форма поиска]![MCROM]) AND (([Комплекты памяти
(32)].Объем_маск_ROM)>=[Forms]![Главная форма поиска]![MCmaskedROM]) AND (([Комплекты
памяти (32)].Объем_EEPROM)>=[Forms]![Главная форма поиска]![MCEEPROM]) AND
(([Комплекты памяти (32)].Объем_RAM)>=[Forms]![Главная форма поиска]![MCRAM]) AND
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.