Ref-sgain.ru

Программы и сервисы
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как создать зависимые выпадающие списки в документе Word?

Динамические списки (Динамический select)

С чего обычно начинает веб-разработчик-самоучка? Как ему кажется, лучше всего делать то, что кажется самым простым. Считает, что ему и этого достаточно для решения проблем, которые встали перед ним на начальном этапе. Но вскоре веб-разработчики понимают, что их знаний недостаточно. Человек, знающий PHP (и, возможно, кое-что понимающий в HTML и CSS), до последнего будет отрицать необходимость изучения JavaScript. Будет убеждать себя, что ему это уже не нужно, что навыков и знаний вполне достаточно.

Но приходит он… и тут капитулируют все… Он заставляет неистово гуглить, усердно писать на форумы, искать, копать, латать дыры в знаниях. Он коварен. Он — , .

Почему? Почему это происходит? Нужно сделать так, чтобы при выборе одного параметра в выпадающем списке что-то происходило. В моем случае при выборе Ростовской области из списка регионов пришлось фильтровать список населенных пунктов, чтобы нельзя было выбрать города и села, например, в Еврейской автономной области. При выборе производителя автомобиля появляется фильтр по марке автомобиля. Примеров чуть больше 9000.

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

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

Следующей задачей является вот что — нет смысла позволять пользователю раскрывать второй и третий список до того, как не будет сделан выбор в первом. Ведь что он там сможет увидеть? Данные туда подгружаются динамически, основываясь на выбранных значениях. Значит до момента выбора второй и третий списки должны быть неактивными.

Читайте так же:
Как скопировать весь выделенный текст в документ Word?

И еще одно уточнение. Чтобы изменить выбранные данные, необходимо сбросить зависимые поля на исходные значения. Тем самым в списки будут включены только значения, относящиеся к выбранным категориям и типам.

Вам важно знать вот что! Информация в этой статье для вас, скорее всего, сегодня уже является устаревшей. Вряд ли вы пытаетесь что-то «писать» для PHP версией старше чем 5.5. А если и пытаетесь. зачем оно вам? Среди материалов я уже разместил статью с построением динамических списков (динамических select-ов), работающих в трио с MySQL и PDO. То есть там информация для select-ов берётся из базы данных MySQL, а не просто хранится в массивах. Там работоспособный код. Смело переходите в ту статью.

Итак, создайте форму с тремя списками.

Добавив этот код в HTML-документ и обслужив его в браузере, вы увидите форму с тремя списками, два из которых будут неактивными. Сейчас они выглядят не очень красиво. Давайте изменим их внешний вид. Для этого нам нужно создать CSS-документ, который будет включен в заголовок HTML-документа, созданного нами ранее. В этом документе CSS мы напишем следующее:

Конечно, форма может выглядеть так, как вы хотите 🙂 И что теперь? Давайте подумаем об этом. Если мы выберем значение из первого списка, мы должны получить список значений для второго списка. Я даже не буду описывать, как это сделать с помощью PHP. Помните одну вещь: Если мы говорим о последствиях действий пользователя, то это JavaScript.

Что должно происходить? При возникновении события выбора значения в первом списке, выбранное значение должно быть отправлено обработчику, который в ответ отправит перечень значений для второго списка, непосредственно связанных с первым. Этот перечень мы будем получать от сервера, так как предполагаем, что нужная нам информация хранится в базе данных (MySQL , к примеру). Значит из JavaScript -сценария нам нужно будет выполнить -запрос к серверу. После того, как сервер пришлет ответ, мы помещаем его во второй список, и делаем его активным. Начнем писать наш JavaScript -сценарий.

Вполне возможно, что для вас это новый код. Чтобы помочь вам понять процесс, я снабдил его обширными комментариями. Теперь давайте посмотрим на скрипт обработчика AJAX-запросов. Он находится в нашем файле query.php.

Читайте так же:
Как создать и распечатать конверты из списка рассылки в Word?

Можете проверять select-ы. Они отлично работают. Добавить ещё один select вы вполне сможете сами. Я помню, как много времени потратил когда-то на поиски нужной мне информации. Гуглил, искал, писал… что угодно делал, но только не читал книги и документацию. Поэтому, если вы пришли сюда и вам подошли описанные выше скрипты, не поленитесь — почитайте мануалы 🙂

P.S. Описанные скрипты также доступны в виде архива.

Вам важно знать вот что! Информация в этой статье для вас, скорее всего, сегодня уже является устаревшей. Вряд ли вы пытаетесь что-то «писать» для PHP версией старше чем 5.5. А если и пытаетесь. зачем оно вам? Среди материалов я уже разместил статью с построением динамических списков (динамических select-ов), работающих в трио с MySQL и PDO. То есть там информация для select-ов берётся из базы данных MySQL, а не просто хранится в массивах. Там работоспособный код. Смело переходите в ту статью.

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

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

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

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

Более подробно о сводных таблицах вы можете прочитать в этой статье.

Создание раскрывающегося списка

Составление выпадающих списков категорий и видов расходов — хороший способ начать. Отличной идеей было бы поместить их в отдельную таблицу.

Теперь используйте инструмент Data Validation, чтобы сделать выбор из списка. Как это работает, описано здесь. Следуйте алгоритму:

  1. Выделяем ячейки, куда будем вносить категории
  2. Жмем на ленте Данные – Работа с данными – Проверка данных
  3. Тип данных указываем «Список», Источник – =$I$4:$I$6. То есть ссылка на наш массив с категориями. Жмем Ок

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

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

Создание зависимого списка в Экселе

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

Давайте структурируем нашу таблицу видов затрат:

Теперь виды расходов разбиты по колонкам, соответствующим каждой из категорий. Далее мы будем использовать функцию ДВССЫЛ(текст) . Что она делает? Она пытается преобразовать введенный текст в ссылку на ячейки. Что будет, если записать такую формулу: =СУММ(ДВССЫЛ(«F1:F5»)) . Функция ДВССЫЛ распознает текст «F1:F5», как диапазон ячеек и вернет его. А функция СУММ – просуммирует все значения в этом диапазоне.

То же самое произойдет, если мы диапазону «F1:F5» присвоим имя. Например, «структура». Формула =СУММ(ДВССЫЛ(«структура»)) даст аналогичный результат. Именно этой возможностью мы и воспользуемся.

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

Назовите все столбцы с исходными данными. Диапазон с представлениями должен быть назван так же, как и его категория. Например, мы назвали диапазон J4:J8 «Офис». Назовите его:

  1. Выделяем ячейки с категориями I4:I6
  2. В области имен запишем «Категории», жмем Enter

Определенные имена теперь будут видны, если вы нажмете Формулы — Определенные имена — Менеджер имен. Если вы где-то допустили ошибку или список изменился, вы можете внести исправления в этом окне.

И снова внедрите контроль данных:

  1. Выделяем в таблице столбец с категориями
  2. Жмем на ленте Данные – Работа с данными – Проверка данных
  3. Тип данных указываем «Список», Источник – =Категории . Программа определит, что это именованный диапазон и выберет из него пункты списка. Жмем Ок

Вам все еще не ясен принцип? Вот как будет работать наша следующая таблица:

  • С помощью обычного списка, в столбце B выбираем категорию товаров. Например, «Питание»
  • Слово «Питание» попадает, как источник данных в столбец C, т.е. в виды расходов
  • У нас есть диапазон данных L4:L8, который называется Питание. Функция ДВССЫЛ это определяет и заменяет на слово «Питание» на диапазон L4:L8
  • Теперь этот диапазон будет источником для списка вида расходов

Все перечисленное подтверждаю изображением ниже:

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

Думаю, Вы разобрались, как сделать зависимый список в Excel. Если не разобрались – пишите комментарии. А я статью закончил, продуктивной Вам работы!

Как создать зависимые выпадающие списки в документе Word?

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

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

Схема БД Сотрудники

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

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

Окно управления БД Сотрудники

Мы поговорим о том, как решить эту типичную проблему.

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

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

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

Запрос Должности по отделам

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

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

Окно свойств второго списка

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

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

Выбор события

В редакторе Visual Basic есть пустая функция Form_Current. Одна строка кода обновит нижний список:

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

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

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

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

В дополнение к общим соображениям относительно зависимых списков в Access:

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

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

Этот метод работает только с одной формой (на экране видна одна запись).

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector