Пользовательские форматы дат
Если вы не удовлетворены семью стандартными вариантами вывода дат, предлагаемыми программой Access, можно сформировать собственную строку формата даты и ввести ее в свойство Формат(Format). Эта строка сообщает программе Access способ представления даты и времени.
Строка формата даты состоит из нескольких частей. Каждая часть представляет отдельный компонент даты, такой как день, месяц, год, минута, час и т. д.
Вы можете соединять эти части в любом порядке. Например, посмотрите на следующую строку формата:
yyyy-mm-dd
Ее можно транслировать в следующие инструкции: выведи четырехзначный год с последующим дефисом, затем двузначный номер месяца с последующим дефисом и далее двузначный номер дня в месяце. Вы вольны располагать эти компоненты как вам захочется, но данный пример определяет их порядок в соответствии со стандартом ISO (International Organization for Standardization, Международная организация по стандартизации) для дат. Вы также можете управлять способом вывода года, дня и месяца в дате. Можно применять сокращенные или полные названия месяцев вместо номера месяца (просто замените код mm чем-то другим).
Если вы примените эту строку формата дат к полю, в котором содержится дата Январь 1, 2008, то увидите ее на листе данных в таком виде:
2008-01-01
Помните о том, что независимо от того, какую информацию вы решили отображать или скрывать при выводе, Access хранит в вашей БД одни и те же данные, касающиеся даты.
В табл. 2.4 приведены основные заполнители, используемые в строке формата для даты или времени.
Таблица 2.4. Код для форматирования даты и времени
Код | Описание | Выводится (для даты Январь 1,2008) |
d | Номер дня в месяце, 1—31 с номерами 1—9, выводимыми без ведущего нуля (0) | |
dd | Номер дня в месяце, в диапазоне 1—31, (для номеров 1—9 добавляется ведущий нуль (0)) | |
ddd | Сокращенное название дня недели | Вт |
dddd | Полное название дня недели | Вторник |
m | Номер месяца в диапазоне 1—12 (ведущие нули не применяются) | |
mm | Номер месяца в диапазоне 1—12 (ведущие нули применяются для 01— 09) | |
mmm | Трехбуквенное сокращенное название месяца | Янв |
mmmm | Полное название месяца | Январь |
уу | Сокращенное двузначное обозначение года | |
уууу | Год задается всеми четырьмя цифрами | |
h | Час от 0 до 23 (ведущий нуль не применяется) | |
hh | Час от 0 до 23 (ведущий нуль применяется для значений 00—09) | |
:m | Минута в часе от 0 до 59 (ведущий нуль не применяется) |
Таблица 2.4 (окончание)
Код | Описание | Выводится (для даты Январь 1,2008) |
:mm | Минута в часе от 0 до 59 (ведущий нуль применяется для значений 00—09) | |
:s | Секунда в минуте от 0 до 59 (ведущий нуль не применяется) | |
: ss | Секунда в минуте от 0 до 59 (ведущий нуль применяется для значений 00—09) | |
АМ/РМ | Предписывает программе Access использовать 12-часовую шкалу с индикацией первой (AM) и второй половины (РМ) суток | РМ |
am/pm | Обозначает 12-часовую шкалу с индикацией первой (am) и второй (рm) половины суток | рm |
А/Р | Предписывает программе Access использовать 12-часовую шкалу с индикацией первой (А) и второй половины (Р) суток | Р |
а/р | Предписывает программе Access использовать 12-часовую шкалу с индикацией первой (а) и второй половины (р) суток | p |
Логический
Поле с логическим типом данных (Да/Нет) — это чудо эффективности. Представляет собой простейший тип данных Access, поскольку допустимы только два возможных значения: Да или Нет.
Рис. 2.14. В данном примере поле ForResale (для продажи) — поле с логическим типом данных. Установленный флажок отображает значение Да (или Истина, или Вкл). Сброшенный флажок означает Нет (или Ложь, или Выкл)
Применяя поле с логическим типом данных, представьте себе, что поле содержит ответ "да" или "нет" на вопрос, который получается, если добавить воображаемый вопросительный знак к названию поля. Вы можете применять поле с именем InStockдля отслеживания наличия изделий на складе. В данном случае "да" или "нет" — ответ на вопрос "На складе?" Другими примерами могут служить поле Shipped(доставленные) (в списке заказов), Male(мужчина) (для разделения мальчиков и девочек) и Republican(республиканец) (при условии, что вы хотите различать только две политические ориентации).
Несмотря на то, что все поля логического типа одинаковы, для них можно выбрать слегка отличающиеся форматы, заменяя слова "Да" и "Нет" словами Вкл/Выкл или Истина/Ложь. Эти три варианта можно найти в списке свойства Формат(Format). Но у них мало различий, поскольку на листе данных поля этого типа отображаются с флажком, как показано на рис. 2.14.
Гиперссылка
Тип данных Гиперссылка(Hyperlink) подойдет, если бы хотите создать ссылку на Web-страницу, файл или адрес электронной почты, срабатывающие по щелчку кнопки мыши. Вы можете в одной таблице создавать любые комбинации этих трех видов указателей.
В Режиме таблицыAccess обрабатывает гиперссылки немного иначе. Когда вы вводите текст в поле типа Гиперссылка, он окрашивается в синий цвет и подчеркивается. И когда вы щелкаете ссылку кнопкой мыши, Access открывает ее в вашем Web-обозревателе (рис. 2.15).
Примечание
Программа Access не мешает вам вводить в поле с типом данных Гиперссылказначения, не являющиеся гиперссылками. Эта особенность может создать проблему, когда вы щелкнете кнопкой мыши ложную гиперссылку. Если вы поместите текст "saggy balloons" (сдувшиеся шарики) в поле типа Гиперссылкаи щелкните его кнопкой мыши, Access попытается отправить Web-обозреватель по адресу http://saggy balloons,который на самом деле не существует.
Рис. 2.15. Щелкните кнопкой мыши эту гиперссылку и попадете прямо на доброжелательный Web-сайт Office Online
Одно свойство поля типа Гиперссылка сразу не очень понятно. На самом деле такие поля хранят несколько порций данных. Каждая гиперссылка включает три компонента:
■ текст, который вы видите в ячейке;
■ адрес, на который вы переходите при щелчке кнопкой мыши ячейки (URL или полное имя файла);
■ текст, который вы видите при наведении указателя мыши на ссылку (пояснительная надпись).
Когда вы вводите гиперссылку на листе данных, все три компонента получают одно ито же значение — то, что вы только что ввели. Другими словами, когда вы набираете http://www.FantasyPharmacologists.com, текст, который вы видите, URL ссылки и пояснительная надпись содержат одну и ту же информацию — URL — http://www.FantasyPharmacologists.com.
В большинстве случаев этот подход хорош, т. к. позволяет быстро просмотреть ссылку. Но это не единственно возможная стратегия. Если вы хотите трем описанным компонентам присвоить разные значения, перейдите в ячейку с набранным значением и нажмите сочетание клавиш <Ctrl>+<K> для того, чтобы раскрыть окно Изменение гиперссылки(Edit Hyperlink) — рис. 2.16. Или щелкните значение правой кнопкой мыши и выберите последовательность команд Гиперссылка → Изменить гиперссылку(Hyperlink →Edit Hyperlink).
Рис. 2.16.С помощью окна Изменение гиперссылкиможно изменить текст, появляющийся в ячейке (в верхней части окна), и страницу, которую откроет Access, если вы щелкните ссылку кнопкой мыши (в нижней части окна). Вы также можете создавать ссылки, включающие адреса электронной почты (в этом случае Access откроет программу электронной почты, установленную на вашем компьютере) или ссылки на полное имя файла (с использованием области просмотра папки для выбора нужного файла)
Вложение
Тип данных Вложение(Attachment) — это новый тип, появившийся в программе Access 2007. Он позволяет вставлять файлы в запись БД почти так же, как вы вкладываете файлы в
ваши сообщения электронной почты. Access хранит файлы, вставленные в поле типа Вложение как часть вашей таблицы, встроенную в файл вашей БД.
Тип данных Вложение хорошо подходит для вставки в запись изображения, короткого звукового файла или документа из другого приложения пакета Office, такого как Word или Excel. Вы можете создать таблицу People(люди) с изображением каждого человека, включенного в список контактов, или каталог изделий с изображением товаров, которые вы пролаете. В этом случае у данных типа Вложение — очевидные преимущества, поскольку они хранятся в файле вашей БД, и вы никогда не потеряете их след.
Но данные типа Вложение не так привлекательны в случае больших файлов или файлов, требующих частой корректировки. Если вы поместите часто корректируемый документ в БД Access, он не будет доступен для быстрого редактирования, печати и поиска. Вам придется запустить программу Access и найти соответствующую запись, прежде чем вы сможете открыть ваш документ. Если же нужно внести изменения, вы должны оставить программу Access открытой, чтобы она могла забрать измененный файл и вставить его снова в БД.
Предупреждение
Дважды подумайте, прежде чем связываться с вложенными файлами. Как вы уже знаете, объем, который может занимать БД Access, ограничен двумя гигабайтами. Если вы начнете сохранять большие файлы в ваших таблицах, то можете просто превысить его. Лучше хранить большие документы в отдельных файлах, а затем записывать имя файла в текстовое поле или поле с типом данных Гиперссылка(Hyperlink).
Применяя тип данных Вложение, убедитесь в том, что задано свойство поля Подпись (Caption), определяющее текст, который появляется в заголовке столбца для этого поля. (Часто для заголовка используется имя файла.) Если свойство не задано, в заголовке столбца отображается скрепка, но без текста.
На листе данных поле с типом данных Вложение легко узнать, т. к. рядом с ним расположена пиктограмма скрепки (рис. 2.17).
Рис. 2.17. Вложения помечаются пиктограммой скрепки и числом в скобках, сообщающим о количестве вложенных файлов. В данном примере все значения в поле Pictureс типом данных Вложение пустые за исключением Count Chocula, у которого оно равно двум
Для вложения файла или просмотра списка вложенных файлов дважды щелкните кнопкой мыши пиктограмму скрепки. Вы увидите диалоговое окно Вложения(Attachments) — рис.2.18.
Рис. 2.18. В диалоговом окне Вложения показаны все файлы, связанные с вашим полем
Далее перечислены действия, которые можно выполнить с помощью окна Вложения (Attachments).
■ Вставить новый вложенный файл. Щелкните мышью кнопку Добавить(Add). Затем найдите и укажите новый файл и нажмите кнопку ОК. Вы увидите новый файл в конце списка файлов.
■ Удалить вложение файла. Выберите в списке нужный файл и щелкните мышью кнопку Удалить(Remove).
Сохранить копию вложенного файла. Выберите нужный вложенный файл, щелкните мышью кнопку Сохранить как(Save As) и затем укажите место на вашем компьютере для сохранения копии. Или щелкните мышью кнопку Сохранить все(Save All) для сохранения копий всех вложенных в это поле файлов. Если вы меняете данные копии, содержимое вложенного файла в вашей БД не меняется.
■ Редактировать и просматривать вложенный файл. Выберите вложенный файл и щелкните мышью кнопку Открыть(Open). Программа Access скопирует вложенный файл во временную папку па вашем компьютере, ту, в которой сохраняется кэшируемая интернет-информация. Если вы сохраняете файл, Access отслеживает изменения, автоматически обновляет вложенный файл и затем удаляет временный файл. Если вы закроете окно Вложения(Attachments) до того, как закрыли файл, то Access предупреждает о том, что ваши корректировки не будут отражены в вашей БД. На рис. 2.19 показано, что происходит.
К сожалению, у типа данных Вложениемало параметров управления. Далее перечислены некоторые ограничения этого типа данных.
■ Вы не можете ограничить количество разрешенных вложений файлов в поле типа Вложение.У всех полей этого типа практически нет ограничения на количество вложенных файлов (хотя вы не можете вложить два файла с одним и тем же именем).
§Вы также не можете ограничить типы файлов, предназначенных для вложения.
§Вы не можете ограничить и размер файлов, предназначенных для вложения.
Рис. 2.19. Вверху: в данном примере файл "The Story of the Count.doc" все еще открыт.
Если вы продолжите, то все изменения, которые вы вносите (или любые изменения, которые вы внесли к данному моменту и не сохранили), не будут отражены в БД.
Внизу: если программа Access замечает, что вы сохраняли ваш файл с тех пор, как открыли его впервые, она спрашивает вас о том, хотите ли вы обновить БД последней сохраненной версией файла. (Для того чтобы избежать подобных треволнений, вкладывайте только те файлы, которые вы не собираетесь редактировать.)
Счетчик
Счетчик(AutoNumber) — это специальный тип данных. В отличие от всех других знакомых вам типов данных, в поле типа Счетчик нельзя ввести значение. Программа Access делает это автоматически, когда вы вставляете новую запись. Access гарантирует, что значение счетчика уникально — другими словами, программа никогда не присвоит двум записям одно и то же значение типа Счетчик.
Примечание
У каждой таблицы может быть не более одного поля Счетчик.
Обычно поле типа Счетчик выглядит как последовательность чисел — Access стремится дать первой записи значение 1, второй записи значение 2 и т. д. Но истина не так проста. Иногда программа Access пропускает числа. Такой пропуск возможен, когда несколько пользователей одновременно работают с БД, или когда вы начинаете вставлять новую запись, а затем отменяете это действие, нажав клавишу <Esc>. Вы также можете удалить существующую запись, в этом случае Access никогда повторно не использует значение типа Счетчик из удаленной записи. В итоге, если вы вставляете новую запись и видите, что ей присвоено значение типа Счетчик, равное 401, то не можете с уверенностью сказать, что в таблице уже есть 400 записей. Реальное их количество, возможно, меньше.
Бесспорно, значение Счетчик не отображает ничего реального, и, возможно, вы не захотите тратить много времени на его рассмотрение. Единственная задача поля с типом данных Счетчик — гарантировать наличие у каждой записи вашей таблицы уникального указателя. Обычно ваше поле типа Счетчик служит также и первичным ключом для вашей таблицы, как объясняется в разд. "Первичный ключ " далее в этой главе.
Применение поля типа Счетчик без раскрытия реального размера вашей таблицы
У значений Счетчикесть маленький недостаток: они предоставляют сведения о количестве записей в таблице. Быть может, вы не хотите, чтобы клиент знал, что ваша торговая марка, новая компания, торгующая скульптурными фигурками из масла в духе народных ремесел (Better Butter Sculptures), "не одурачила" и 12 заказчиков. Поэтому вас смутит необходимость признаться ему в том, что его номер, ID, всего 6.
Лучше всего начать отсчет с большего числа. Вы можете обмануть программу Access, заставив генерировать числа типа Счетчик,начиная с заданного минимума. Например, вместо создания номеров клиентов 1, 2 и 3 вы можете создать ID-значения 11001, 11002, 11003. Такой подход также гарантирует наличие у ваших идентификаторов одинакового количества цифр и позволяет разделить ID в разных таблицах, начиная их формирование с различных минимальных значений. К сожалению, для того чтобы реализовать эту хитрость, вам надо обмануть Access с помощью специально разработанного запроса, который вы увидите в разд. "Получение начальных значений типа Счетчик, отличных от 1" главы 8.
С другой стороны, вы можете заставить программу генерировать значения типа Счетчикиным способом. Есть два варианта.
■ Случайное значение типа Счетчик.Для того чтобы воспользоваться случайными числами, измените свойство поля Новые значения(New Values) со значения Последовательные (Increment) на значение Случайные (Randome). Теперь вы получите длинные номера для каждой записи, такие как 212125691, 1671255778 и -1388883525. Вы можете использовать случайные числа типа Счетчикдля формирования значений, которые другие люди не смогут угадать. (Например, если у вас есть таблица Orders(заказы), вкоторой применяются случайные числа в поле OrderlD(идентификатор заказа), их можно использовать как подтверждающие номера (confirmation numbers).) Но в мире Access случайные числа типа Счетчикприменяются редко.
■ Коды репликации. Коды репликаций (Replication ID) — это длинные непонятные коды, например, 38A94E7B-2F95-4E7D-8AF1-DB5B35F9700C, гарантированно уникальные с точки зрения теории вероятностей. Для их применения измените значение свойства Размер поляс Длинного целого на Код репликации. Этот вариант действительно используется только в одном случае — если у вас есть отдельные копии БД и вам в будущем придется объединить данные из них. В следующем разделе объясняется этот сценарий.
Оба этих варианта несколько затуманивают простую ипонятную концепцию типа данных Счетчик,поэтому, прежде чем использовать их в своих таблицах, серьезно оцените необходимость их применения.
Применение типа Код репликации
Представьте себе, что вы работаете в компании с несколькими региональными отделами продаж, каждый из которых имеет собственную БД, отслеживающую заказы. Если применять обычное поле типа Счетчик,в конце концов, вы получите несколько клиентов с одинаковыми ID, но в разных филиалах. Если вы когда-нибудь захотите сравнить данные, то быстро запутаетесь. И не сможете в будущем объединить данные в общей БД для дальнейшего анализа.
Программа Access предлагает вам другую возможность — Код репликации. Код репликации — странное творение — очень длинный идентификатор (всего 16 байтов), представленный строкой цифр и букв, которая выглядит примерно следующим образом:
38A94E7B-2F95-4E7D-8AF1-DB5B35F9700C
Такой идентификатор — более громоздкий по сравнению с обычным целым числом. Помимо всего прочего, гораздо легче поблагодарить кого-либо за отправку заказа Order 4657, чем заказа Order 38A94E7B-2F95-4E7D-8AF1-DB5B35F9700C. Другими словами, если значение типа Счетчикприменяется для отслеживания и бухгалтерского учета, Код репликации использовать для этой цели не стоит.
Но эти коды помогают решить описанную ранее проблему, если многочисленные копии одной и той же БД используются в разных местах. Дело в том, что Код репликации гарантирует вероятностную уникальность значений. Другими словами, возможных значений типа Код репликации так много, что практически невероятно, что вы создадите одно и то же значение дважды. Следовательно, если у вас даже десятки отдельных копий вашей БД и они управляются сотнями клиентов, вы можете быть уверены в том, что у каждого клиента уникальный идентификатор. Более того, вы можете периодически объединять отдельные таблицы в одной главной БД. (Этот процесс называется репликацией и служит причиной появления термина "код репликации". Вы узнаете больше о передаче данных из одной БД в другую в главе 19.)
Примечание
Код репликации также называют GUID (globally unique identifier, глобально уникальный идентификатор). В теории вероятность того, что два GUID идентичны, равна 1/2128, величина достаточно маленькая для того, чтобы вы могли заставить работать один биллион сотрудников, создающих не более одного биллиона GUID в год, и все же быть уверенным в отсутствии дубликатов в течение десятилетия или двух. На практике реальным ограничением служит качество используемого в программе Access генератора случайных чисел.
На рис. 2.20 показана таблица, в которой используются коды репликаций.
Рис. 2.20.В таблице FictionalCharactersпоказаны 10 записей, каждая с уникальным с вероятностной точки зрения значением типа Счетчик
Первичный ключ
В Конструктореможно задать первичный ключ (primary key) таблицы, представляющий собой поле (или комбинацию полей), уникальное для каждой записи. У всех таблиц должен быть первичный ключ. Для того чтобы понять важность роли первичного ключа, нужно знать немного больше о принципах работы БД. В примечании "На профессиональном уровне. Как Access предотвращает дублирование записей " вы найдете подробный рассказ об этом.