Preencher a chave estrangeira usando combo/dropdown no formulário

Preencher a chave estrangeira usando combo/dropdown no formulário

Gostaria de preencher um campo de chave estrangeira em uma tabela usando uma caixa de combinação/menu suspenso onde os valores que o usuário vê não são os IDs, mas um campo de descrição da tabela estrangeira.

Considere a seguinte configuração:

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

Especifiquei o relacionamento da chave estrangeira na janela de relacionamentos:

relacionamento de chave estrangeira

E gostaria que o usuário visse jobs.descriptionao criar um novo personatravés de um formulário.

Mas não consigo ver como fazer isso. Se eu criar um formulário baseado em uma consulta que une as duas tabelas, não poderei criar novos dados e, se eu criar um formulário baseado em people, a Subform based on existing relationopção ficará esmaecida: Subformulário baseado na relação existente

No Access, isso é fácil de conseguir com o assistente de formulário:

Formulário de acesso

Como posso conseguir isso no LibreOffice/OOo Base?

Responder1

Isso não pode ser feito usando o assistente de formulário. O material do formulário vinculado é uma pista falsa.

Mas isto pode ser feitocom justiçafacilmente, como segue.

  1. Use o assistente de formulário para obter o formulário o mais longe possível peopleapenas com os campos da tabela.
  2. Edite o formulário no modo de design (*dica: o ícone não é nada intuitivo, mas tem a seguinte aparência: ícone do modo de design)
  3. Adicione um controle de 'caixa de listagem' ao seu formulário (nota: não é uma caixa de combinação, são algo diferente no Base). Isso abrirá um assistente que o guiará por todo o resto.
  4. Em Choose the table from which the data should be used as basis for the list content, selecione jobs.
  5. Selecione descriptioncomo o Display field.
  6. Em Field from the Value Tableselect job_ide em Field from the List Tableselect id.

É isso! A caixa suspensa agora funcionará exatamente como esperado: Menu suspenso de trabalhos

Se você não gosta de assistentes, você pode editar manualmente o controle List Box da seguinte maneira:

  1. Adicione sua caixa de listagem e feche o assistente. Clique no ícone “Controle”, que é uma engrenagem. (Isso também não faz sentido.)
  2. Insira as informações da seguinte maneira, onde 'Conteúdo da lista' diz "SELECIONE "DESCRIÇÃO", "ID" DE "TRABALHOS". Observe que o campo que você deseja que o usuário vejadevevem primeiro e que o 'Campo vinculado' tem indexação zero e deve se referir à coluna ID.

Janelas de propriedades de controle

É isso!

informação relacionada