![Preencher a chave estrangeira usando combo/dropdown no formulário](https://rvso.com/image/1475804/Preencher%20a%20chave%20estrangeira%20usando%20combo%2Fdropdown%20no%20formul%C3%A1rio.png)
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:
E gostaria que o usuário visse jobs.description
ao criar um novo person
atravé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 relation
opção ficará esmaecida:
No Access, isso é fácil de conseguir com o assistente de formulário:
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.
- Use o assistente de formulário para obter o formulário o mais longe possível
people
apenas com os campos da tabela. - Edite o formulário no modo de design (*dica: o ícone não é nada intuitivo, mas tem a seguinte aparência:
)
- 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.
- Em
Choose the table from which the data should be used as basis for the list content
, selecionejobs
. - Selecione
description
como oDisplay field
. - Em
Field from the Value Table
selectjob_id
e emField from the List Table
selectid
.
É isso! A caixa suspensa agora funcionará exatamente como esperado:
Se você não gosta de assistentes, você pode editar manualmente o controle List Box da seguinte maneira:
- Adicione sua caixa de listagem e feche o assistente. Clique no ícone “Controle”, que é uma engrenagem. (Isso também não faz sentido.)
- 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.
É isso!