Заполните внешний ключ, используя комбо / раскрывающийся список в форме

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

Рассмотрим следующую настройку:

create table people (
  id int identity primary key,
  name varchar(250),
  job_id int
);
create table jobs (
  id int identity primary key,
  description varchar(250)
);
insert into jobs(description) values 'foo';
insert into jobs(description) values 'bar';

Я указал отношение внешнего ключа в окне отношений:

И я хотел бы, чтобы пользователь видел jobs.description при создании нового person через форму.

Но я не вижу, как это сделать. Если я создаю форму на основе запроса, который объединяет две таблицы, я не могу создать новые данные, и если я создаю форму на основе people, Subform based on existing relation опция выделена серым цветом:

В Access это легко сделать с помощью мастера форм:

Как я могу добиться этого в LibreOffice/OOo Base?

1 ответ

Решение

Это невозможно сделать с помощью мастера форм. Связанный материал формы - красная сельдь.

Но это можно сделать довольно легко следующим образом.

  1. Используйте мастер форм, чтобы получить форму как можно дальше с полями из people только стол.
  2. Отредактируйте форму в режиме конструктора (* подсказка: значок совершенно не интуитивно понятен, но выглядит так: /ima ges/390a4e9bf632350606fafd5559d47304a924aec2.png)
  3. Добавьте элемент управления "список" в вашу форму (примечание: не поле со списком, это что-то другое в Base). Это откроет волшебника, который проведет вас через все остальное.
  4. В Choose the table from which the data should be used as basis for the list content, Выбрать jobs,
  5. Выбрать description как Display field,
  6. Под Field from the Value Table Выбрать job_id и под Field from the List Table Выбрать id,

Это оно! Раскрывающийся список теперь будет работать точно так, как ожидается: /ima ges/68dea2546ed4386a5ac40c982c31947e2bbd16a9.png

Если вам не нравятся мастера, вы можете вручную отредактировать элемент управления List Box следующим образом:

  1. Добавьте свой список, затем закройте мастер. Нажмите на значок "Управление", который является шестеренкой. (Это также не имеет смысла.)
  2. Введите информацию следующим образом, где "Список содержимого" говорит "ВЫБЕРИТЕ" ОПИСАНИЕ ", " ИД "ИЗ" ЗАДАНИЙ ". Обратите внимание, что поле, которое вы хотите видеть пользователю, должно идти первым, а" Связанное поле "равно нулю. -индексирован и должен ссылаться на столбец идентификатора.

/ima ges/6cc31e1d14867d55f7a081a9bdf1106d13afedc8.png

Это оно!

Другие вопросы по тегам