и так далее. Мы ограничимся всего двумя полями. Поле «товар» будет хранить код товара и имеет тип «Счетчик». Поле «название» – текстовая строка длиной 30 символов (рис. 44).
В заключение создадим ленточную форму «товары» для ввода и редактирования данных о товарах. Форму отредактируем и добавим кнопку выхода. Заполним таблицу «товары», используя форму «товары» (рис. 45). Отметим еще раз тот факт, что мы значительно упростили задачу. На самом деле, например, товар «колбаса Докторская» производства разных предприятий – это разные продукты. Мы же условно будем считать ее всегда одним и тем же товаром. В некоторых случаях такой подход оправдан.
Итак, на данный момент мы умеем создавать таблицы, простейшие запросы и формы.
5. Шаг пятый. Мастер подстановок
5.1. Создание таблицы «приход». На этом шаге мы создадим таблицу «приход» для хранения данных о поставках продукции. Таблица будет содержать поля: «номер», «дата поставки» (которое коротко назовем «дата»), «товар», «цена», «количество» и «поставщик». Полю «номер» присвоим тип «счетчик» и сделаем его ключевым. Полю «дата» присвоим тип «дата/время», но здесь тип нуждается в конкретизации. В нижней части окна конструктора в строке «Тип поля» развернем меню и выберем «Длинный формат даты». Поскольку без указания даты поставки большая часть отчетности теряет смысл, сделаем это поле обязательным, установив в строке «Обязательное поле» значение «Да» (рис. 46). После того, как мы внесли в таблицу поля «номер» и «дата», выйдем из конструктора, сохраним таблицу под именем «приход» и снова откроем ее в режиме конструктора. По ряду причин желательно, чтобы перед использованием мастера подстановок таблица уже имела имя. Поле «товар» сделаем обязательным. Но здесь мы впервые сталкиваемся с проблемами рационального использования памяти и целостности данных. Допустим, мы решили вводить в это поле информацию о товаре в виде текста. Подробное описание товара занимает много места. Значит, если в течение месяца этот товар поступал многократно, мы должны были многократно заполнять поле большого размера. Здесь налицо и неэффективное расходование памяти, и перерасход времени кладов-
41
щика или оператора, которому поручен ввод данных. Наконец, один и тот же текст разные люди могут ввести не идентично. Появилось искушение сократить длинное слово – и, с точки зрения компьютера, введено новое название. О возможных ошибках даже говорить не приходится.
Рис. 46. Выбор формата даты
С точки зрения эффективности хранения данных здесь наиболее целесообразно хранение кодов, в частности кодов товара и поставщика. Вот почему, конструируя соответствующие таблицы, мы сделали эти коды уникальными. Однако пользователю трудно держать в голове большое количество кодов. И здесь приходит на помощь мастер подстановок (рис. 47). Мастер подстановок обеспечивает такой способ хранения данных, при котором в таблице хранятся коды объектов, а названия, расшифровывающие смысл этих кодов, хранятся в другой таблице, которая играет роль справочника. Пользователь видит только названия! В процессе создания подстановок принципиально, чтобы коды в таблицесправочнике были помечены как ключевые поля, что мы и сделали при создании структур таблиц «поставщики», «потребители» и «товары».
После выбора (рис. 47) строки «Мастер подстановок» на экране появится диалоговое окно (рис. 48), в котором нам будет предложено при фор-
42
мировании столбца подстановки использовать значения либо из таблицы или запроса, либо ввести фиксированный набор значений.
Рис. 47. Мастер подстановок
Есть параметры объектов, которые могут иметь только фиксированный и неизменный набор свойств. Например, пол может принимать только два значения: «мужской» или «женский». В таком случае можно перевести переключатель в нижнее положение и заполнить список подставляемых значений.
Рис. 48. Выбор способа формирования столбца подстановок
Список товаров, напротив, вещь очень непостоянная и его лучше хранить в таблице. Мы оставим переключатель в положении, представленном на рис. 48, и нажмем «Далее». Система предложит нам выбрать таблицу или запрос, которые мы собираемся использовать для создания подстановки. Мы выберем «товары» (рис. 49) и нажмем «Далее».
43
Рис. 49. Выбор таблицы
В диалоговом окне (рис. 50) перебросим поля «товар» и «название» в раздел «Выбранные поля» и нажмем «Далее». После этого система предоставит нам возможность посмотреть, как выглядит столбец подстановки (рис. 51). Ключевой столбец по умолчанию скрыт! Нажмем «Далее». В ответ на предложение: «Задайте подпись, которую содержит столбец подстановки» введите имя поля «товар» и нажмите «Готово».
Рис. 50. Выбор полей
44
Рис. 51. Столбец подстановки
Таким образом, Вы создали связь между таблицами «приход» и «товары». Система потребует сохранить таблицу. На вопрос «Выполнить это сейчас?» выбираем ответ «Да». Обратите внимание, что тип поля «товар» оказался числовым. Точно так же создайте поле «поставщик», используя для подстановки таблицу «поставщики». Только теперь в качестве «Выбранных полей» Вы берете не все поля таблицы, а только ключевое поле «поставщик» и поле «название». Полю «цена» присвоим тип «числовой». При этом по умолчанию в наборе свойств поля в строке «Размер поля» появится значение «Длинное целое». Это свойство также нуждается в конкретизации. Поэтому в строке «Формат поля» выберем «Фиксированный». Это значит, что в записи числа будет содержаться два знака после запятой.
Рис. 52. Свойства поля «цена»
Поле «количество» будет хранить объем поставки. По смыслу задачи поле должно быть числовым, а размер поля, вероятно, достаточно сделать целым. Теперь закроем конструктор, сохранив изменения макета. Откроем таблицу в рабочем режиме (рис. 53) и заполним несколько записей. При этом следует обратить внимание на то, что дата вводится в
числовом формате с точкой в качестве разделителя. Например, Вы вво-
45