Элементы управления выбора: Выключатель, Переключатель, Флажок и Группа

Элементы управления выбора: Выключатель, Переключатель, Флажок и Группа

О предоставлении пользователю возможности выбирать значение из предложенного набора вариантов с помощью элементов управления: флажков, переключателей, выключателей и групп элементов — уже говорилось в гл. 5. Рассмотрим эти элементы управления чуть более подробно. Три типа элементов: выключатели, переключатели и флажки — выполняют одинаковые функции и используются для представления значения логического типа данных. Они могут принимать значения о (Нет) или -1 (Да). Различаются они внешним видом (рис. 9.3).

Рис. 9.3. Элементы управления выбора

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

Поскольку эти элементы предназначены в первую очередь для улучшения визуального восприятия данных, то предусмотрено несколько вариантов их оформления. Для элемента управления Флажок (CheckBox) эти варианты представлены на рис. 9.4, остальные элементы имеют те же варианты оформления.

Рис. 9.4. Варианты оформления элементов выбора

Элемент управления Группа (Option Group) используется для того, чтобы дать возможность выбрать одно значение из небольшого набора вариантов. Пример групп элементов был приведен на рис. 9.3. Если элементы выбора объединены с помощью элемента управления Группа, то только один из этих элементов может быть выбран пользователем, т. е. получит значение Да.

Если требуется задать несколько независимых признаков, например тип оплаты и способ вывоза товара, необходимо создать несколько независимых элементов выбора или групп.

В одну группу можно объединить элементы выбора даже разных типов, но к полю таблицы присоединяется значение самой группы, а не составляющих ее элементов. Значением группы является уникальное значение, сопоставленное выбранному элементу (обычно это его порядковый номер). Чтобы привязать группу к источнику данных, установите значение свойства Данные (ControlSource) элемента Группа (Option Group). Чтобы выделить элемент Группа, а не элемент управления в группе, нужно щелкнуть по рамке группы. Тогда в диалоговом окне Свойства (Properties) отобразятся свойства группы (рис. 9.5).

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

Элементы управления в группе не должны присоединяться к полям таблицы (в окне свойств для сгруппированных элементов даже не отображается свойство Данные (ControlSource)). Зато для каждого из элементов управления в группе нужно задать то уникальное значение, о котором мы упомянули, чтобы определить значение самой группы, когда данный элемент будет выбран. Делается это с помощью свойства Значение параметра (Option Value), которое должно быть числовым и обязательно уникальным для каждого из элементов управления в группе (рис. 9.6). В приведенном примере заданы следующие значения свойства Значение параметра (Option Value): 1 — Оплачено полностью, 2 — Оплачено частично, 3 — Не оплачено.

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

Для размещения элемента управления Группа (Option Group) на форме можно воспользоваться соответствующим мастером. Для демонстрации работы мастера рассмотрим процедуру создания группы, аналогичной представленной на рис. 9.5. Создайте новую форму, открыв ее в режиме Конструктора. Затем выполните следующие действия:

  • Выберите на панели элементов элемент управления Группа (Option Group) и перетащите его на форму (кнопка Мастера (Control Wizards) при этом должна быть нажата). Запустится Мастер группы и появится окно, представленное на рис. 9.7.

Рис. 9.5. Свойства элемента управления Группа

Рис. 9.6. Установка значения параметра переключателя

Рис. 9.7. Первое диалоговое окно Мастера группы

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

Рис. 9.8. Второе диалоговое окно Мастера группы

  • Теперь нужно выбрать тот флажок (выключатель, переключатель), который будет установлен по умолчанию, или указать, что не нужно определять значение по умолчанию. Выберите из списка значение Не оплачено и нажмите кнопку Далее (Next).
  • В следующем диалоговом окне мастера (рис. 9.9) необходимо определить значения для каждого параметра. По умолчанию мастер предлагает возрастающую последовательность чисел: 1, 2, 3. Можете оставить эти значения и просто нажать кнопку Далее (Next).

Рис. 9.9. Третье диалоговое окно Мастера группы

Рис. 9.10. Четвертое диалоговое окно Мастера группы

  • Если данная форма связана с каким-либо источником данных, то есть возможность создаваемую группу привязать к одному из полей в этом источнике данных. В таком случае появится диалоговое окно, представленное на рис. 9.10. В противном случае отобразится окно, представленное на рис. 9.11, и нужно будет перейти сразу к шагу 6. В диалоговом окне, показанном на рис. 9.10, следует выбрать, будет ли создаваемая группа связана с полем источника данных или останется свободным элементом — например, чтобы значение группы было использовано в выражениях в других элементах формы, макросах или процедурах VBA. Чтобы связать группу с полем из источника данных, выберите переключатель Сохранить значение в поле (Store the value in this field) и выберите имя поля в раскрывающемся списке. Если же нужно оставить группу свободной, должен быть выбран переключатель Сохранить значение для дальнейшего применения (Save the value for later use). Нажмите кнопку Далее (Next).
  • Далее предлагается выбрать тип элементов управления в группе: флажки, выключатели или переключатели — и вариант оформления группы (один из пяти вариантов, описанных выше). Выберите тот тип и вариант, которые вам понравятся. Обратите внимание, что слева мастер показывает вам образец выбранного вами варианта (см. рис. 9.11).

Рис. 9.11. Пятое диалоговое окно Мастера группы

  • В последнем диалоговом окне Мастера группы нужно только определить текст надписи, которая будет служить названием группы. В нашем примере требуется ввести название Оплата (рис. 9.12). Теперь нажмите кнопку Готово (Finish), и вы увидите результат работы мастера. У вас должна получиться группа флажков, аналогичная представленной на рис. 9.13.
  • Дальше вы можете реорганизовать эту группу, как вам нравится: например, вытянуть все флажки в одну строку, перенести надписи под флажки и т. д.

Рис. 9.12. Последнее диалоговое окно Мастера группы

Рис. 9.13. Группа флажков, созданная с помощью Мастера группы

Источник:
http://www.taurion.ru/access/9/7

Флажки и переключатели в формах Access

В данной части лабораторной работы будут рассмотрены флажки и переключатели на формах Access.

Флажки

Предназначены для заполнения логических полей, принимающих только два значения: Да / Нет или Истина / Ложь.

Рассмотрим пример использования флажков в формах Access для ввода значений категории Ценный в таблицу ТОВАР:

  1. Добавим в таблицу ТОВАР поле Ценный, указав логическое значение. Какой товар ценен, а какой нет, решите сами. Пометки установим после.
  2. Теперь используя буфер обмена, создадим из формы “Товар” форму “Товар с флажками”. И откроем новую форму в режиме конструктора.
  3. Добавим на область данных элемент Флажок. Подпись переименуем в Ценный, а в Свойствах флажка укажем, что данные берем из поля Ценный.
  4. Перейдите в режим работы с формой и установите флажки на ценных товарах.
  5. Перейдите в таблицу ТОВАР и убедитесь, что соответствующие флажки установлены.

Задание

Создайте форму “Товар с флажками”.

  1. Добавьте в таблицу ПОКУПАТЕЛЬ поле Надежный. Создайте форму “Покупатель с флажком”.

Создание группы переключателей

Переключатели

Создадим форму “Товар с переключателями” на основе формы “Товар”.

  1. Используя буфер обмена, создаем копию нужной формы и открываем ее в режиме конструктора.
  2. Выбираем на Панели элементов пиктограмму Группа (или Группа переключателей). И размещаем ее в области данных. После этого должен запуститься Мастер. Если он не запустился, то у Вас отжата пиктограмма Волшебная палочка, включите ее.
  3. Мастер предложит ввести подписи переключателей. Введем названия категорий товаров. При этом один из товаров назначим предпочтительным.
  4. Затем соглашаемся с предложенными значениями и указываем для хранения поле Категория таблицы ТОВАР.
  5. Выберем представление и вид.
  6. Задаем название группе Категория товара.

Задание. Создайте формы

  1. “Товар с переключателями”
  2. “Покупатель с переключателями”, используя поле Категория таблицы ПОКУПАТЕЛЬ.

Связанные статьи

Рекомендую прочесть статьи, связанные с данной:

Источник:
http://aermolenko.ru/2012/03/flazhki-i-pereklyuchateli-v-formah-access/

Отображения значений «Да» и «Нет» c помощью флажка и других элементов управления

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

В Access поле «да/нет» хранит только два значения: «Да» и «нет». Если вы используете текстовое поле для отображения поля «да/нет», оно отображается как-1 для «Да», а 0 — «нет». Эти значения не очень важны для большинства пользователей, поэтому Access предоставляет флажки, переключатели и выключатели, которые можно использовать для отображения и ввода значений «Да» и «нет». Эти элементы управления предоставляют графическое представление значения «да/нет», которое легко использовать и легко читать.

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

Читайте также  Персональный сайт - Округление чисел в Аксессе

В этой статье

Выбор используемого элемента управления

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

На приведенном ниже рисунке показаны три элемента управления и показано, как они представляют значения «Да» и «нет». Столбец «Да» показывает элемент управления, который отображается при выборе, а столбец » нет » показывает элемент управления в том виде, в каком оно отображается при снятом флажке.

Создание связанного флажка, переключателя или выключателя

Вы можете быстро создать флажок, перетащив поле «да/нет» из области » список полей » в форму или отчет.

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

Если область список полей еще не отображается, нажмите клавиши ALT + F8, чтобы отобразить ее.

При необходимости разверните список таблицы, щелкая знаки «плюс» (+) рядом с именами таблиц.

Перетащите поле «да/нет» из области » список полей » в форму или отчет.

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

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

Создание свободного флажка, переключателя или переключателя

С помощью несвязанного флажка, переключателя или выключателя в пользовательском диалоговом окне можно вводить пользовательские данные, а затем выполнять действия на основе этих входных данных.

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

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

Щелкните форму или отчет в том месте, куда вы хотите поместить элемент управления.

Access разместит элемент управления в форме или отчете.

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

ПереИменование элемента управления

Убедитесь, что элемент управления выбран.

Если окно свойств не отображается, нажмите клавишу F4.

Введите новое имя в поле свойства имя элемента управления.

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

Общие сведения о группах переключателей

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

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

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

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

Создание группы переключателей

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

Дополнительные сведения о добавлении полей в таблицу можно найти в статье Создание таблицы и добавление полей.

Откройте форму в режиме конструктора, щелкнув ее правой кнопкой мыши в области навигации, а затем выбрав Конструктор в режиме конструктора .

На вкладке Конструктор в группе Элементы управления выберите параметр Использовать мастера .

В той же группе нажмите кнопку Группа переключателей .

Щелкните форму в том месте, где вы хотите разместить группу переключателей.

Следуйте его инструкциям. На последней странице мастера нажмите кнопку Готово.

Группа переключателей Access будет размещена в форме.

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

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

Если окно свойств не отображается, нажмите клавишу F4.

Введите новое имя в поле свойства имя группы переключателей.

Добавление нового переключателя в существующую группу

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

Откройте форму в режиме конструктора, щелкнув ее правой кнопкой мыши в области навигации, а затем выбрав Конструктор в режиме конструктора .

Щелкните рамку группы переключателей, чтобы выделить ее, а затем перетащите маркеры изменения размера, чтобы освободить место для нового элемента управления «параметр».

Выполните одно из следующих действий.

Создание нового элемента управления в группе

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

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

Щелкните, чтобы поместить элемент управления в группу.

Перемещение существующего элемента управления в группу

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

