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

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

コンボボックス/ドロップダウンを使用して、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 つのテーブルを結合するクエリに基づいてフォームを作成すると、新しいデータを作成できず、 に基づいてフォームを作成するとpeopleSubform based on existing relationオプションがグレー表示されます。 既存の関係に基づくサブフォーム

Access では、フォーム ウィザードを使用してこれを簡単に実現できます。

アクセスフォーム

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

答え1

これはフォーム ウィザードを使用して実行することはできません。リンクされたフォームの内容は誤解を招くものです。

しかしそれはできるかなり簡単に言えば、次のようになります。

  1. フォーム ウィザードを使用して、テーブルのフィールドのみを使用してフォームを可能な限り取得しますpeople
  2. デザイン モードでフォームを編集します (*ヒント: アイコンはまったく直感的ではありませんが、次のようになります。 デザインモードアイコン
  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_idField from the List Table選択の下でid

これで完了です。ドロップダウン ボックスは期待どおりに動作するようになります。 ジョブドロップダウン

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

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

コントロールプロパティウィンドウ

それでおしまい!

関連情報