AS EMPRESAS ESTÃO "DESESPERADAS" POR ESTE TIPO DE PROFISSIONAL... - VOCÊ É UM DELES?
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI - O Conhecimento que Vira Dinheiro - CLIQUE AQUI
| « Anterior | Δ Página principal | ¤ Índice | Próxima » |
| Modelagem de dados com MS Access Autor: Robert Friedrick Martim |
|||
|---|---|---|---|
| Lição 004 - Criando campos no estilo ComboBox | |||
Uma grande vantagem no que diz respeito a criação de campos e tabelas é que determinados campos podem receber como argumento detalhes de um campo de uma outra tabela. Observe a figura abaixo:
Figura 4‑1 Campo no estilo combobox (caixa de combinação) Neste exemplo, ao invés de digitarmos o nome da cidade toda vez que um novo registro é adicionado o que fazemos é simplesmente selecionar a cidade em uma caixa de combinação (combobox). No próximo tópico veremos como criar tais listas em tabelas. Combobox com valores digitados Vamos iniciar com um exemplo de lista digitada. Neste exemplo, a lista não é obtida de uma outra tabela, pois as opções são poucas e dificilmente crescerão além dos itens disponíveis. Exemplos de listas que não crescem são: a) sexo (masculino/feminino); b) Tipo de Pessoa (Física/Jurídica); c) Estado civil; etc. Para listas que crescem constantemente, veja exemplo do próximo tópico. Para criar tal exemplo siga os passos abaixo:
Figura 4‑2 Definindo a origem da linha Salve e feche a janela de design de tabela. Abra a tabela na janela do banco de dados e experimente com a nova criação (coloque as opções na ordem que desejar):
Figura 4‑3 Selecionando uma opção da combobox A grande vantagem da utilização deste método é que sabemos que as informações serão entradas corretamente e serão padronizadas. Sendo assim, não há espaço para erros de digitação bastando apenas selecionar o item desejado. Combobox com valores consultados O exemplo anterior é “OK”, porém há cenários onde a lista cresce sempre. Nós simplesmente não temos como prever de antemão o quanto tal lista crescerá. Pegue, por exemplo, uma lista de cidades. Embora o número de cidades brasileiras seja limitado é inviável digitar tudo de uma vez só, ao invés disso digitamos as principais cidades e aquelas mais obscuras ficam para o momento que surgir a necessidade. Para este exemplo, vamos criar duas tabelas:
Figura 4‑4 Campos para a tabela tblCidades
Figura 4‑5 Campos para a tabela tblUF Agora que temos as duas tabelas prontas, vejamos como modificar o campo IDUF da tblCidades. Abra a tabela tblCidades e selecione o campo IDUF.
Figura 4‑6 Definição de consulta para caixa de combinação Antes de modificarmos as propriedades “Origem da Linha”, modifique as seguintes propriedades:
Clique sobre as reticências para abrir a caixa de construção de consultas:
Figura 4‑7 Campos para a tabela tblCidades Com o construtor de consultas aberto, adicione a tabela tblUF à área reservada às tabelas. Para a primeira coluna selecione o campo IDUF e para a segunda coluna selecione o campo UF:
Figura 4‑8 Construtor de consultas Caso queira, na linha “Classificação” escolha qual campo (IDUF ou UF) deve ser classificado e que tipo de ordem devem aparecer. Caso nenhuma ordem seja especificada a ordem será a de entrada dos dados. Feche o construtor e a instrução SQL será adicionada como valor para a propriedade “Origem da Linha”: SELECT tblUF.IDUF, tblUF.UF FROM tblUF ORDER BY tblUF.UF;
Figura 4‑9 Selecionando UF na tabela tblCidades Com a consulta pronta podemos abrir a tabela tblCidades para verificar como funciona a caixa de combinação. Adicionando itens à lista Como o nosso banco de dados certamente terá uma interface gráfica compreendida por formulários, o mínimo que podemos esperar é que durante a inserção de um novo registro um item da lista esteja faltando. Em um cenário como este nós não desejamos que o usuário feche tudo para abrir um outro formulário para inserir o item que falta para posteriormente retornar ao formulário onde trabalhava para continuar onde havia parado:
Figura 4‑10 Cidade não se encontra na lista Na figura acima, nós não possuímos a cidade “Santa Maria” e seria perda de tempo parar este processo, abrir o formulário para inserção da nova cidade, fechar este formulário e finalmente reabrir o formulário de inserção de clientes. Ao invés disso, podemos utilizar VBA para controlar tal inserção. Siga os passos abaixo para completar esta tarefa:
Private Sub IDCidade_NotInList(NewData As String, _ Response As Integer) MsgBox "Item não se encontra na lista. Duplo-clique " _ & "sobre este campo para adicionar um item à lista.", _ Response = acDataErrContinue End Sub
Private Sub IDCidade_DblClick(Cancel As Integer)
On Error GoTo Err_Handler Dim lngIDCidade As Long
If IsNull(Me![IDCidade]) Then Me![IDCidade].Text = "" Else lngIDCidade = Me![IDCidade] Me![IDCidade] = Null End If DoCmd.OpenForm "tblCidades", , , , , acDialog, "GotoNew" Me![IDCidade].Requery If lngIDCidade <> 0 Then Me![IDCidade] = lngIDCidade
Sair: Exit Sub
Err_Handler: MsgBox Err.Description Resume Sair
End Sub
Private Sub Form_Load() If Me.OpenArgs = "GotoNew" And Not IsNull(Me![IDCidade]) Then DoCmd.DoMenuItem acFormBar, 3, 0, , acMenuVer70 End If End Sub
Com isso feito, podemos agora adicionar novas cidades à tabela de cidades quando trabalhamos com o formulário de clientes sem necessidade de reiniciar todo os processo. Caso o usuário tente inserir um item que não se encontra na lista a mensagem do primeiro código será mostrada:
Figura 4‑11 Mensagem mostrada quando item não se encontra na lista Quando damos um duplo-clique sobre o campo o formulário de inserção de cidades é aberto sobre o formulário de inserção de clientes como mostra figura:
Figura 4‑12 Adicionando uma nova cidade à lista Selecione a UF a qual a cidade pertence e digite o nome da cidade. Clique no “X” para fechar o formulário. Quando retornamos ao formulário de inserção de clientes ocorrerá um “reconsulta” à tabela de cidades pela campo IDCidade (veja o método Requery no código anterior) e os valores contidos na combobox serão atualizados para mostrar todos as cidades da tabela:
Figura 4‑13 Lista de cidades atualizada Últimas palavras sobre este tópico O leitor é capaz de identificar algum “erro” nesta modelagem de dados? Coloco “erro” entre aspas porque não é exatamente um erro, mas uma duplicação desnecessária de informações. Duplicação de informação é algo normal, mas que deve ser evitado. A idéia principal de termos uma tabela para UF é que, fazendo assim, evitamos a repetição da UF na tabela de cidades. Porém, na tabela de clientes eu também adiciono UF. Note que está adição, embora completamente viável, é desnecessária. Observe o relacionamento (relacionamentos são discutidos no próximo tópico) das tabelas:
Figura 4‑14 Relacionamento entre tabelas O que isso nos diz? O relacionamento acima nos diz que para cada UF nós podemos ter várias cidades (relacionamento um-para-muitos) e que cada cidade pode ter vários clientes (novamente um relacionamento um-para-muitos). Como existe uma “cadeia” entre as três tabelas e o cliente tem um relacionamento com a tabela de cidades, o cliente está indiretamente relacionado à UF. Observe a figura na próxima página:
Figura 4‑15 Expansão das tabelas relacionadas Como a figura acima mostra, ao expandirmos a tabela de UF e de cidades obtemos os clientes de cada cidade e, consequentemente, obtemos os clientes de cada UF. Portanto, o campo IDUF que o leitor vê na tabela de cliente logo ao lado de seu nome é irrelevante. Poderíamos criar um relacionamento deste campo com a UF? Sim, poderíamos. Não obstante, neste cenário a relação seria direta entre as duas tabelas e perderíamos a parte intermediária referente à cidade. Vejamos então o próximo tópico a questão de relacionamento de dados para evitar duplicação desnecessária de dados. |
|||
| « Anterior | Δ Página principal | ¤ Índice | Próxima » |
Universidade do Access - Curso Completo de Access
com tudo para você dominar o Access - do Básico ao
Avançado - até a Criação de Sistemas Profissionais
Completos - Passo a Passo - Tela a Tela
Aplica-se ao Access 2019, 2016, 2013 e 2010!
Para todos os detalhes, acesse:
|
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI (Online, Vitalício, Prático e Atualizado)! |
|
|
NÃO PROCURE VAGAS, SEJA PROCURADO! |
|
Para Todos os Detalhes, Acesse:
https://juliobattisti.com.br/curso-infra-ti.asp
|
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2026 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI