コンボボックス/ドロップダウンを使用して、1 つのテーブルに外部キー フィールドに値を入力したいと思います。ユーザーに表示される値は ID ではなく、外部テーブルの説明フィールドです。
次の設定を検討してください。
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
しかし、その方法がわかりません。 2 つのテーブルを結合するクエリに基づいてフォームを作成すると、新しいデータを作成できず、 に基づいてフォームを作成するとpeople
、Subform based on existing relation
オプションがグレー表示されます。
Access では、フォーム ウィザードを使用してこれを簡単に実現できます。
LibreOffice/OOo Base でこれを実現するにはどうすればよいでしょうか?
答え1
これはフォーム ウィザードを使用して実行することはできません。リンクされたフォームの内容は誤解を招くものです。
しかしそれはできるかなり簡単に言えば、次のようになります。
- フォーム ウィザードを使用して、テーブルのフィールドのみを使用してフォームを可能な限り取得します
people
。 - デザイン モードでフォームを編集します (*ヒント: アイコンはまったく直感的ではありませんが、次のようになります。 )
- フォームに「リスト ボックス」コントロールを追加します (注意: コンボ ボックスではありません。Base ではこれらは異なります)。これにより、他のすべての操作を案内するウィザードが開きます。
- で
Choose the table from which the data should be used as basis for the list content
、 を選択しますjobs
。 description
として選択しますDisplay field
。Field from the Value Table
選択の下でjob_id
、Field from the List Table
選択の下でid
。
これで完了です。ドロップダウン ボックスは期待どおりに動作するようになります。
ウィザードが気に入らない場合は、次のようにリスト ボックス コントロールを手動で編集できます。
- リスト ボックスを追加してウィザードを閉じます。歯車の「コントロール」アイコンをクリックします。(これも意味がありません。)
- 次のように情報を入力します。「リストコンテンツ」には「SELECT "DESCRIPTION", "ID" FROM "JOBS」とあります。ユーザーに表示させたいフィールドがしなければならない最初に来て、「バインドされたフィールド」はゼロインデックスで ID 列を参照する必要があることを確認します。
それでおしまい!