No MS Access, como um formulário pode fornecer um drop-down preenchido com dados de um formulário relacionado?

0

No meu banco de dados MS Access, quero criar um formulário para preencher um novo pedido.

Eu tenho uma tabela Clientes e uma tabela Pedidos

**Customers** => (id, firstname, lastname, address)
                  ^
                  |
**Orders** =>   (customer, product, total)

(Observação: o campo cliente tem um relacionamento de muitos para id )

Eu quero criar um formulário onde coloco o produto e selecionar qual cliente está solicitando isso de algum tipo de menu suspenso.

Como você consegue isso no Access? Da minha pesquisa, tudo o que posso fazer é criar um formulário que contenha espaços reservados para os campos na tabela atual, mas nada que aproveite o relacionamento para me ajudar a preencher o campo cliente .

    
por CodyBugstein 07.07.2015 / 02:22

1 resposta

4

Sim, você pode absolutamente fazer isso. Existem alguns truques, mas não muitos.

  1. Crie um novo formulário e defina a Origem do Registro como a tabela "Pedidos". Para ver a janela de propriedades do formulário, clique com o botão direito no formulário e selecione "Propriedades do formulário"
  2. Na faixa de opções Design de formulário, arraste uma nova caixa de combinação para o formulário
  3. Eu cancelaria o assistente se surgisse e faria tudo manualmente, mas você pode usar isso se quiser.
  4. Verifique se a caixa de combinação está selecionada e verifique sua folha de propriedades
  5. Defina a fonte de controle para o campo "Cliente"
  6. Defina a origem da linha como "SELECT Customers.ID, Customers.Firstname, Customers.LastName FROM Customers;" ou clique no botão "..." para criar essa consulta simples. Observe que o campo FIRST é o ID, que é o link entre o formulário e a caixa de combinação.
  7. Agora está funcionando, MAS só mostrará o ID, que é inútil. Você precisa corrigir a formatação da caixa de combinação. Vá para a guia de formato nas propriedades e procure por "Contagem de colunas". Altere isso para 3.
  8. Abaixo, estão as larguras das colunas. Você pode usar isso para ocultar o campo de ID colocando "0,3,3". Você pode querer brincar com esses valores para ajustá-los perfeitamente ao tamanho dos nomes.
  9. Você pode querer que as "Cabeças de coluna" sejam ativadas ou não - até você.
  10. Veja o formulário agora em "Exibição de formulário" e aproveite!

Normalmente, salvo a consulta por trás do combo separadamente. Em seguida, na etapa 6, você seleciona a consulta em vez de colar o SQL. A razão para isso é que você pode potencialmente reutilizar fontes de dados para caixas de combinação comuns. Convenções de nomenclatura são uma coisa muito boa quando seu banco de dados cresce, então seja lógico sobre o que você chama de coisas.

Nesta nota, altero o nome das suas variáveis de tabela para abaixo. Para mim, isso é mais claro. Pedidos também precisam de um ID. Se o ID tem o mesmo nome, você apenas joga "match the name" quando se junta a tabelas.

**Customers** => (CustomerID, firstname, lastname, address)
                           ^
                            \
**Orders** =>   (OrderID, CustomerID, product, total)

Você também pode combinar o campo Primeiro / último em um, em vez de separá-los (na consulta, temos um nome de campo: [nome] & "" & [sobrenome]). Você pode tornar as caixas de combinação realmente poderosas no acesso, mas cuidado se elas têm muitas linhas nelas - elas diminuirão a velocidade.

Para os produtos no pedido, você realmente precisa criar outra tabela chamada "Order Lines", que tem os campos OrderLineID, OrderID, ProductID e Qty as. Então, um único pedido pode ter vários produtos. Isso está além do escopo da questão, mas eu pensei em apontar você também na direção certa. Você precisa de uma tabela de produtos também.

    
por 09.07.2015 / 05:16