Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Access 2007

.pdf
Скачиваний:
115
Добавлен:
11.05.2015
Размер:
23.5 Mб
Скачать

Еще хуже то, что очень легко внести изменения в одни записи и оставить нетронутыми другие. Окончательный итог — противоречивые данные — несогласованная информация и нескольких местах таблицы — что делает невозможным извлечение корректных данных.

Рис. 2.22. Данная таблица содержит список имеющихся в наличии домашних питомцев у человека, занимающегося разведением редких животных. В ней также приведена некоторая полезная информация о средней продолжительности жизни, характере и пищевых предпочтениях каждого вида животных. Сначала такой проект кажется вполне разумным. Но проблема возникает, как только у вас появляется несколько животных одного вида (в данном случае три слона). Теперь все касающиеся слонов подробности повторяются три раза

Проблема возникает, потому что не вся информация в таблице Pets (домашние животные) связана между собой. Для того чтобы понять — почему, нужно погрузиться поглубже в анализ БД.

Как правило, таблица в БД хранит один объект. В таблице Pets — это домашние питомцы. Каждое поле в таблице — это порция данных об этом объекте.

Рис. 2.23. Теперь относящаяся к животным информация хранится в одном месте, без дублирования. Потребуется чуть-чуть больше времени для получения всей необходимой вам информации о животном — например, для того чтобы выяснить продолжительность жизни Беатрис, вам придется проверить запись Elephant (слон) в таблице AnimalTypes, но в итоге проект стал более логичным

В таблице Pets все поля, такие как Name (имя), Animal (вид животного) и Weight (вес), имеют смысл. Они описывают конкретную особь. Поля же LifeSpan (продолжительность жизни), Temperament (характер) и Diet (рацион) не совсем уместны. Они не описывают

101

конкретного домашнего питомца. В них содержатся стандарты для животных этого вида. Другими словами, эти поля основываются не на вашем животном (как должны были бы) — они основываются на биологическом виде животного. Единственный способ решения проблемы

— создание двух таблиц: Pets и AnimalTypes (виды животных) (рис. 2.23).

Нужен опыт для поиска полей, не связанных с другими полями. В некоторых случаях дробление таблицы на все более мелкие части не стоит затраченных усилий. Теоретически вы можете извлечь информацию об адресе (содержащую такие поля, как Street, City, Country, PostalCode) из таблицы Customers и поместить ее в таблицу Addresses (адреса). Но два клиента проживают по одному адресу довольно редко, поэтому эта дополнительная работа вряд ли окупится. Мы рассмотрим способы определения связей между таблицами, такими как Pets и AnimalTypes, в главе 5.

Совет

Многие специалисты по проектированию БД считают лучшим методом планирования БД — применение учетных карточек (index cards). Для этого запишите все различные типы информации, необходимые для вашей БД. Затем отложите учетную карточку для каждой таблицы, которую планируете использовать. Наконец, возьмите поля из черновика и записывайте их по очереди на соответствующую учетную карточку до тех пор, пока они не разделятся на четкие связанные группы.

Правило 5. Избегайте избыточной информации

Другой тип несвязанной информации — избыточные данные — информация, которая уже есть где-то в БД или даже в той же таблице, иногда в слегка иной форме. Как и в случае дублирования данных, такая избыточность может порождать противоречивость данных.

Вычисляемые данные — самый распространенный тип избыточной информации. Примером может служить поле AverageOrderCost (средняя стоимость заказа) в таблице Customers. Проблема в данном случае состоит в том, что вы можете определить среднюю стоимость заказа, просмотрев в таблице Orders (заказы) все записи для данного клиента, и усреднить их. Вводя поле AverageOrderCost, вы создаете возможность хранения в нем некорректных данных (возможно, его значение не будет соответствовать реальным записям о заказах). Кроме того, вы усложняете жизнь, поскольку каждый раз, когда клиент вставляет заказ, нужно пересчитывать среднее значение и обновлять запись клиента.

Примечание

Небожители, проектирующие БД, иногда действительно используют вычисляемые данные для повышения производительности. Но этот тип оптимизации очень редко встречается в БД Access. Он больше характерен для размещенных на серверной стороне коммерческих БД, которыми управляют большие компании или Web-сайты.

Далее перечислены еще несколько примеров избыточной информации.

Поля Age (возраст) и DateOfBirth (дата рождения) (в таблице People). Обычно вы включаете только поле DateOfBirth. Если же у вас их два, то в поле Age содержится избыточная информация. Но если у вас только поле Age, то вы в опасности — если вы не сможете отслеживать дни рождения и тщательно редактировать каждую запись, ваши данные скоро станут некорректными.

Поле DiscountPrice (цена со скидкой) (в таблице Products). Вы должны иметь возможность вычислять цену со скидкой как положено, основываясь на заданных процентах. В обычном деловом мире надбавки и скидки часто меняются. Если вы вычислите скидки,

102

равные 10%, и сохраните измененные цены в вашей БД, вас ждет много работы в случае снижения скидки до 9%.

Правило 6. Включайте поле Код

Как вы уже знаете, программа Access автоматически создает поле Код (ID), когда вы разрабатываете таблицу в Режиме таблицы, и назначает его первичным ключом вашей таблицы. Но даже теперь, когда вы изучили Конструктор, все равно вставляйте поле Код во все ваши таблицы. Убедитесь, что в нем используется тип данных Счетчик, в этом случае Access автоматически заполнит его числами и отведет ему роль первичного ключа.

В некоторых ситуациях в вашу таблицу может быть включено уникальное поле, которое можно использовать как первичный ключ. Не поддавайтесь искушению. Вставляя поле Код, вы всегда увеличиваете степень свободы ваших действий. Поле Код не придется менять никогда. Другая информация, даже имена и номера социального обеспечения могут измениться. И если вы используете связи между таблицами, программа Access копирует первичный ключ в другие таблицы. Если первичный ключ меняется, вы вынуждены искать его значение и разных местах БД.

Примечание

Хорошо бы сделать привычкой включение полей Код во все ваши таблицы. В главе 5 вы поймете преимущества такого подхода, когда начнете устанавливать связи между таблицами.

103

Глава 3

Обработка листа данных: сортировка, поиск, фильтрация и другие действия

В главе 1 вы впервые познакомились с листом данных — простым и понятным средством для просмотра и редактирования данных таблицы. Как вы уже узнали, лист данных — не лучший инструмент для создания таблицы. (Конструктор — более удобное средство для всевозможного управления БД.) Но лист данных — великолепный инструмент для просмотра записей таблицы, внесения изменений и добавления новых данных.

Имея опыт создания таблицы Dolls (см. разд. "Создание простой таблицы" главы 1), вы, возможно, чувствуете себя излишне самонадеянно в отношениях с листом данных. Однако большинство таблиц гораздо больше виденных вами до сих пор примеров. В конце концов, если вам необходимо вести учет только дюжины кукол-болванчиков, на самом деле никакая БД не нужна — вы будете вполне удовлетворены, набросав краткий список в старой электронной таблице, документе текстового процессора или на клочке бумаги.

С другой стороны, если вы планируете создать маленькую империю кукол-болванчиков (готовую для демонстрации на международных выставках), придется заполнить вашу таблицу сотнями или тысячами записей. В этом случае не так легко пересмотреть массу данных, чтобы найти то, что нужно. Неожиданно лист данных покажется, мягко говоря, необъятным.

К счастью, у программы Access есть чудодейственные средства управления листом данных, способные сделать жизнь проще. Прочитав эту главу, вы станете знатоком средств, видоизменяющих листы данных, досконально освоив такие методы, как сортировка, поиск и фильтрация. Вы также узнаете, как легко напечатать моментальную копию ваших табличных данных.

Примечание

Время, затраченное на работу с листами данных, — исключительно ваш выбор. Некоторые знатоки программы Access предпочитают создавать формы для всех своих таблиц (как описано в части IV). С помощью форм можно создать полностью настраиваемое окно для ввода данных, Проектирование форм требует больше усилий, но ваше творческое эго будет довольно.

Настройка листа данных

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

104

стиля). Некоторые из этих настроек, например, изменение шрифта на листе данных, — постыдные излишества. Другие параметры, например скрытие или закрепление столбцов, могут действительно облегчить работу с большими таблицами.

Примечание

Access сохраняет изменения форматирования не сразу (в отличие от корректировок записей, которые программа сохраняет, как только они произведены). Вместо этого Access предлагает сохранить изменения при следующем закрытии листа данных. Вы можете выбрать Да для сохранения ваших настроек или Нет для возвращения к предыдущему внешнему виду листа данных (что не повлияет на любые внесенные вами в таблицу корректировки данных).

Форматирование листа данных

Программа Access позволяет выбрать для листа данных яркие цвета и выразительные шрифты. Повлияют ли эти изменения на функционирование листа данных? Конечно, нет. Но если рабочий стол вашего компьютера больше похож на фестиваль духовного возрождения в стиле 60-х, а не на обычный офисный терминал, возможно, это доставит вам удовольствие.

Параметры форматирования можно найти на вкладке ленты Главная (Ноmе) в группе Шрифт (Font) — рис. 3.1.

Рис. 3.1. Группа Шрифт на вкладке Главная позволяет изменить шрифт и цвета на всем листе данных. Наиболее полезное средство — возможность отключения некоторых или всех линий сетки и применение чередующихся цветов для выделения соседних строк

Любое внесенное вами изменение форматирования влияет на всю таблицу. Вероятно, вы считаете отличной идеей возможность по-разному форматировать различные столбцы, но Access не предоставляет такой возможности. Если вас это огорчает, вы, безусловно, обрадуетесь, познакомившись с формами и отчетами. Они более трудны в настройке, но обладают более развитыми средствами форматирования.

Примечание

Есть и другой способ использования группы Шрифт (Font), расположенной на вкладке ленты Главная (Ноmе). Если у вас есть поле с типом данных Поле MEMO (Memo) и вы настроили его

105

на хранение форматированного текста (rich text) (см, разд. "Форматированный текст" главы 2), можно выделить фрагмент текста в вашем поле и изменить его формат с помощью ленты.

Малоизвестная или недооцененная возможность. Настройка всех листов данных

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

Но, настроив программу Access, вы можете установить параметры форматирования таким образом, что они автоматически будут применяться к каждой таблице всех БД. Для того чтобы воспользоваться этим приемом, выполните следующие действия:

1.Нажмите кнопку Office, а затем кнопку Параметры Access (Access Options) для вывода на экран одноименного окна.

2.В списке слева выберите Таблица (Datasheet).

3.Справа появятся стандартный шрифт, цвет, сетка и ширина колонки — параметры, которые можно менять, как вам захочется.

Когда вы корректируете установочные параметры форматирования в окне Параметры Access (Access Options), меняются значения по умолчанию, используемые программой Access. Эти установки определяют форматирование, используемое программой в новых таблицах и в любых таблицах, которые не переформатированы пользователем. Когда вы изменяете параметры форматирования, вы переопределяете установки по умолчанию, независимо от их конкретных значений.

Если вы задали в программе Access использование шрифта красного цвета, но переформатировали конкретную таблицу для вывода текста зеленого цвета, у зеленого цвета более высокий приоритет. Но если вы установили желтый фон в окне Параметры Access и не изменяли эту характеристику в вашей таблице, она автоматически получает стандартный желтый фон.

Реорганизация столбцов

Поля на листе данных располагаются слева направо в том порядке, в каком вы их создали. Часто выясняется, что этот порядок следования столбцов не самый удобный для ввода данных.

Предположим, что вы создали таблицу Customers (Клиенты) для компании по производству новинок макаронных изделий. Когда на вашей стойке завершается регистрация нового заказчика, выясняется, что регистрационная форма начинается с имени и адреса, а затем уже идут вкусы заказчика, касающиеся пасты. К сожалению, поля на листе данных следуют в совершенно другом порядке. Слева направо они расположены таким образом: ID (код), FreshPastaPreference (предпочитаемый сорт новой пасты), DriedPastaPreference (предпочитаемый сорт сухой пасты), FirstName (имя), LastName (фамилия), Street (улица), City (город), State (штат), Country (страна). (Подобная организация не так глупа, как кажется,

— она помогает людям, выполняющим заказы на пасту, быстро находить нужную информацию.) Но из-за такой организации вы вынуждены перемещаться вперед и назад для того, чтобы ввести данные одной регистрации.

106

. К счастью, вы можете решить эту проблему без перепроектирования таблицы. Переместите столбцы, которые вы хотите передвинуть, на новые позиции, как показано на рис. 3.2.

Рис. 3.2. Для переноса столбца щелкните один раз кнопкой мыши его заголовок, чтобы выбрать столбец. Затем с нажатой кнопкой мыши передвиньте столбец на новое место. В данном примере поле FirstName предполагается переместить так, чтобы оно располагалось слева от поля FreshPastaPreference

Лучшее в таком подходе — отсутствие необходимости изменять реальную структуру БД. Если после перемещения нескольких столбцов вы перейдете в Конструктор, то увидите, что порядок полей не изменился. Другими словами, у вас есть возможность, сохраняя физический порядок следования полей (в файле вашей БД), реорганизовать порядок их отображения в

Режиме таблицы.

Совет

Реорганизация столбцов — довольно незначительное изменение. Смело передвигайте столбцы для того, чтобы удобнее было редактировать, и затем возвращайте их обратно после внесения изменений. Ваши действия не повлияют на данные в БД. Если определенный порядок следования столбцов нужен для одноразовой работы, просто не сохраняйте этот порядок, когда будете закрывать лист данных.

Изменение размеров столбцов и строк

По мере заполнения таблицы данными ваш лист данных становится все шире и шире. Часто вас будет огорчать то, что одни столбцы съедают больше пространства, чем им нужно, а другие невозможно узки.

107

Как вы догадываетесь, программа Access позволяет изменять ширину столбцов. Но, возможно, вы не знаете, что для этого существует множество различных способов.

Изменение ширины одного столбца. Поместите указатель мыши на правый край столбца. Передвиньте мышь с нажатой левой кнопкой влево (для сжатия столбца) или вправо (для его расширения).

Изменение ширины столбца в соответствии с объемом содержащихся в нем данных.

Щелкните дважды кнопкой мыши край столбца. Программа Access увеличит ширину столбца настолько, чтобы в него поместилось имя поля или самое большое значение (в зависимости от того, что длиннее). Но при этом столбец не выйдет за границы окна программы.

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

Точное задание ширины столбца. Щелкните правой кнопкой мыши заголовок столбца и выберите команду Ширина столбца (Column Width). Вы увидите одноименное диалоговое окно, в котором можно задать точное числовое значение ширины (рис. 3.3).

Рис. 3.3. В окне Ширина столбца можно задать точное числовое значение ширины. (У числа в действительности нет конкретного значения — предполагается, что это ширина в символах, но поскольку современная программа Access использует пропорциональные шрифты, у разных символов разная ширина.) Вы также можете установить флажок Стандартная для того, чтобы вернуть стандартную ширину столбцу, или щелкнуть мышью кнопку По ширине данных для расширения столбца в соответствии с его содержимым (аналогично двойному щелчку мышью края столбца)

Примечание

Имейте в виду, что столбец не должен быть широк настолько, чтобы отобразить все содержащиеся в нем данные сразу. Вы можете прокрутить длинное текстовое поле с помощью клавиш со стрелками, а если это слишком утомительно, использовать сочетание клавиш <Shift>+<F2> для отображения всей информации текущего поля в окне Область ввода (Zoom).

Также как ширину столбцов, можно менять и высоту строк. Отличие заключается в том, что программа Access формирует все строки одного размера. Поэтому когда вы делаете одну строку выше или ниже, Access изменяет все остальные строки до соответствующей высоты.

Сжать строки хочется главным образом для того, чтобы вывести больше строк на экран. Увеличивают высоту строк чаще всего для того, чтобы вывести несколько строк текста в каждом текстовом поле (рис. 3.4).

108

Рис. 3.4. Если высота строки достаточна, программа Access разбивает текст внутри поля на несколько строк, как показано в столбце Description

Скрытие столбцов

У большинства таблиц так много столбцов, что вы не можете все их вывести на экран одновременно. Это один из недостатков листа данных, и зачастую вы вынуждены прокручивать страницу туда-сюда.

Но иногда вам не нужно видеть все столбцы сразу. В этом случае можно скрыть на время столбцы, которые вас не интересуют, чтобы сосредоточиться на важных для вас подробностях, не отвлекая внимания. Первоначально все вставленные вами поля отображаются на экране открытыми.

Для того чтобы скрыть столбец, выделите его, щелкнув кнопкой мыши по заголовку. (Можно выбрать несколько смежных столбцов, щелкнув кнопкой мыши первый заголовок и с нажатой кнопкой проведя мышью по заголовкам всех остальных.) Затем щелкните правой кнопкой выделенные столбцы и выберите команду меню Скрыть столбцы (Hide Columns). Столбец тут же исчезнет с листа данных. (Это внезапное исчезновение может слегка обескуражить новичков.)

К счастью, с полем и его данными ничего не случится. Для того чтобы вернуть столбец на экран, щелкните правой кнопкой мыши заголовок любого столбца и выберите команду Отобразить столбцы (Unhide Columns). Программа Access выведет на экран диалоговое окно Отображение столбцов (Unhide Columns) — рис. 3.5.

Примечание

Под списком полей есть элемент, названный Добавить поле (Add New Field). На самом деле это не настоящее поле, а заполнитель, появляющийся справа от последнего поля на листе данных, который можно использовать для вставки новых полей (см. разд. "Организация и описание ваших полей" главы 2). Если вы привыкли вставлять поля в Конструкторе (см. разд. "Создание простой таблицы" главы 1), то можете скрыть этот заполнитель и получить дополнительное свободное пространство.

Если вы вставляете новую запись, когда столбцы скрыты, то не можете вставить значения в такие поля. Значение остается пустым или заданным по умолчанию (если вы определили такое для данного поля, как описано в разд. "Задание значений по умолчанию" главы 4). Если вы скрыли обязательное поле (см. разд. "Запрет незаполненных полей" главы 4), при

109

попытке вставить запись выводится сообщение об ошибке. Вам ничего не остается, как отобразить соответствующий столбец, а затем заполнить его пропущенными данными.

Рис. 3.5. С помощью этого окна можно вернуть скрытые столбцы и (как не удивительно) скрыть те, что отображаются в настоящий момент. Все столбцы с установленным флажком, расположенным рядом, видимы, а все со сброшенным флажком скрыты. Как только вы измените видимость столбцов, программа Access обновит внешний вид листа данных. Добившись удовлетворяющего вас результата, щелкните мышью кнопку Закрыть для того, чтобы вернуться на лист данных

Закрепленные столбцы

Даже имея возможность скрывать столбцы или изменять их ширину, в типичной таблице вы иногда вынуждены пользоваться прокруткой. В такой ситуации легко потерять ориентацию. Вы можете прокрутить таблицу Contacts (Контакты), чтобы увидеть дополнительную информацию и забыть, какого именно человека вы проверяете. У программы Access есть еще одно средство, помогающее обеспечить постоянное отображение важной информации, —

закрепленные столбцы.

Закрепленный столбец всегда остается зафиксированным в левой части окна Access. Даже если вы прокручиваете таблицу вправо, все закрепленные столбцы остаются видимыми (рис. 3.6). Для того чтобы закрепить столбец (или столбцы), выделите их, щелкните правой кнопкой мыши заголовок столбца и выберите команду Закрепить столбцы (Freeze Columns).

Совет

Если вы хотите закрепить несколько несмежных столбцов, начинайте с самого левого. Затем повторите процесс закрепления для столбца, расположенного справа от первого, и т. д.

Закрепленные столбцы всегда должны располагаться с левой стороны таблицы. Если вы закрепляете столбец, размещенный в произвольном месте таблицы, программа Access переносит его к левому краю и закрепляет. Вы можете вернуть его на место после снятия закрепления, используя метод реорганизации столбцов, описанный в разд. "Реорганизация столбцов" ранее в этой главе. Помните о том, что пока столбец закреплен, вы не можете с помощью мыши переместить его в другое место.

110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]