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

2806
LondonRob

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

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

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'; 

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

foreign key relationship

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

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

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

Access form

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

2
С момента публикации этого вопроса я нашел [этот вопрос] (http://superuser.com/questions/700651/libreoffice-base-how-have-a-combobox-linked-to-a-related-table-linked-to-or -in) от [@Genom] (http://superuser.com/users/289364/genom), который просит то же самое (но более окольным путем). LondonRob 5 лет назад 0

1 ответ на вопрос

3
LondonRob

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

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

  1. Используйте мастер форм, чтобы получить форму как можно дальше от полей только из peopleтаблицы.
  2. Изменить форму в режиме конструктора (* подсказка: иконка полностью неинтуитивная, но выглядит следующим образом : design mode icon)
  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. Under Field from the Value Table select job_id and under Field from the List Table select id.

That's it! The dropdown box will now work exactly as expected: Job dropdown

If you don't like wizards, you can manually edit the List Box control as follows:

  1. Add your list box then close the wizard. Click on the "Control" icon, which is a gear. (This also makes no sense.)
  2. Enter the information as follows, where 'List content' says "SELECT "DESCRIPTION", "ID" FROM "JOBS". Notice that the field you want to the user to see must come first, and that the 'Bound field' is zero-indexed and should refer to the ID column.

Control properties windows

That's it!