Как сделать два ключевых поля в access?

Ключевое поле таблицы MS Access, его назначение, способы задания

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

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

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

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

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

Виды индексированных полей в MS Access, примеры

Свойство «Индексированное поле» (Indexed) определяет индекс, создаваемый по одному полю. Индекс ускоряет выполнение запросов, в которых используются индексированные поля, и операции сортировки и группировки. Например, если часто выполняется поиск по полю «Фамилия» в таблице «Сотрудники», следует создать индекс для этого поля.

Значение данного свойства можно задать только в окне свойств в режиме конструктора таблицы. Индекс по одному полю может быть определен путем установки свойства Индексированное поле (Indexed). Кроме того, можно выбрать команду Индексы в меню Вид или нажать кнопку «Индексы» на панели инструментов. Будет открыто окно индексов.

Вкладка Подстановка на бланке свойств поля используется для указания элемента управления, используемого по умолчанию для отображения поля. После выбора элемента управления на вкладке Подстановка выводятся все дополнительные свойства, необходимые для определения конфигурации элемента управления. MicrosoftAccess задает значения этих свойств автоматически, если в режиме конструктора таблицы для поля в столбце «Тип данных» выбирается «Мастер подстановок». Значения данного свойства и относящиеся к нему типы элементов управления влияют на отображение поля как в режиме таблицы, так и в режиме формы.

Рассмотрим некоторые из этих дополнительных свойств:

Свойство «Тип элемента управления»(DisplayControl) содержит раскрывающийся список типов элементов управления, доступных для выбранного поля. Для полей с типами «Текстовый» или «Числовой» для данного свойства возможен выбор поля, списка или поля со списком. Для логических полей возможен выбор поля, поля со списком или флажка.

Свойства «Тип источника строк» (RowSourceType), «Источник строк» (RowSource) определят источник данных для списка или поля со списком. Например, для того чтобы вывести в строках списка данные из запроса «Список клиентов», следует выбрать для свойства Тип источника строк значение «Таблица/запрос» и указать в свойстве Источник строк имя запроса «Список клиентов». Если список должен содержать небольшое число значений, которые не должны изменяться, можно выбрать в свойстве Тип источника строк (RowSourceType) «Список значений» и ввести образующие список значения в ячейку свойства Источник строк (RowSource). Элементы списка отделяются друг от друга точкой с запятой.

Дата добавления: 2018-02-28 ; просмотров: 830 ; ЗАКАЗАТЬ РАБОТУ

Отношения между таблицами в Access

Хотя в каждой таблице хранится информация по отдельному объекту, в БД Access все таблицы обычно между собой связаны. Ниже приведены примеры таблиц в базе данных. Допустим, у нас есть таблица клиентов, которая содержит данные о клиентах и их адреса. Также есть таблица продаваемых товаров с ценами и изображениями товаров. И, разумеется, таблица заказов, необходимая нам, чтобы отслеживать покупки клиентов.

Так как наши данные по различным темам хранятся в отдельных таблицах, их надо связать — это позволит комбинировать данные из различных таблиц. Для этого нам и нужны связи — логические отношения между 2-мя таблицами, основанные на их общих полях.

Запросы на выборку данных в СУБД Access 2003 или 2007

2016-02-02

В предыдущих статьях были рассмотрены вопросы создания базы данных «sql_training_st.mdb»
с помощью инструкций SQL. Рассмотрена технология создания структуры таблиц базы данных «sql_training_st.mdb» на основе SQL запросов. Кроме того, с
помощью SQL запросов было осуществлено заполнение таблиц СУБД ACCESS «sql_training_st.mdb».

Известно, что в реляционных базах данных язык SQL предназначен для манипулирования данными, определения структуры баз данных и ее составных частей,
управления доступом пользователей к БД и для управления транзакциями или управления изменениями в БД.

Язык SQL состоит из четырех групп:

  • язык манипулирования данными DML;
  • язык определения данных DDL;
  • язык управления данными DCL;
  • язык управления транзакциями TCL.

К группе DML относятся четыре основных типа запросов SQL:

  • INSERT — предназначен для добавления одной или нескольких записей в конец таблицы;
  • UPDATE — предназначен для изменения уже существующих записей в столбцах таблицы или модификации данных в таблице;
  • DELETE — предназначен для удаления записей из таблицы;
  • SELECT — предназначен для выборки данных из таблиц.

Первые три типа SQL запросов (INSERT, UPDATE, DELETE), которые относятся к корректирующим запросам к базе данных, были рассмотрены на страничке
«Запросы на изменение записей в таблицах с помощью SQL».

В данной статье рассмотрим запросы на выборку данных из таблиц БД Access.

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

Составим следующий SQL запрос (инструкцию SQL) на выборку, для этого выберем режим SQL, выполнив команду Вид/Режим SQL. Вводим с клавиатуры следующую
инструкцию SQL:

SELECT *
FROM Студенты;

Эта инструкция состоит из двух предложений «SELECT *» и «FROM Студенты». Первое предложение содержит оператор SELECT и идентификатор * («идентификатор *»
означает вывод всех столбцов таблицы). Второе предложение содержит оператор FROM и идентификатор «Студенты».

FROM — определяет таблицу «Студенты», которая содержат поля, указанные в предложении SELECT. Следует отметить, что в запросе на выборку всегда присутствуют
два оператора: SELECT и FROM. В зависимости от условий отбора в запросе на выборку могут присутствовать и другие операторы. На рисунке 1 представлен скриншот
запроса на выборку данных.


Рис. 1. SQL запрос SELECT на выборку данных

В данном примере формируется выборка данных из всех столбцов таблицы Студенты.

Сохраняем запрос с именем «Студенты-запрос1». В результате выполнения команды «Сохранить» в «Области переходов» появится объект — «Запросы:
Студенты-запрос1».

После сохранения запроса на выборку необходимо выполнить этот запрос, щелкая на пиктограмме «Выполнить». Результаты выполнения команды «Выполнить»
представлены на рис. 2.


Рис. 2. Выборка данных из всех столбцов таблицы Студенты

Добавление и изменение первичного ключа таблицы в Access

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

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

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

Функция ВПР в Экселе: пошаговая инструкция

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

Во второй – цены:

Если перечень товаров в обеих таблицах совпадает, то, зная магическое сочетание Ctrl+C и Ctrl+V, данные о ценах можно легко подставить к данным о количестве. Однако очередность позиций в обеих таблицах не совпадает. Тупо скопировать цены и подставить к количеству не получится.

Поэтому мы не можем прописать формулу умножения и «протянуть» вниз на все позиции.

Что делать? Надо как-то цены из второй таблицы подставить к соответствующему количеству в первой, т.е. цену товара А к количеству товара А, цену Б к количеству Б и т.д.

Вот так.

Функция ВПР в Эксель легко справится с задачей.

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

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

Кликаем по надписи «ВПР». Открывается следующее диалоговое окно.

Теперь нужно заполнить предлагаемые поля. В первом окошке «Искомое_значение» нужно указать критерий для ячейки, в которую мы вписываем формулу. В нашем случае это ячейка с наименованием товара «А».

Следующее поле «Таблица». В нем нужно указать диапазон данных, где будет осуществляться поиск нужных значений. В нашем случае это вторая таблица с ценой. При этом крайний левый столбец выделяемого диапазона должен содержать те самые критерии, по которым осуществляется поиск (столбец с наименованиями товаров). Затем таблица выделяется вправо минимум до того столбца, где находятся искомые значения (цены). Можно и дальше вправо выделить, но это уже ни на что не влияет. Главное, чтобы выделенная таблица начиналась со столбца с критериями и захватывала нужный столбец с данными

Также следует обратить внимание на тип ссылок, они должны быть абсолютными, т.к. формула будет копироваться в другие ячейки

Следующее поле «Номер_столбца» — это число, на которое столбец с искомыми данными (ценами) отстоит от столбца с критерием (наименованием товара) включительно. То есть отсчет идет, начиная с самого столбца с критерием. Если у нас во второй таблице оба столбца находятся рядом, то нужно указать число 2 (первый – критерий, второй — цены). Часто бывает, что данные отстоят от критерия на 10 или 20 столбцов

Это не важно, Excel все сосчитает

Последнее поле «Интервальный_просмотр», где указывается тип поиска: точное (0) или приблизительное (1) совпадение критерия. Пока ставим 0 (или ЛОЖЬ). Второй вариант рассмотрен ниже.

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

Теперь легко рассчитать стоимость простым умножением количества на цену.

Формулу ВПР можно прописать вручную, набирая аргументы по порядку, и разделяя точкой с запятой (см. видеоурок ниже). 

2.4. Microsoft Access 2007

2.4.5. Создание запросов и поиск информации в базе данных

В СУБД Access 2007 можно создавать queries для отображения требуемых полей из записей одной или нескольких таблиц.

В СУБД Access 2007 применяются различные типы запросов: на выборку, на обновление, на добавление, на удаление, перекрестный query, выполнение вычислений, создание таблиц. Наиболее распространенным является query на выборку. Применяются два типа запросов: query по образцу (QBE) и query на основе структурированного языка запросов (SQL).

Запросы на выборку используются для отбора требуемой пользователю информации, содержащейся в нескольких таблицах. Они создаются только для связанных таблиц. Queries могут основываться как на нескольких таблицах, так и существующих запросах. СУБД Access 2007 включает такие средства создания запросов, как Мастер и Конструктор.

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

На скриншоте (рисунок 1) средства сортировки и фильтрации выделены скругленным прямоугольником красного цвета.


Рис. 1.

Рассмотрим создание запроса на выборку с помощью Конструктора

Для создания нового пустого запроса в режиме конструктора надо щелкнуть на пиктограмме Конструктор запросов (рисунок 2).


Рис. 2.

Откроется активное окно диалога Добавление таблицы (рисунок 3) на фоне неактивного окна «Запрос1». В этом окне можно выбрать таблицы и queries для создания новых запросов.

Рис. 3.

В окне Добавление таблицы следует выбрать несколько таблиц из представленного списка таблиц, на основе которых будет проводиться выбор данных, и щелкнуть на кнопке Добавить. После этого закрыть окно Добавление таблицы, а окно «Запрос1» станет активным (рисунок 4).


Рис. 4.

Окно Конструктора состоит из двух частей – верхней и нижней. В верхней части окна размещается схема данных запроса, которая содержит список связанных таблиц. В нижней части окна находится Бланк построения запроса QBE, в котором каждая строка выполняет определенную функцию.

Переместим имена полей с таблиц-источников в Бланк. Из таблицы Группы студентов переместим поле Название в первое поле Бланка, из таблицы Студенты переместим поле Фамилии во второе поле, а из таблицы Успеваемость переместим поле Оценка в третье поле и из таблицы Дисциплины переместим поле Название в четвертое поле Бланка запросов.

При необходимости можно задать принцип сортировки (по возрастанию или по убыванию) результатов запроса. В строке «Вывод на экран» автоматически устанавливается флажок просмотра информации.

Условия ограниченного поиска или критерий поиска информации вводится в строке «Условия» отбора и строке «Или». Например, введем критерий поиска — «5/A» в строке «Условия» для поля Оценка. В этом случае в результате выполнения запроса на экране будут отображаться все фамилии студентов, которые получили оценку 5/A (рисунок. 5).


Рис. 5.

Далее надо закрыть окно запроса Запрос1, появится окно диалога Сохранить, ответить — Да и ввести имя запроса, например «Успеваемость студентов». Для запуска запроса дважды щелкнем на query «Успеваемость студентов», откроется таблица с результатами выполненного запроса (рис. 6).


Рис. 6.

Далее создаем параметрический query или query с параметрами. Создаем этот query также как и предыдущий, в режиме конструктора, но только в строке Условия отбора для поля Фамилия введем условие отбора в виде приглашения в квадратных скобках, например . В этом случае в результате выполнения запроса на экране будет отображаться фамилия студента и все дисциплины, по которым он получил оценку.

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


Рис. 7.

Затем надо щелкнуть на кнопке ОК, откроется таблица с результатами выполненного запроса (рис. 8).


Рис. 8.

В некоторых случаях для создания запросов можно использовать Мастер запросов. После создания запросов на выборку информации из БД Access 2007 можно приступать к формированию форм.

Далее >>> Раздел: 2.4.6. Создание форм для ввода данных в таблицы базы данных Access 2007

Шаг 7 — О полях в таблицах

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

Текстовый (Значение по умолчанию). Текст или числа, не требующие проведения расчетов, например, номера телефонов. Число символов, не превышающее минимальное из двух значений: 255 или значение свойства Размер поля (FieldSize). Microsoft Access не сохраняет пустые символы в неиспользуемой части поля.

Поле МЕМО. Длинный текст или комбинация текста и чисел. До 65535 символов. (Если поле MEMO обрабатывается через объекты доступа к данным (DAO) и содержит только текст и числа, а не двоичные данные, то его размер ограничивается размером базы данных).

Числовой. Числовые данные, используемые для проведения расчетов.

Дата/время. Даты и время, относящиеся к годам с 100 по 9999, включительно. 8 байт.

Денежный. Денежные значения и числовые данные, используемые в математических расчетах, проводящихся с точностью до 15 знаков в целой и до 4 знаков в дробной части. 8 байт.

Счетчик. Уникальные последовательно возрастающие (на 1) или случайные числа, автоматически вводящиеся при добавлении каждой новой записи в таблицу. Значения полей типа счетчика обновлять нельзя. Подробнее см. в разделе справки для свойства «Новые значения» (NewValues). 4 байт (16 байт, если для свойства «Размер поля» (FieldSize) задано значение кода репликации).

Логический. Логические значения, а также поля, которые могут содержать одно из двух возможных значений (True/False, Да/Нет). 1 бит.

Поле объекта OLE. Объект (например, электронная таблица Microsoft Excel, документ Microsoft Word, рисунок, звукозапись или другие данные в двоичном формате), связанный или внедренный в таблицу Microsoft Access. До 1 Гбайт (ограничивается объемом диска).

Гиперссылка. Строка, состоящая из букв и цифр, и представляющая адрес гиперссылки. Адрес гиперссылки может состоять максимум из трех частей: текст ? текст, выводимый в поле или в элементе управления;адрес ? путь к файлу (в формате пути UNC) или странице (адрес URL).дополнительный адрес ? смещение внутри файла или страницы. Чтобы вставить адрес гиперссылки в поле или в элемент управления, выберите команду «Гиперссылка» из меню «Вставка». Для получения дополнительных сведений см. раздел «Ввод адреса гиперссылки в режиме формы и в режиме таблицы». Каждая из трех частей в типе «Гиперссылка» может содержать до 2048 символов.

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

Обычная Ваша задача сопоставить тип поля с типом информации. Следует отметить преимущество Access для текстового поля. Очень часто СУБД хранят данные в тестовом поле даже если оно не заполнено. Ну, например, для FoxPro. Вы указываете ширину поля скажем 100 символов по самому длинному названию и у Вас есть 1000 записей. Независимо от заполнености размер файла на диске составит 1000 Х 100. Access устраняет этот недостаток и хранит только реальные данные.


Предыдущий Шаг | Следующий Шаг | ОглавлениеАвтор Каев Артем.

Как сделать список в access?

Довольно распространена ситуация, когда выбор значения из одного списка должен приводить к обновлению второго, подчинённого списка, недавно я описывал такую реализацию на PHP, а теперь вот понадобилась в Access.

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