Выберите элемент управления, который вы хотите переместить в группу переключателей.

На вкладке Главная в группе Буфер обмена нажмите кнопку Вырезать.

Выберите группу переключателей, щелкнув рамку, которая окружает группу.

На вкладке Главная в группе Буфер обмена нажмите кнопку Вставить.

Access добавит элемент управления в группу.

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

Выберите только что добавленный элемент управления, а затем нажмите клавишу F4, чтобы открыть окно свойств элемента управления.

Обратите внимание на значение свойства «значение параметра » вновь добавленного элемента управления. В зависимости от ваших потребностей вы можете оставить его в предложении доступа к значению или изменить его на другое значение.

Источник:
http://support.microsoft.com/ru-ru/office/%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B4%D0%B0-%D0%B8-%D0%BD%D0%B5%D1%82-c-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-%D1%84%D0%BB%D0%B0%D0%B6%D0%BA%D0%B0-%D0%B8-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D1%85-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-4fa55fff-b3a0-4d03-a7a6-a2cfe4d03d4c

Иллюстрированный самоучитель по Microsoft Access 2002

Параметры работы с формами. Основные элементы управления.

При создании новых форм используются параметры, заданные с помощью диалогового окна Параметры (Options). Для отображения окна параметров выберите команду Сервис › Параметры (Tools › Options) и в появившемся диалоговом окне раскройте вкладку Формы и отчеты (Forms/Reports) (рис. 5.12). С помощью этой вкладки можно задать имя существующей формы (в текстовом поле Шаблон формы (Form template)), которая будет использована в качестве образца оформления новых форм, исключая формы, созданные с помощью Мастера форм. Можно также задать способ выделения объектов в форме или отчете, выбрав соответствующий элемент в группе Выделение объектов (Selection behavior), и еще назначить использование по умолчанию процедур VBA для обработки событий форм, элементов управления или отчетов, установив флажок Всегда использовать процедуры обработки событий (Always use event procedure).


Рис. 5.12. Вкладка Формы и отчеты диалогового окна Параметры

Основные элементы управления

В этом разделе мы рассмотрим наиболее простые и часто используемые элементы управления: текстовое поле, надпись, поле со списком, переключатель, выключатель и флажок. Формы с вкладками и многостраничные формы будут подробно рассмотрены в гл. 9.

Чтобы сделать форму более понятной и легко читаемой, в нее добавляют заголовки, подписи или пояснения. Этот текст является неизменяемым и создается с помощью элемента управления Надпись (Label).

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

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

Группа (рис. 5.13) тоже представляет собой элемент управления, который имеет название Группа переключателей (Option group). С каждым элементом управления в группе сопоставляется уникальное число, однозначно определяющее данный элемент в группе, и это число сохраняется в качестве значения свойства Значение (Option Value) элемента управления. Отдельно стоящий элемент управления типа Флажки (Check box), Переключатели (Option button) или Выключатели (Toggle button), не включенный в группу подобных элементов, определяет значение логического типа: Да (Yes) или Нет (No), В данном случае вместо значения Да допускается использовать значение Истина (True) или любое положительное число, а вместо значения Нет – значение Ложь (False) или ноль. Элементы управления Флажки (Check box), Переключатели (Option button), Выключатели (Toggle button) и Группа переключателей (Option group) имеют свойство Значение по умолчанию (Default Value), позволяющее задать первоначальное состояние элемента управления или группы. Для отдельного элемента управления в качестве значения этого свойства используется значение логического типа, а для группы – число, сопоставленное с одним из элементов группы (с тем элементом, который будет выбран в группе по умолчанию).

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


Рис. 5.13. Отдельные флажки, переключатели, выключатели и группы элементов

Кроме групп элементов, для предоставления выбора значения какого-либо параметра из заданного набора можно использовать элементы управления Список (List Box) или Поле со списком (Combo Box). Ввести значение в поле со списком можно двумя способами: ввести значение в поле или выбрать значение в раскрывающемся списке.

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

Источник:
http://samoychiteli.ru/document18111.html

Access! Добавление записей в подчиненную таблицу

1) Подскажите пожалуйста, как организовать добавление n записей (где n — значение поля в форме) в подчиненную таблицу(форму) автоматически (есть формула) при нажатии на кнопку в форме.

2) Как при включении флажка (лог. поле в таблице) сделать всю запись нередактируемой?

3) Если в меню Access Add-Ins нет packaging Wizard, значит не сделать независимого приложения или?

19 ответов

Способов масса:
1. через DoCmd:
‘ переводим фокус в подч. форму (нак какой-нибудь элем.)
‘ делается это в 2 этапа
Forms![Главн_форма]![Подч_форма].SetFocus
Forms![Главн_форма]![Подч_форма].Form![Имя_Контрол].SetFocus
DoCmd.GoToRecord ,,acNewRec
‘ заполняем поля в новой записи и повторяем все дальше

Dim dbs As Database, rst As Recordset, rstClone As Recordset

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(«Таблица1», dbOpenDynaset)
With rst
.AddNew
!Поле1 = «ля-ля»
!Поле2 = «ля-ля»
.Update
End With

‘ обновление формы и переход на последнюю запись
Forms![Главн_форма].Requery
Set rstClone = Forms![Главн_форма].RecordsetClone
rstClone.MoveLast
Forms![Главн_форма].Bookmark = rstClone.Bookmark

rst.Close
rstClone.Close
Set dbs = Nothing

3. Практически также через ADO (только название методов чуть другие)

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

Dim dbs As Database, strSQL as String

On Error GoTo Err_Execute
Set dbs = CurrentDb
strSQL=»INSERT INTO Таблица1( Поле1 ) » _
«SELECT Таблица2.Поле1 » _
«FROM Таблица2 » _
«GROUP BY Таблица2.Поле1 » _
«HAVING Таблица2.Поле1)=’aaaa'»

Exit_:
Set dbs = Nothing
Exit sub ‘ или Function

Err_Execute:
MsgBox «Error number: » & Err.Number & vbCr & Err.Description
Resume Exit_

Я так понимаю, что необх. запретить редактировать запись в форме:
Me.AllowEdits=False
это же свойство можно сразу установить в совйствах формы (в рус. Access: Данные->Разрешить изменение)

Можно еще открывать набор записей в форме не как динамический набор(по умолч.), а как статический набор.

Не знаю не использовал, но если его нет, то естественно сделать ничего нельзя. А зачем это? все равно твоя база будет только через Access работать, тайно или явно.
Может я конечно ошибаюсь, но что-то я не видел, чтобы базу на Access можно было так упаковать, чтобы таскать потом ее как отдельное приложение (это надо ядро засунуть туда, все библиотеки, тот еще монстр будет.. 🙂 )

Спасибо, что откликнулись, только у меня ничего не получилось. ( На данную строку Set dbs = CurrentDb сваливается ошибка о несоответствии типа (используя модель ДАО). А функцию OpenRecordset вообще не находит..(( В Tools->Referens поставлена галочка напротив Microsoft DAO 3.6 Object Library, а в object браузере функция находится. В чем тут может быть дело? Или может избрать другой путь решения? Если можно, напишите более подробно как решить такую задачу:

Необходимо добавить в подчиненную таблицу Col — количество (значение поля в главной форме) записей такого вида:

for i=1 to Col
[подчин. форма]!pdУник.=[главн. форма]!glУникПоле
[подчин. форма]!pdНомерПП = i
[подчин. форма]!pdДата1 = DateAdd(«m»,i,»[главн. форма]!glДата»)
[подчин. форма]!pdПоле3= [главн. форма]!glПоле00/[главн. форма]!glПоле01
.
[подчин. форма]!pdПоле6 = еще что-нибудь зависящее от i
next i

И еще, поподробнее насчет «галочки». Лог. поле есть в подчиненной таблице. По умолчанию — это поле равно False, но когда пользователь ставит галку, вся запись должна стать нередактируемой, вроде как ОТМЕЧЕНО/ОПЛАЧЕНО и боле не пригодится, но НЕ ВСЕ ЗАПИСИ в таблице, а только одна.

Спасибо.
PS: про самостоятельное приложение вычитала в книге, и вообще я только начинающий специалист, не судите строго. )))

Originally posted by natalia
Спасибо, что откликнулись, только у меня ничего не получилось. ( На данную строку Set dbs = CurrentDb сваливается ошибка о несоответствии типа (используя модель ДАО). А функцию OpenRecordset вообще не находит..(( В Tools->Referens поставлена галочка напротив Microsoft DAO 3.6 Object Library, а в object браузере функция находится. В чем тут может быть дело? Или может избрать другой путь решения? Если можно, напишите более подробно как решить такую задачу:

Необходимо добавить в подчиненную таблицу Col — количество (значение поля в главной форме) записей такого вида:

for i=1 to Col
[подчин. форма]!pdУник.=[главн. форма]!glУникПоле
[подчин. форма]!pdНомерПП = i
[подчин. форма]!pdДата1 = DateAdd(«m»,i,»[главн. форма]!glДата»)
[подчин. форма]!pdПоле3= [главн. форма]!glПоле00/[главн. форма]!glПоле01
.
[подчин. форма]!pdПоле6 = еще что-нибудь зависящее от i
next i

И еще, поподробнее насчет «галочки». Лог. поле есть в подчиненной таблице. По умолчанию — это поле равно False, но когда пользователь ставит галку, вся запись должна стать нередактируемой, вроде как ОТМЕЧЕНО/ОПЛАЧЕНО и боле не пригодится, но НЕ ВСЕ ЗАПИСИ в таблице, а только одна.

Спасибо.
PS: про самостоятельное приложение вычитала в книге, и вообще я только начинающий специалист, не судите строго. )))

Если бы мне надо было бы это сделать, то я пошел бы через DAO (хоть друг Билл и товарищ Гетц и призывает переходить на ADO, но DAO пока роднее). Но тут для тебя важна сама суть, а она такая же, что в DAO, что в ADO, а переписать не проблема.
Значит так это выглядит:

Dim dbs As DAO.Database, rst As DAO.Recordset

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(«Таблица1», dbOpenDynaset)
for i=1 to Col
With rst
.AddNew
!pdУник = Forms![главн. форма]!glУникПоле
!pdНомерПП = i
.
.Update
End With
Next i

rst.Close
rstClone.Close
Set dbs = Nothing

По поводу ругани на CurrentDb, давай разбираться. Значит говоришь Microsoft DAO 3.6 Object Library подключено — это хорошо. Тут может быть конфликт имен, это когда в разных библиотеках используют одинаковые имена объектов или методов, поэтому давай с тобой объявим переменные с указанием полного пути (в смысле всех родителей): DAO.Database и DAO.Recordset — так должно все сработать (конфликт может быть с одной из библиотек ADO), если не получится, пиши, подумаем. 🙂

Насчет галочки: Вопрос такой, как ты записи выводишь, через обычную форму или ленточную/табличную?

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

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

Получилось! Получилось! Спасибо! Вот только не с первого разу, вот это то я и упустила (дура глупая):

Forms![гл. форма].Requery
Set rstClone = Forms![гл. форма].RecordsetClone
rstClone.MoveLast
Forms![гл. форма].Bookmark = rstClone.Bookmark

и тут же вопрос — это дело я вставила в цикл до next i, может неправильно, а? А то записи ТО правильно добавляются, ТО их больше в два раза от того, что уникальное поле запоминается из предыдущей записи.. странно как-то. Подскажите этот момент поподробнее и эту часть кода, что она выполняет? Что за RecordsetClone? :)))

——
С галочкой я так поступаю, может вовсе некорректно:

Private Sub flag_Click()
If flag=True Then
Form_podForm1.pddate.Enabled = False
Else
Form_podForm1.pddate.Enabled = True
End If
End Sub

в итоге во ВСЕХ записях поле pddate становится недоступным. Как же сделать это Enabled только для той записи, в которой я ставлю галочку?

Простите, что повторяюсь с вопросами, хочу разобраться, и немного туплю.. Но я стараюсь..))))
Спасибо. Жду.

Originally posted by natalia
Получилось! Получилось! Спасибо! Вот только не с первого разу, вот это то я и упустила (дура глупая):

Forms![гл. форма].Requery
Set rstClone = Forms![гл. форма].RecordsetClone
rstClone.MoveLast
Forms![гл. форма].Bookmark = rstClone.Bookmark

и тут же вопрос — это дело я вставила в цикл до next i, может неправильно, а? А то записи ТО правильно добавляются, ТО их больше в два раза от того, что уникальное поле запоминается из предыдущей записи.. странно как-то. Подскажите этот момент поподробнее и эту часть кода, что она выполняет? Что за RecordsetClone? :)))

Этот кусок кода я опустил в последнем примере, потому как подумал, что для твоей ситуации он не очень критичен.

А смысл его вот какой:

Когда ты обращаешься к таблице программно напрямую (через DAO, ADO и т.д.), а в это же время эта таблица показывается в форме, то все твои изменения в таблице не будут отображены, пока ты принудительно не заставишь Access обновить выводимую таблицу в форме через метод формы — Requery.

Читайте также  Примеры выражений

Т.е. в твоем случае надо в конце написать:
Forms![Гл_форма]]![Подч_форма].Form.Requery

И вот тут одна нехорошая такая вещь после этого происходит — записи загружаются заново и по умолчанию фокус устанавл. на первую запись. Т.е. ты добавил записи и после этого ты попадаешь на начало. Чтобы не заставлять пользователя вручную возвращаться, можно сразу добавить такой код:
DoCmd.GoToRecord ,,acLast

Но у этого метода такой недостаток, чтобы так написать, надо (ОБЯЗАТЕЛЬНО) перевести фокус на элемент (любой) этой подчин. формы., т.е. в итоге:

Forms![Гл_форма]]![Подч_форма].Form.Requery
Forms![Главн_форма]![Подч_форма].SetFocus
Forms![Главн_форма]![Подч_форма].Form![Имя_Контрол].SetFocus
DoCmd.GoToRecord ,,acLast

Тебе такой вариант может подойти.

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

Подитожу. Процесс добавления записей и Requery можно производить с неактивной (ее вообще может быть не видно) формой, а вот для того что перейти в этой НЕАКТИВНОЙ форме на последнюю запись, я и применяю этот код:
Set rstClone = Forms![Главн_форма].RecordsetClone
rstClone.MoveLast
Forms![Главн_форма].Bookmark = RecordsetClone.Bookmark

Делает он следующее.
У каждой формы есть свойство RecordsetClone, которое возвращает объект Recordset (набор записей, про него в справке лучше почитай), в котором находятся записи этой формы. По сути Recordset эта таже таблица, только в виде объекта DAO для того чтобы можно было делать всякие вещи с полями и записями как с обычными объектами в языках программирования.
В этом rstClone мы по умолчанию стоим на первой записе. Переходим на последнюю — rstClone.MoveLast
Теперь используем свойство Bookmark — закладка. Эта Bookmark для того, чтобы можно было поставить закладку, а потом быстро вернуться на нужную запись в Recordset или в форме (она тоже поддерживает закладки). Вот и мы и переходим в форме на ту же запись, что уже перешли в объекте RecordsetClone.

Это свойство Bookmark может немного смутить. У него такая хитрость:
Когда мы обращаемся (ЧИТАЕМ) к свойству -RecordsetClone.Bookmark — то оно возвращает закладку на активную запись в объекте RecordsetClone. Мы например, можем эту закладку сохранить в отд. переменной:
Dim bk as Bookmark
Set bk=RecordsetClone.Bookmark
и потом ее использовать где-нибудь дальше.

А вот когда мы присваиваем (ПИШЕМ) этому свойству RecordsetClone.Bookmark = bk другую закладку, это значит, мы меняем активную запись на ту, которая была активна, когда считывалась эта закладка (bk), т.е. просто переходим на указанную запись.
В нашем примере эти два действия сразу в одной строке получились:
Forms![Главн_форма].Bookmark = RecordsetClone.Bookmark

——
С галочкой я так поступаю, может вовсе некорректно:

Private Sub flag_Click()
If flag=True Then
Form_podForm1.pddate.Enabled = False
Else
Form_podForm1.pddate.Enabled = True
End If
End Sub

в итоге во ВСЕХ записях поле pddate становится недоступным. Как же сделать это Enabled только для той записи, в которой я ставлю галочку?

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

К твоему коду, надо добавить еще код обработчик событии формы Current (возникает при ЛЮБОМ переходе польз. к другой записе):

Private Sub Form_Current()
If flag=True Then
Form_podForm1.pddate.Enabled = False
Else
Form_podForm1.pddate.Enabled = True
End If
End Sub

Так что мы всегда его опередим и пользователь от нас не уйдет 🙂

Источник:
http://forum.codenet.ru/q7331/

Выпадающий список на форме Access 2003

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

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

Что такое выпадающий список в Access 2003

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

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

Как создать выпадающий список

Для этого необходимо сначала создать форму, если она у Вас уже есть то это даже лучше, но для начинающих я повторюсь.

Открываем Access в режиме конструктора, выбираем «Формы» на окне объекты, и жмем создать

Затем нам предложат выбрать источник данных, но нам этого не нужно мы просто жмем «ОК»

Затем на панели элементов выбираем элемент «Поле со списком» и перетащим его на нашу форму, и сразу же в это время запустится мастер создания полей со списком. На первом шаге нам предложат, выбрать способ получения данных, и для начала мы выберем «Фиксированный набор значений», в дальнейшем мы разберем, как можно использовать получения данных на основе запроса или таблицы. А пока жмем далее:

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

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

Вот в принципе и все, единственное на следующем шаге мы можем задать подпись нашего выпадающего списка и жмем «Готово»

В итоге у нас на форме будет отображено следующее

Надпись «Свободный» означает, что данному выпадающему списку не заданно не одно поле из источника данных, поэтому все, что мы выберем, никуда не запишется.

Теперь сохраняем форму, и запускам ее:

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

И вот тут начинаем прибегать к хитрости, о которой я упоминал в начале статьи. Она заключается в следующем, когда мы нажимали на выпадающий список, у нас отображались два столбца, но согласитесь, зачем обычным пользователям видеть идентификаторы этих значений, и после того, когда мы выбрали значение, лучше чтобы отображалось описание этого значения, а не сам идентификатор, поэтому мы делаем вот что, мы просто делаем невидимым первый столбец с идентификатором. Это делается в свойствах «поля со списком» ширина столбцов. И первому столбу мы задаем значение 0см.

И теперь у нас все будет выглядеть как надо

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

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

И теперь чтобы переделать наше поле со списком заходим в его свойства, переходим на вкладку «Данные» и меняем там «Тип источника строк» на «Таблица, представление, процедура» и «Источник строк» на запрос скажем вот такой

От себя я добавил условие where priz = 0 просто так чтобы Вы понимали, что эта таблица может использоваться для разных полей со списком.

Больше ничего не меняем, просто сохраняем и запускаем нашу форму

И теперь наш выпадающий список берет значения не из простого списка, а из базы данных.

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

Источник:
http://info-comp.ru/obucheniest/365-drop-down-list-on-the-access.html