Я начинаю с некоторых из моих первых форм InfoPath.У меня есть три раскрывающихся списка (Global Function
, Major Task
и Subtask
), которые должны запрашивать базу данных SQL и фильтровать их данные на основе выбранного значения в раскрывающемся списке перед ним.
Что я уже сделал
Я уже добавил соединения данных (для каждой из таблиц и соответствующего раскрывающегося списка), которые просто запрашивают базу данныхдля всех записей в таблице.Для каждого соединения установлено «Сохранение копии данных в шаблоне формы» для автономного режима.
Затем в свойствах раскрывающегося списка я установил Выберите в поле списка значение «Получить выбор из внешнего источника данных» и настройте поле Записи , чтобы выбрать столбцы для соответствующей комбинации таблицы / раскрывающегося списка.
Однако, когда я добавляю фильтр к данным и пытаюсь предварительно просмотреть форму, данные в «каскадном» раскрывающемся списке никогда не меняются.Это все еще имеет ВСЕ записи.
Итак, я попытался добавить новое правило для одного из каскадных выпадающих меню.Например, я создал новое правило для раскрывающегося списка Major Task
и настроил его следующим образом:
- Условие
Global Function is not blank
- Тип правила
Action
- Запустите эти действия:
- Запрос с использованием подключения к данным: Основные задачи (который просто получает ВСЕ записи)
Я не вижу нигде в правиле / действии для фильтрацииданные.
РЕДАКТИРОВАТЬ Я только что попробовал новое соединение данных, которое имеет все три таблицы (GlobalFunctions
, MajorTasks
и Subtasks
)это правильно настроить отношения (т.е. GlobalFunctions.Id = MajorTasks.GlobalFunction).Затем я установил источник данных выпадающих списков для этого нового соединения.Однако это тоже не фильтрует данные вообще.Их записи и значения следующие:
- Глобальная функция:
- Записи:
/dfs:myFields/dfs:dataFields/d_1:GlobalFunctions
- Фильтр:
<None>
- Значение:
@Id
- Отображаемое имя:
@Summary
- Основная задача:
- Записи:
/dfs:myFields/dfs:dataFields/d_1:GlobalFunctions/d_1:MajorTasks
- Фильтр:
GlobalFunction = Id
- Значение:
@Id
- Отображаемое имя:
@Summary
- Подзадача:
- Записи:
/dfs:myFields/dfs:dataFields/d_1:GlobalFunctions/d_1:MajorTasks/d_1:SubTasks
- Фильтр:
MajorTask = Id
- Значение:
@Id
- Отображаемое имя:
@Summary
Ограничения
- У меня не может быть кода (потому что он не будет работать в браузере, верно?)
- Формадолжен иметь возможность заполняться в Интернете или на локальном компьютере (сохраненная копия на рабочей станции)
- Должен работать, когда нет соединения с базой данных SQL
Вопрос
Как реализовать несколько каскадных раскрывающихся списков в InfoPath 2010 с подключением данных кБаза данных MS SQL, которая может работать в браузере и использовать InfoPath Filler (последний из которых может не иметь подключения к базе данных).
Таблицы SQL
Вот чтотаблицы выглядят так:
CREATE TABLE GlobalFunctions (
Id SMALLINT NOT NULL IDENTITY(1,1),
Summary varchar(MAX) NOT NULL UNIQUE,
PRIMARY KEY (Id)
);
CREATE TABLE MajorTasks (
Id SMALLINT NOT NULL IDENTITY(1,1),
Summary varchar(MAX) NOT NULL UNIQUE,
GlobalFunction SMALLINT NOT NULL,
PRIMARY KEY (Id),
FOREIGN KEY (GlobalFunction) REFERENCES GlobalFunctions(Id)
);
CREATE TABLE SubTasks (
Id SMALLINT NOT NULL IDENTITY(1,1),
Summary varchar(MAX) NOT NULL UNIQUE,
MajorTask SMALLINT NOT NULL,
PRIMARY KEY (Id),
FOREIGN KEY (MajorTask) REFERENCES SubTasks(Id)
);