«Примечания» здесь добавлены просто для иллюстрации отношения «один к одному» как связи между двумя ключами.

Теоретически сотрудник может переводиться как на другую должность в рамках отдела, так и в другой отдел, что приведёт к необходимости выбрать должность из списка должностей нового отдела. То есть, по выбору для сотрудника нового отдела из верхнего списка, должен обновляться и нижний список «Наименование должности»:

Как решить эту типовую задачу, мы и поговорим.

1. Источником записей формы «Сотрудники» делаем соответствующую таблицу, форму можно сгенерировать мастером, а затем удалить из неё поля «Код отдела» и «Код должности».

2. Вместо первого поля, включив кнопку «Мастера» на панели элементов Access, сгенерируем список, выводящий вместо кодов названия отделов. Сделать это можно так:

  • форма выведена в режиме конструктора, нажимаем кнопку «Поле со списком», показываем мышкой границы будущего списка. По отпускании кнопки мыши появится окно «Мастер создания полей со списком»;
  • выбираем «Объект будет использовать значения из таблицы или запроса», жмём «Далее»;
  • выбираем таблицу «Отделы», жмём «Далее»;
  • переносим оба поля таблицы отделов в №выбранные поля» (кнопкой >>), жмём «Далее»;
  • убеждаемся, что список виден, а галочка «Скрыть ключевой столбец» включена, жмём «Далее»;
  • выбираем «Сохранить в поле:» и поле «КодОтдела», жмём «Далее»; задаём подпись к списку и жмём «Готово».

3. С помощью конструктора запросов составляем следующий запрос:

Здесь «ПолеСоСписком16» — наименование компоненты верхнего списка.

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

Увидеть это окно можно, щёлкнув правой кнопкой мыши на втором списке и выбрав «Свойства».

5. Теперь самое главное. В списке компонент выбираем «Форма» вместо имени поля со списком, выбираем вкладку события, событие Текущая запись, щёлкаем по кнопке с многоточием, подтверждаем, что нам нужен построитель программы, а не макроса или выражения:

Открылся редактор Visual Basic и появилась пустая функция с именем Form_Current . Пишем туда единственную строчку кода, которая обновит нижний список:

Здесь предполагается, что имя нижнего списка ПолеСоСписком20 .

6. Ту же самую строчку кода добавляем на событие «До обновления» верхнего списка, у меня получилось вот что:

7. Готово, теперь при выборе отдела из верхнего списка в нижний список подгружается список должностей этого отдела. Все остальные возможности приложения — стандартные и не потребуют написания кода.

Аналогично можно организовать любые другие 2 подчинённых списка на Access, когда при выборе значения из одного списка должны загружаться новые значения во второй список.

Ну и общие соображения по зависимым спискам в Access:

Если первый список не связан с полем источника записей формы, то обновление надо ставить в обработчик события BeforeUpdate («До обновления» в окне свойств конструктора формы в русских версиях Access-а), либо в AfterUpdate.

Если же первый список связан с полем источника записей формы, то обновление надо ставить в обработчик события Current («Текущая запись») формы и BeforeUpdate (AfterUpdate) первого списка.

Данный способ действует только для одиночной формы (на экране видно одну запись).

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

Свойства таблиц и полей в Access

У полей и таблиц есть свойства, позволяющие управлять их работой и характеристиками:

  1. Это свойства таблицы.
  2. Это свойства поля.

В БД Access под свойствами таблицы понимают атрибуты, которые определяют её работу и внешний вид. Свойства таблицы задают в «Конструкторе» на странице свойств таблицы. Допустим, вы можете задать свойство «Режим по умолчанию», если хотите указать, как она должна по умолчанию отображаться.

Свойство поля применимо к конкретному полю в таблице, определяя его характеристики либо какой-нибудь поведенческий аспект. Некоторые свойства можно задать в режим таблицы Access. Кроме того, можно настроить любые свойства в «Конструкторе», используя область «Свойства поля».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector