Applies ToAccess para Microsoft 365 Access 2021 Access 2019

Selecione qualquer tópico abaixo para saber mais sobre Funcionários na Northwind Developer Edition. 

Os funcionários têm um formulário dividido que funciona como um formulário de lista e detalhe. 

Utilize Funcionários para adicionar novos funcionários e atualizar informações sobre funcionários existentes. 

Selecione o separador Funcionários no Friso para apresentar funcionários no formulário Lista de Funcionários, frmEmployeeList, que é um Formulário Dividido com as seguintes funcionalidades: 

  • A parte superior do formulário é uma vista única de um funcionário.

  • A parte inferior do formulário é uma vista de Folha de Dados de todos os funcionários.

  • Selecionar um funcionário em qualquer uma das partes também define o foco para esse funcionário na outra parte do formulário dividido.

  • Pode adicionar, editar ou eliminar Funcionários em qualquer parte do Formulário Dividido.

  • A utilização de um formulário dividido com a parte da vista de folha de dados pressupõe que a origem de registos do formulário tem vários registos.

Impacto potencial no desempenho de um Formulário Dividido 

A maioria dos programadores prefere não carregar uma tabela ou consulta não filtrada como uma origem de registos para um formulário. Filtrar um formulário para um único registo minimiza a quantidade de dados a transferir da tabela para o formulário. Com uma tabela local do Access, a diferença entre carregar uma origem de registos filtrada e uma pequena origem de registos não filtrada pode ser pouco visível. No entanto, este desempenho perde-se quando as tabelas do Access são substituídas por uma base de dados remota baseada no servidor, como SQL Server. 

A tabela de colaboradores na Northwind não deve crescer muito, por isso é candidata a uma origem de registos não filtrada. No entanto, os formulários vinculados a outras tabelas, como os detalhes da encomenda, que potencialmente aumentarão para muitos milhares de registos, não são candidatos a uma origem de registos não filtrada.  

EDITAR FUNCIONÁRIOS

Ao adicionar ou editar registos num formulário dividido, os utilizadores podem introduzir valores na vista de formulário ou na vista de folha de dados. Alguns campos são obrigatórios, outros opcionais. O formulário valida a presença de valores em campos obrigatórios. Veja Validação de Campo Necessária abaixo.

Tabelas de Referência, Listas de Valores e Controlos pendentes

  • A lista pendente Títulos limita as entradas a uma lista de títulos pré-selecionados. Os títulos estão numa tabela de Referência denominada Títulos.

  • Algumas opções esperadas já estão armazenadas na tabela de referência, mas os utilizadores podem adicionar novos títulos à tabela de referência, utilizando o comportamento predefinido do Access para a caixa de combinação ou controlos pendentes.

    • A propriedade Limitar à Lista da caixa de combinação Título está definida como Sim e o formulário de edição para Títulos é identificado na propriedade Editar Formulário de Itens de Lista. Selecionar o menu pendente no formulário apresenta o ícone editar na margem inferior.  ...

Clicar no ícone de edição abre o formulário de edição Títulos , frmEmployeeTitles, no qual pode alterar ou adicionar à lista de títulos aprovados. 

NOTA:Na maioria dos ambientes de produção, editar ou adicionar títulos seria limitado a utilizadores com privilégios melhorados.  

Self-Referential campos de Pesquisa

A função employee ilustra o conceito de um campo de ID de Self-Referential. Para suportar a designação do supervisor de um funcionário, a tabela tem um campo SupervisorID com EmployeeIDs para outros funcionários. Para designar um supervisor, o EmployeeID de outro funcionário é introduzido neste campo. O Access impõe a Integridade Referencial nesta relação.

O SupervisorID é implementado no formulário de funcionário como uma lista pendente ou caixa de combinação; a respetiva origem de linhas é um conjunto filtrado de registos da tabela Funcionários. Uma vez que é auto-referencial, a consulta tem de excluir o EmployeeID do funcionário selecionado. Por exemplo, a origem de linhas para SupervisorID para a Colaboradora Karen Finster não inclui o employeeID da própria Karen. Não pode ser a sua própria supervisora.

Campos e Controlos de Anexo

As imagens dos funcionários são armazenadas num campo de anexo na tabela. Pode adicionar novas imagens ou alterar imagens existentes com o comportamento predefinido do Access para campos de anexo.  ...

NOTA: Incluímos um campo de anexo na tabela Funcionários para ilustrar a funcionalidade no Access. As imagens incorporadas aumentam o tamanho dos accdbs e, por conseguinte, não são consideradas uma melhor prática. Avalie cuidadosamente o seu ambiente antes de o implementar numa aplicação de produção. A alternativa preferida é uma pasta de rede que armazena todas as imagens e uma ligação num campo de texto na tabela que contém o caminho para a imagem, em vez do campo Anexo.

Subformulário com Informações Relacionadas

O Subformulário encomendas (no lado direito do formulário Funcionário) apresenta encomendas recentes (se existirem) processadas pelo funcionário. O subformulário lista as encomendas na Vista de Folha de Dados, ordenadas da mais recente para a mais antiga. Para editar uma encomenda existente para esse funcionário, clique no ID da Encomenda hiperligado no subformulário Encomendas.

Origem de Registos do Formulário de Funcionário

Uma consulta denominada qryEmployees devolve os registos no formulário. A utilização de uma consulta, em vez da tabela, é geralmente considerada uma melhor prática. A consulta devolve apenas registos de uma tabela. Além disso, uma consulta pode ser parametrizada para limitar o número de registos devolvidos. 

  • A cláusula Select desta consulta utiliza o caráter universal "*" para devolver todos os campos da tabela Employee.

  • Dois campos calculados na consulta devolvem FirstName LastName e LastName, FirstName.  

Valores Calculados em Controlos

NOTA: Os campos calculados não são armazenados na tabela. No entanto, estão disponíveis na origem de registos do formulário.

A maioria dos controlos no formulário Funcionário está Ativada para que possa selecioná-los com o rato ou a tecla de tabulação e não estar Bloqueado para que sejam editáveis. 

Para além do comportamento incorporado do Access, as Funções e Subs VBA em formulários, em controlos em formulários e em módulos autónomos executam a lógica básica necessária para os funcionários. A secção seguinte descreve as funções e o código que implementa essas funções. 

Ação de Controlo Incorporada

Comportamento predefinido do Seletor de Registos do formulário: 

  • Clicar com o botão esquerdo do rato no seletor de registos à esquerda de um formulário numa única vista guarda o registo atual com quaisquer edições. Guardar ao clicar com o botão esquerdo do rato no seletor de registos aciona as funções e subs VBA adequados.

  • Clicar com o botão direito do rato no seletor de registos à esquerda de um formulário numa única vista apresenta um menu para efetuar ações como Cortar, Copiar ou Colar um registo. Eliminar ou cortar um registo aciona a função EmployeeCanBeDeleted descrita abaixo.

  • Os Seletores de Registos têm de estar ativados para que este comportamento predefinido esteja disponível.  

Integridade Referencial para registos no formulário

A Integridade Referencial impede a eliminação de funcionários que tenham registos Subordinados em tabelas relacionadas. Por conseguinte, o Access gera um erro se um utilizador tentar eliminar um registo com registos subordinados. O formulário Funcionário da Northwind O Access substitui as mensagens de erro genéricas predefinidas relativas à integridade referencial por mensagens personalizadas.

O código no procedimento Eliminar do formulário responde às tentativas de Cortar um Registo a partir do menu de contexto ou de eliminar um registo com a tecla Delete

Uma Função Privada, EmployeeCanBeDeleted, verifica a existência de registos relacionados para esse funcionário nas tabelas Encomendas, Encomendas de Compras, Funcionários e Privilégios de Funcionário. 

Se forem encontradas, esta função suprime a mensagem de erro predefinida e informa o utilizador do motivo pelo qual o registo não pode ser eliminado com a mesma caixa de diálogo genérica que o Formulário de cliente utiliza para notificar o utilizador do motivo pelo qual o Cliente não pode ser eliminado.

Validação

Os colaboradores implementam a validação e o processamento de erros padrão. Existem dois tipos de validação para controlos.

  • Campos obrigatórios

  • Formatos padrão

Validação de Campo Necessária

 São necessários três campos para todos os funcionários:

  • Nome

  • Apelido

  • Cargo

Nesta versão do Programador, o evento Antes da Atualização do formulário valida os campos necessários. Se um utilizador tentar guardar um registo de colaborador sem valores para um ou mais campos necessários que não tenham uma validação de valor, cancelará a gravação e realça quaisquer campos necessários que não tenham um valor. No formulário Funcionário na Northwind, a validação de campo necessária é processada pelo evento Antes da Atualização do formulário e não pelos controlos individuais.

O evento Antes da Atualização do formulário do Funcionário valida a presença de valores para os três campos necessários. Guardar um registo de funcionário novo ou editado aciona o evento Antes da Atualização do formulário, que chama as Funções Públicas que verificam e respondem à presença ou ausência dos valores necessários.

O módulo modValidation contém estas funções:

  • ValidateForm

  • IsValidForm

  • HighlightInvalidControls

  • Controlo de Realce

  • ValidateForm_RemoveHighlights

Gerir novos colaboradores

Clicar no botão Adicionar Funcionário executa o sub-btnNewEmployee_Click Privado para: 

  • guardar o registo atual e

  • definir o foco do formulário para um novo registo '

Carateres universais vs. Campos Nomeados numa consulta Selecionar

A cláusula SELECT em qryEmployees utiliza o caráter universal "*" para selecionar TODOS os campos na tabela. A estrutura da consulta com caráter universal inclui automaticamente todos os campos adicionados recentemente a partir de uma tabela subjacente, o que não é possível com uma lista de campos específicos. Por outro lado, pode-se listar campos específicos para restringir o conjunto de registos devolvido apenas aos campos necessários num formulário apenas de apresentação, por exemplo.

Escolhas de Estrutura Adequadas

Os seus designs devem basear-se na abordagem adequada para os seus requisitos. Embora, quando possível, a preferência vá normalmente para a abordagem menos provável de exigir manutenção futura (ou seja, a abordagem de caráter universal). 

Caixas de Combinação vinculadas a Tabelas de Referência — Duas Abordagens

Os itens relacionados, como o Supervisor de um funcionário, são apresentados em Listas pendentes ou Caixas de Combinação em formulários. Só é necessária a Chave Externa para SupervisorID na consulta de origem de registos do formulário, uma vez que esse campo está vinculado ao campo Chave Externa (SupervisorID). A caixa de combinação também apresenta o valor de texto correspondente.

Uma caixa de combinação de duas colunas com uma coluna de ID oculta e uma coluna Descrição visível faz com que isto funcione. No Formulário de Funcionário, a caixa de combinação Supervisor está vinculada a uma consulta simples de duas colunas. Veja a propriedade RowSource para Supervisor.

No entanto, em alguns casos, uma tabela de referência não tem uma Chave Primária separada e, por conseguinte, o próprio valor de texto é a Chave Primária.

Quando uma lista de valores possíveis é pequena e altamente estável, como o título de um funcionário, é frequentemente denominada Domínio Fechado. Alterar ou adicionar valores para Título não é comum. As tabelas de pesquisa de Domínio fechado são candidatas para a abordagem de consulta de uma coluna.

No formulário Funcionário, a caixa de combinação Título está vinculada a uma consulta de uma coluna de Títulos. Veja a propriedade RowSource para Títulos. 

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.