А.Ю. Гончаров Access 2003 (960524), страница 22
Текст из файла (страница 22)
Возможности алгоритмическогообновления данных заложены в запросы Access изначально, поэтому правилосоздания таких запросов предельно простое: сначала создается обычный запрос,а затем в его бланке заполняется строка «Обновление».,Г" :Toiapw • таблица]| Единица измеренияТип+ Приправы* Кондитерские изделия+ Мясо/птица* Рыбопродукты* Кондитерские изделия* Кондитерские изделия+ Кондитерские изделия+Хлебобулочные изделия+Хлебобулочные изделияЗэткь: LMJ<|24 бутылки по 250 мл32 коробки по 500 г20 банок по 1 кг18 кг упаковка10 коробок по 12 шт30 коробок24 упаковки по 4 шт.24 упаковки по 500 г12 упаковок по 250 г."I, 31Цена | ha складе | Ожидается | Минимальный з^пас] Г697,50р.3905785,25р.2S0ID1 755.00р.0002812,50р.4200414,00р.25053645,00р.40050450,00р.3405945,00р.104025405, ООр061251 LLJllLI'i*] Hi ?9-*;>Рис.
5.26, Таблица Товары базы данных «Борей»Для того чтобы внести изменения не во все записи, а только в те, где это необходимо, в бланке запроса нужно сформулировать условие отбора. На рис. 5.26 показана таблица с данными о товарах. Для товаров из категории «Кондитерскиеизделия» значение минимального запаса увеличим на десять процентов. Последовательность действий будет такая:1.Создадим запрос с помощью мастера простого запроса и добавим в него таблицуТовары, выбрав поля КодТипа и МинимальныйЗапас.2. Откроем запрос в режиме конструктора.Запросы3. По таблице Типы определим, какой код соответствует типу «Кондитерскиеизделия» - 3.4. В запросе для поля Код Типа введем условие отбора: =3.5.
Выберем из списка Тип запроса элемент «Обновление». В бланке появитсястрока «Обновление».6.Для поля МинимапьныйЗапас в строке «Обновление» введем формулу:lnt( [МинимальныйЗапас] * 1,1)7.Просмотреть данные, подвергающиеся обновлению (одно поле), можно, еслипереключить запрос в режим таблицы (командой Вид ==> Режим таблицы).Кнопка Запуск (с красным восклицательным знаком) позволяет выполнитьобновление в режиме конструктора (рис.
5.27).„J Товары_нзмененне минимального запаса: запрос на обновлениеКодТоиараМаркаКод ПоставТнлаПопе: КодТипаИмя таблицы: ТоварыОбновление:Условие отбора:М и н н м зл ьньйЗаласТоварыInt ([Минина л »ныйЗаг1эс]*1Лили:Рис. 5.27. Запрос на обновление в режиме конструктора^После выполнения запроса можно открыть таблицу Товары и убедиться, чтозначения минимального запаса для выбранного типа товаров действительно изменились (где было, к примеру, 10, станет 11). Поскольку величины в этом полеявляются целыми (нельзя хранить на складе 0.3 коробки конфет), в формуле использована функция округления до целого IntQ.
В формуле использовано такжеимя поля МинимальныйЗапас из самого запроса, а не из таблицы (этого вполне достаточно). При необходимости запрос можно сохранить и, изменив параметры набланке, выполнить другое обновление.122Г лава 5Запрос на удалениеЗапросы служат не только для выборки данных из таблиц. Существует рядопераций по автоматизированному редактированию данных, в которых запросынезаменимы. Например, удаление большого числа записей из таблицы.
Здесьошибки оператора могут привести к потере нужных данных, а результат выполнения такой операции трудно проконтролировать. Намного проще эта же задачарешается программным путем. Для автоматизации удаления должно быть выполнено одно условие - оператор обязан определить условие отбора записей для удаления как логическое выражение.После того как рассмотрены два предыдущих примера, совсем просто объяснить, как выполнить запрос на удаление. Уже понятно, что такой запрос позволить исключит из таблицы (или из связанных таблиц) записи, удовлетворяющиенекоторому условию. Алгоритм запроса следующий:1.
Создайте запрос и включите в него нужную таблицу.2. Перенесите в бланк запроса поля, для которых должно быть сформулированоусловие отбора.3. Выберите из списка Тип запроса элемент «Удаление». В бланке появитсястрока «Удаление».4. Заполните строку «Условие отбора» так, чтобы были отобраны только те записи, которые надо удалить.5. Для просмотра записей, которые будут удалены, выберите команду Вид =>Режим таблицы.
Для выполнения запроса, то есть физического удалениязаписей, нажмите кнопку Запуск.Запрос на создание таблицыЗапрос может служить средством создания новой таблицы. В обычном запросе пользователь имеет возможность соединить поля и записи нескольких таблиц,создав тем самым объект базы данных, который выполняет функции таблицы.Все данные, которые будут использованы в таком запросе, будут располагатьсяв исходных таблицах. Но таким же способом можно создать и новую, реально существующую таблицу с данными. Таким способом можно превратить несколькосвязанных таблиц в одну. Запрос на создание таблицы выполняется за несколькошагов.1.Создайте запрос в режиме конструктора и включите в него все необходимыетаблицы. Если таблиц несколько, они должны иметь поля для связи.Запросы1232.
Определите связи между таблицами. Программа пытается сама устанавливатьсвязи, если находит поля с одинаковыми именами и типами. Если Access неможет создать связи автоматически, создайте их, перетаскивая мышью именаполей из одного списка в другой.3. Отредактируйте бланк: создайте графы, соответствующие полям буд>щейтаблицы, введите (при необходимости) условия отбора и/или сортировки,4. Выберите из списка Тип запроса элемент «Создание таблицы».5. Просмотрите полученную таблицу, переключившись в режим таблицы командой Вид => Режим таблицы. Вы увидите таблицу в том виде, как она будетсоздана после завершения операции. Если результат вас устроил, нажмитекнопку Запуск. Программа запросит имя новой таблицы и создаст ее.Завершим эту тему рядом замечаний.Как вы уже поняли, разработка запроса на создание таблицы содержит дваэтапа.
На первом создается обычный запрос любым доступным и удобным способом. На втором появляется новая таблица после того, как обычный запрос преобразуется в запрос на создание таблицы. Выполнение второго этапа означаеткопирование данных внутри одной базы данных или в другую базу данных.Если в запрос входят связанные таблицы и вы перенесли все их поля в бланкпри помощи символа «звездочка» (то есть не указывая поля по отдельности), топрограмма автоматически оставит в новой таблице только одно поле из двух использованных для организации связи. Если вы переносите поля в бланк запросапо отдельности, то в новой таблице появятся два связных поля.
Если они имеютодинаковые имена, то к ним будут добавлены имена таблиц-источников.Запрос на создание таблицы можно использовать неоднократно и двумя способами. Если вы попытаетесь открыть такой запрос или нажмете кнопку Запускв режиме конструктора, то запрос будет запущен на выполнение и программапредложит перезаписать полученную ранее таблицу, то есть создать ее заново.Если же вы выберете из списка Тип запроса команду «Создание таблицы», тоAccess предложит вам ввести новое имя для новой таблицы. Так можно создатьлюбое число новых таблиц.
Разумеется, данные в них будут дублироваться.В запрос на создание таблицы можно включить и вычисляемое поле. В созданной таблице оно будет преобразовано в обычное, но заполнится вычисленными данными в соответствии с заданным выражением.Глава 6ФормыФормы - второй, альтернативный способ представления данных, который используется, в частности, когда табличное представление данных неприемлемо.Удобство форм заключается в том, что разработчик может разместить поля так,как требуется, и вдобавок снабдить их флажками, кнопками и другими элементами пользовательского интерфейса.
К тому же формы удобны для программнойобработки данных.Кроме того, форма может использоваться для поиска данных. Если пользовательская задача требует документов определенного вида, то без форм обойтисьпрактически невозможно. В некоторых случаях формы позволяют вывести на экранбольше данных, нежели таблицы. Это достигается при помощи объектов, обеспечивающих «трехмерность» данных (например, - раскрывающихся списков).
Еслиизъять формы из Access, то эта программа превратится в заурядную СУБД, какихмножество. Мне кажется, что именно разнообразие форм, их внешний вид и легкость, с которой они создаются, придают Access определенный «шик».Форма в Access соединяет два полярных взгляда на работу с современной программой «от Microsoft». С одной стороны, для создания форм разработан простойв использовании мастер форм. При желании в нем .можно построить форму за несколько минут без малейших усилий - просто надо соглашаться со всем, чтопредлагает мастер. С другой стороны, многие эффекты в форме невозможны безпрограммирования и знания некоторых тонкостей работы СУБД.
Изучать формылегче всего, рассматривая «кубики», из которых они строятся.6.1. АвтоформыВ Access встроено несколько инструментов, позволяющих создать форму автоматически, с минимальным участием разработчика. Такие формы получили название автоформ. Рассмотрим пример создания такой формы. Вначале необходимонажать кнопку Создать на вкладке Формы.На рис, 6.1 показано окно, которое позволяет выбрать вид формы.Формы125Новая формаАвтоматическое созданиеформ с полями,расположенными в одинстолбец,Выберите в качествеисточника данных таблицу илиsanpoc:ЗаказьРис. 6.1.
Окно для выбора вида формыСуществует три стандартных вида форм, которые программа может построитьавтоматически. Используем для примера таблицу Заказы из базы данных«Борей». Применяем вариант «Автоформа: в столбец».Программа создаст в этом случае форму, показанную на рис. 6.2. Действительно, все поля таблицы выстроены на ней «в столбец». В таком случае на экран выводится одна из записей таблицы. На этом рисунке форма оставлена в том виде,как она была сгенерирована программой. Столбцов получилось два из-за того,что полей много.