web-dev-qa-db-ja.com

フォームのコンボ/ドロップダウンを使用して外部キーを入力します

ユーザーに表示される値がIDではなく、外部テーブルの説明フィールドであるコンボボックス/ドロップダウンを使用して、1つのテーブルに外部キーフィールドを入力したいと思います。

次の設定を検討してください。

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

また、フォームを介して新しいpersonを作成するときに、ユーザーにjobs.descriptionを表示してもらいたいです。

しかし、私はこれを行う方法がわかりません。 2つのテーブルを結合するクエリに基づいてフォームを作成すると、新しいデータを作成できません。また、peopleに基づいてフォームを作成すると、Subform based on existing relationオプションがグレー表示されます。 Subform based on existing relation

Accessでは、これはフォームウィザードで簡単に実行できます。

Access form

LibreOffice/OOo Baseでこれを実現するにはどうすればよいですか?

2
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. Display fieldとしてdescriptionを選択します。
  6. Field from the Value Tableの下でjob_idを選択し、Field from the List Tableの下でidを選択します。

それでおしまい!ドロップダウンボックスが期待どおりに機能するようになりました: Job dropdown

ウィザードが気に入らない場合は、次のようにリストボックスコントロールを手動で編集できます。

  1. リストボックスを追加して、ウィザードを閉じます。歯車である「コントロール」アイコンをクリックします。 (これも意味がありません。)
  2. 次のように情報を入力します。「リストコンテンツ」には「SELECT "DESCRIPTION"、 "ID" FROM "JOBS"」と表示されます。ユーザーに表示するフィールドmustが最初に来て、「バインドされたフィールド」はゼロインデックスであり、ID列を参照する必要があります。

Control properties windows

それでおしまい!

3
LondonRob