В данное время приложению access не удается задать для свойства ограничиться списком
Искусство создания базы данных в Microsoft Office Access 2007
Предметом изучения данного пособия является процесс создания базы данных в Microsoft Office Access 2007, интерфейс которой отличается от предыдущих версий Access. Настоящее учебное пособие написано для студентов Института математики Сибирского федерального университета, обучающихся по направлениям и специальностям: «Математика», «Математика. Компьютерные науки», «Прикладная математика и информатика». Включенные в пособие материалы составляют практический раздел дисциплины «Основы баз данных», читаемой автором на протяжении многих лет студентам-математикам.
Цель пособия: ознакомить студентов с идеями и методами создания баз данных с помощью современных систем управления базами данных (СУБД). В качестве примера взята самая популярная и доступная на сегодняшний день реляционная СУБД ‒ Microsoft Office Access 2007 (далее просто Access). Автор не ставил перед собой задачу дать исчерпывающую информацию о СУБД Access. На этот счет имеется обширная справочная и учебная литература [1 ‒ 3, 6, 7, 9, 11, 15, 19, 21]. Настоящее пособие – учебное издание, адресованное в первую очередь студентам. Поэтому оно содержит не только теоретический материал, но и описание заданий, которые должны выполнить студенты на практических занятиях. Предполагается, что студенты знакомы с основами проектирования баз данных, изложенными в работах [4, 5, 8, 10, 12 – 14, 16 – 18, 20].
Почему называется так пособие? Причем здесь искусство? Дело в то, что в Access одно и то же действие можно реализовать различными инструментами. Функциональная избыточность – это главная особенность современных программных средств, в том числе и Access. Разумное использование этой избыточности в определенных ситуациях – искусство построения базы данных в конкретной инструментальной среде. Практические рекомендации по рациональному применению инструментов Access и предостережения от возможных ошибочных решений постоянно даются в тексте данного пособия.
Пособие включает в себя шесть тем, охватывающих полный цикл реализации проекта базы данных с помощью Access: от создания основных объектов и построения пользовательского интерфейса до администрирования базы данных. Изучение первых трех тем, касающихся таблиц, запросов и отчетов, позволяет сформировать общее представление о проблематике баз данных и особенностях построения баз данных в Access. Последние три темы, посвященные формам, макросам и настройке базы данных, направлены на отработку навыков построения пользовательского интерфейса, автоматизацию работы с отчетами и формами, обеспечение целостности и защиту данных. Каждая из шести тем содержит изложение необходимого теоретического материала. Теоретический материал дается «без воды», не перегружен иллюстрациями, снабжен подробными пошаговыми инструкциями по реализации тех или иных проектных решений. Всякая тема завершается практическими заданиями и контрольными вопросами, которые ориентированы на отработку практических навыков и закрепление пройденного материала. В пособии для любого задания предусмотрено десять вариантов – десять различных предметных областей. Все шесть заданий одного того же варианта взаимосвязаны. Их выполнение позволяет для заданной предметной области реализовать все этапы создания базы данных с помощью Access.
• полужирным шрифтом выделены элементы интерфейса и инструменты Access (вкладки, команды, пункты меню, названия клавиш и кнопок, заголовки диалоговых окон и инструментальных средств);
• курсивом обозначены новые термины, а также имена полей и базовых таблиц;
• знак плюс между названиями клавиш означает, что их следует нажимать одновременно, например, Ctrl + P;
• значок ☞ указывает на адресованные читателю важные замечания, рекомендации, предупреждения, ограничения, которые надо учесть.
1. Создание таблиц
База данных ‒ это динамически обновляемая информационная модель некоторой предметной области. Работа с базой данных делится на три этапа: проектирование, создание, эксплуатация. Современные базы данных создаются и эксплуатируются при помощи СУБД. СУБД Access позволяет создавать реляционные базы данных, в которых данные хранятся в виде множества связанных между собой таблиц. Всякая база данных формируется на основе проекта, который определяет ее структуру и информационные потребности пользователей. Цель данной темы: дать ответы на основополагающие вопросы, из чего состоит база данных в Access и как ее создать.
1.1. Немного теории
Основные объекты базы данных
База данных Access – это файл с расширением ACCDB (ACCDB-файл), в котором хранятся такие объекты как таблицы, запросы, отчеты, формы, макросы, модули.
Таблицы (базовые таблицы) – объекты базы данных, предназначенные для хранения информации о предметной области. Как правило, база данных состоит из нескольких связанных между собой таблиц. Каждую строку таблицы называют в Access записью, а столбец – полем.
Запросы предназначены для извлечения информации, хранящейся в одной или нескольких таблиц. С помощью запросов можно, задав ряд условий, отфильтровать и отобразить только нужные записи. В базе данных хранятся не результаты выполнения запросов, а лишь предписания описывающие, какую информацию надо извлечь из таблиц базы данных.
Отчеты служат для представления и печати информации, хранящейся в таблицах и формируемой запросами базы данных. С помощью отчетов можно просматривать и печатать нужные сведения в виде документов установленного образца. Отчеты можно запускать в любое время, и они всегда будут отражать текущее состояние базы данных.
Формы называют окнами базы данных, которые используются для просмотра, ввода и редактирования данных, организации пользовательского интерфейса. Они могут содержать кнопки для выполнения различных команд.
Модули и макросы расширяют функциональные возможности Access и позволяют автоматизировать некоторые специфические процессы обработки информации, диктуемые предметной областью.
Макросы – это программы, составленные из макрокоманд. Набор макрокоманд Access представляет собой упрощенный язык программирования и содержит несколько десятков команд. Каждая макрокоманда задает определенное действие над каким-либо объектом базы данных. Макросы чаще всего запускаются при наступлении определенных событий. Например, когда открываемый отчет пустой.
Модули (модули VBA), как и макросы, являются программами. Они пишутся на языке программирования Visual Basic для приложений (VBA). Это язык программирования более низкого уровня, чем язык макрокоманд.
Запуск системы и существующей базы данных
Чтобы запустить Access, нужно выполнить следующие действия.
1. Щелкнуть по кнопке Пуск на панели задач Windows.
2. Указать Все программы.
3. Выбрать Microsoft Office, а затем Microsoft Access.
Откроется страница Приступая к работе с Microsoft Office Access. В ней показано, с чего можно начать работу в Access. Например, можно открыть одну из недавно использованных баз данных, создать новую базу данных с помощью шаблона или создать новую пустую базу данных.
Если запуск Access осуществлен, открыть существующую базу данных можно с помощью кнопки Microsoft Office, расположенной в верхнем левом углу страницы Приступая к работе с Microsoft Office Access. Это можно сделать так.
1. Щелкнуть кнопку Microsoft Office. Откроется окно, в котором выбрать пункт Открыть.
2. В диалоговом окне Открытии документа найти ACCDB-файл базы данных и нажать кнопку Открыть.
Используйте поле списка значений, если имеется ограниченный набор значений, которые изменяются не часто, например шкалы оценок или категории расходов.
Примечание. В Access существуют другие типы полей списков: поле подстановки, которое ищет соответствующие данные в таблице (например, поле идентификатора, которое ищет полное имя), и многозначное поле, в котором может храниться до 100 значений, разделенных запятой (,). За дополнительной информацией обращайтесь к статьям Создание и удаление поля подстановки и Создание и удаление многозначного поля.
В этой статье
Создание поля списка значений
Откройте таблицу в режиме Конструктор.
Щелкните в столбце Тип данных ячейку, соответствующую столбцу, который будет задан как поле подстановки, щелкните стрелку вниз и выберите пункт Мастер подстановок.
Примечание. Мастер подстановок в зависимости от выбранных в нем настроек создает списки трех типов: поле подстановки, поле списка значений и многозначное поле.
Внимательно следуйте указаниям мастера.
На первой странице выберите вариант Будет введен фиксированный набор значений и нажмите кнопку Далее.
На второй странице оставьте первый столбец выбранным, введите несколько значений (по одному значению на каждую строку под заголовком столбца), а затем нажмите кнопку Далее.
На третьей странице на вопрос Ограничить записи вариантами из списка? выберите вариант ответа Ограничиться списком, а затем нажмите кнопку Готово.
Обновление свойств поля списка значений
При создании поля списка значений с помощью мастера подстановок свойства подстановки для этого поля задаются автоматически. Чтобы изменить структуру поля списка значений, задайте его свойства Подстановка.
Откройте таблицу в Конструкторе.
Щелкните имя поля подстановки в столбце Имя поля.
В разделе Свойства поля откройте вкладку Подстановка.
Задайте свойству Тип элемента управления значение Поле со списком, чтобы видеть все доступные изменения свойств, отражающие ваш выбор. За дополнительной информацией обращайтесь к статье Свойства поля подстановки.
Редактировать список значений можно непосредственно в свойстве Источник строк.
Удаление поля списка значений
Важно! При удалении поля списка значений, в котором содержатся данные, эти данные теряются без возможности восстановления, отменить это действие нельзя. Поэтому перед удалением каких-либо полей или других компонентов базы данных создавайте резервную копию базы данных.
Удаление из режима таблицы
Откройте таблицу в режиме Режим таблицы.
Найдите поле списка значений, щелкните правой кнопкой мыши строку заголовка и выберите команду Удалить поле.
Удаление из конструктора
Откройте таблицу в режиме Конструктор.
Щелкните область выделения строки рядом с полем списка значений, а затем нажмите клавишу DELETE, либо щелкните правой кнопкой мыши область выделения строки и выберите команду Удалить строки.
Свойства поля подстановки
Тип элемента управления
Укажите это свойство, чтобы задать отображаемые свойства:
Поле со списком содержит список всех доступных свойств.
Список содержит список всех доступных свойств кроме свойств Число строк списка, Ширина списка и Ограничиться списком.
Текстовое поле не отображает свойства и преобразует поле в поле, доступное только для чтения.
Тип источника строк
Определяет, откуда брать значения для поля подстановки: из другой таблицы или запроса либо из списка указанных вами значений. В качестве источника вы также можете выбрать имена полей таблицы или запроса.
Указывает таблицу, запрос или список значений, из которых извлекаются значения для поля подстановки. Если свойство Тип источника строк имеет значение Таблица или запрос или Список полей, в этом свойстве должно быть указано имя таблицы или запроса либо инструкция SQL, представляющая запрос. Если свойство Тип источника строк имеет значение Список значений, это свойство должно содержать список значений, разделенных точками с запятой.
Указывает столбец в источнике строк, в котором содержится значение, хранящееся в столбце подстановок. Может принимать любое значение в диапазоне между 1 и числом столбцов в источнике строк.
Столбец, из которого извлекается значение, может отличаться от отображаемого столбца.
Определяет число столбцов в источнике строк, которые можно отобразить в поле подстановки. Чтобы выбрать столбцы для отображения, нужно задать ширину столбцов в свойстве Ширина столбцов.
Определяет, нужно ли отображать заголовки столбцов.
Задает ширину каждого столбца. Отображаемое значение в поле подстановки — это один или несколько столбцов, для которых в свойстве Ширина столбцов указано значение, отличное от нуля.
Если столбец не нужно отображать, например столбец "Код", укажите значение "0" для его ширины.
Число строк списка
Определяет количество строк, отображаемых в поле подстановки.
Определяет ширину элемента управления, появляющегося при отображении поля подстановки.
Определяет возможность ввода значения, отсутствующего в списке.
Разрешить несколько значений
Определяет возможность выбора нескольких значений в поле подстановки.
Нельзя изменить значение этого свойства с "Да" на "Нет".
Разрешить изменение списка значений
Определяет возможность редактирования элементов поля подстановки, основанного на списке значений. Если это свойство имеет значение Да, при щелчке правой кнопкой мыши поля подстановки, основанного на списке значений из одного столбца, в меню появится команда Изменение элементов списка. Если поле подстановки содержит несколько столбцов, это свойство игнорируется.
Форма изменения элементов списка
Указывает существующую форму, используемую для изменения элементов списка в поле подстановки, основанном на таблице или запросе.
Только значения источника строк
Показывает только значения, соответствующие текущему источнику строк, если свойство Разрешить несколько значений имеет значение Да.
Поле со списком access – составной элемент управления, объединяющий поле и раскрывающийся список, позволяющий не только выбирать (как в простом списке), но и вводить значения.
Поле со списком позволяет экономить место в объекте базы данных (форме, таблице и др.), так как по умолчанию оно отображает одну строку списка.
Открывается список нажатием на кнопке (в правом углу элемента управления «Поле со списком access») или клавишами Alt+«стрелка вниз». При помощи простого макроса можно сделать так, чтобы поле со списком раскрывалось само при входе в него.
Чтобы ввести значение в поле со списком access, можно начать вводить значение в поле с клавиатуры или выбрать нужное значение в выпадающем списке. При вводе значений с клавиатуры помогает свойство «Автоподстановка». Если установить его как «да», то при вводе информации Access автоматически будет предлагать значения из списка, выделяя буквы предлагаемого значения после последнего введённого символа.
Если значение подходит, для его ввода надо лишь нажать клавишу Enter или Tab. Свойство «Ограничиться списком» не разрешит ввести значения, которого нет в списке. Ограничивать списком вводимые значения стоит в первую очередь для снижения вероятности ввода ошибочной информации.
Например, слово «детектив» в поле «литературный жанр» можно написать «детиктив» или «дитиктив», или ещё как-нибудь (неважно, опечатка это или следствие неграмотности оператора. Любой человек может ошибаться и даже имеет на это право).
Поле, содержащее ошибочные значения, уже нельзя правильно ни отсортировать, ни использовать в запросе. Мы зададим запрос с фильтром Like «детектив» и будет найдено, предположим, 120 книг этого жанра. Но вследствие неправильного ввода информации запрос «не увидел», к примеру, 18 книг.
Такая ситуация просто недопустима. Гораздо проще один раз и в одном месте (в базовой таблице подстановки) правильно ввести название жанра и связать эту запись с полем подстановки в таблице поставок книг отношением «один-ко-многим» (можно и не связывать. Но этот вопрос не представляется возможным обсудить в пределах одной статьи, так как слишком много информации о типах полей, связях и др.).
Другой вопрос состоит в том, стоит ли разрешать оператору добавлять новые значения в базовую таблицу подстановки (со стороны «один»). Всё зависит от конкретных задач и типа информации. Не всегда можно предугадать все возможные варианты для значений поля подстановки. Например, поле подстановки для указания пола сотрудника может принимать два значения: «мужской» и «женский». А вот попробуйте создать поле подстановки мужских или женских имён (например, мужские имена: Андрей, Андриан, Андрон, Анджей и т. д.; женские имена: Наталья, Наталия, Наталея, Натали и т. д.).
Во-первых, некоторые родители дают такие имена, которых не было раньше в природе (а это имя ещё надо ввести в базовую таблицу подстановки).
Во-вторых, схожие имена будут «рябить» перед глазами (могут быть десятки очень похожих имён, отличающихся только одной буквой).
В-третьих, быстрее ввести имя вручную побуквенно, чем искать в большом списке.
В-четвёртых, вряд ли придётся включать поле имени в простой или составной ключ, так как одних Ивановых Иванов Ивановичей в России не сосчитать (обычно для этого используют числовой код, однозначно идентифицирующий запись в таблице).
В-пятых, неправильно введённое имя, как правило, не даёт критических ошибок при фильтрации или сортировке (по причине своей неуникальности имя редко используется для таких случаев).
К тому же оно чаще всего используется в инициалах. Например, я ввёл значение «Иванов Андриан Иванович», хотя имя человека «Андрей». В поле «ФИО» получим «Иванов А. И.». Вроде как и ошибки нет.)
Создаётся поле со списком access, как правило, в режиме конструктора объекта базы данных:
- в таблицах – в области «Свойства поля» на вкладке «Подстановка» есть такой аргумент «Тип элемента управления» с выпадающим списком. Выбираем значение «Поле со списком» и выбираем следующие аргументы: тип источника строк, сам базовый источник строк, номер присоединённого столбца и другие необходимые элементы;
Столбец подстановок – это поле, значения которого выбираются из списка. Этот список может быть формирован вручную, взят из другой таблицы или запроса. Столбец подстановок можно создать различными способами. Наиболее простой из них – с помощью Мастера подстановок.
В Режиме таблицы вызвать Мастер подстановок можно следующим образом.
1. Открыть таблицу, в которой нужно создать столбец подстановок. Перейти на вкладку Режим таблицы.
2. В таблице выделить поле, которое будет столбцом подстановок.
3. В группе Поля и столбцы щелкнуть команду Столбец подстановок. Запуститься Мастер подстановок и откроется диалоговое окно Создание подстановки.
Вызвать Мастер подстановок можно также в Конструкторе таблиц. Для этого достаточно проделать следующие шаги.
1. Открыть таблицу, в которой нужно создать столбец подстановок
2. В бланке Конструктора таблиц перейти на строку, соответствующую полю, которое должно стать столбцом подстановок.
3. В столбце Тип данных в раскрывающемся списке выбрать Мастер подстановок. Запуститься Мастер подстановок и откроется окно Создание подстановки.
Чтобы организовать фиксированный список значений, следует выполнить действия.
1. В окне Создание подстановки выбрать Будет введен фиксированный набор значений. Щелкнуть кнопку Далее.
2. Указать число столбцов списка. Ввести значения в ячейки списка. Щелкнуть кнопку Далее.
3. Задать подпись, которую должен иметь столбец подстановок.
4. Снять флажок в свойстве Разрешить несколько значений. Щелкнуть кнопку Готово.
Для создания столбца подстановок в виде списка значений из таблицы или запроса нужно осуществить надлежащие шаги.
1. В окне Создание подстановки выбрать Объект «столбец постановки» будет использовать значения из таблицы или запроса. Щелкнуть кнопку Далее.
2. Указать таблицу или запрос со значениями, необходимыми для подстановки. Щелкнуть кнопку Далее.
3. Отобрать поля для подстановки. Щелкнуть кнопку Далее.
4. Определить порядок сортировки значений в подстановке. Щелкнуть кнопку Далее.
5. Если на шаге 3 было выбрано несколько полей, то снять флажок Скрыть ключевой столбец. В этом случае будут отображаться все столбцы подстановки. Щелкнуть кнопку Далее.
6. Если на шаге 3 было выбрано несколько полей, то требуется указать поле, значение которого будет записываться в таблицу, в которой формируется подстановка. Щелкнуть кнопку Далее.
7. Задать подпись, которую должен иметь столбец подстановок.
8. Снять флажок в свойстве Разрешить несколько значений. Щелкнуть кнопку Готово.
Столбец подстановок будет создан. Свойства подстановки можно просмотреть и изменить в бланке конструктора, открыв вкладку Подстановка в области Свойства поля. Здесь целесообразно свойство Разрешить изменение списка значений установить в состояние Да. Это позволит добавлять в список новые значения. Можно разрешить в поле вводить значения, которых нет в списке, не изменяя при этом сам список. Для цели свойству Ограничиться списком надо присвоить значение Нет.
☞ Примечание. В Access допускается формирование столбца подстановок, разрешающего выбор из списка сразу несколько значений. Достаточно при создании столбца подстановок при помощи мастера установить флажок в свойстве Разрешить несколько значений.
У меня на форме ПолеСоСписком у него источник строк - таблица.
Стоит свойство ограничится списком = истина.
На событие, которое возникает, когда не в списке я спрашиваю и добавляю элемент в таблицу.
Но как мне заставить обновится это поле со списком, чтобы он заново считал эти поля?
не помню, давно access не занимался. Ты хочешь добавить в таблицу новое значение когда в комбо юзер ввел новое значение? Помню что надо писать код и _NotInList и в _afterupdate. там есть какие-то игры с undo, requery вроде надо писать в _afterupdate
Всем спасибо, проблему решил сам. Для последующих поколений публикую решение проблемы.
Нужно в процедуре, после добавления элемента в таблицу глобалной переменной Response присвоить значение acDataErrAdded.
А если юзверь отказался от внесения данных, то acDataErrContinue.
В хелпе, к сожалению вообще на эту тему ничего не написано.
Вот универсальная процедура, может кому надо.
______________________________________________________________
Public Function AppendLookupTable(cbo As ComboBox, NewData As Variant, Optional blnMsg As Boolean = True) As Integer
Dim rst As DAO.Recordset
Dim Response As Long
On Error GoTo m1
AppendLookupTable = acDataErrContinue
If Not (IsNull(NewData)) Then
If blnMsg Then
Response = MsgBox("Значение '" & NewData & "' отсутствует в списке." & vbCrLf & "Для добавления нажмите ОК.", vbOKCancel + vbQuestion, "Добавление значения")
Else
Response = 1
End If
Select Case Response
Case 1
Set rst = CurrentDb.OpenRecordset(cbo.RowSource)
rst.AddNew
rst(1) = NewData
rst.Update
rst.Close
AppendLookupTable = acDataErrAdded
Case 2
Exit Function
End Select
End If
m2:
Set rst = Nothing
Exit Function
m1:
MsgBox "Ошибка " & Err.Number & ": " & Err.Description & " в функции AppendLookupTable", vbInformation
Resume m2
End Function
vBulletin® v3.8.5, Copyright ©2000-2021, Jelsoft Enterprises Ltd.
Читайте также: