Artigo: 210236 - Última revisão: terça-feira, 23 de Janeiro de 2007 - Revisão: 5.3

Como preencher um registo com dados de um registo anterior automaticamente no Access 2000 e 2002 e Office Access 2003

Moderado: Requer básica macros, codificação e interoperabilidade competências.

Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb).

Para obter uma versão de Microsoft Access 97 deste artigo, consulte 136127  (http://support.microsoft.com/kb/136127/ ) .
Expandir tudo | Reduzir tudo

Sumário

Quando cria novos registos utilizando um formulário, poderá acelerar o processo de entrada de dados por ter campos o novo preenchimento registo automaticamente com valores do registo anterior. Este artigo mostra como criar uma exemplo Visual Basic for Applications função chamada AutoFillNewRecord() permite-lhe preencher campos seleccionados (ou todos os campos) de um registo novo com valores do registo anterior automaticamente.

Nota Este artigo explica uma técnica está demonstrada no ficheiro de exemplo que chama FrmSampl.mdb.

Para obter informações adicionais sobre como obter este ficheiro de exemplo, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
233324  (http://support.microsoft.com/kb/233324/ ) A Microsoft Access 2000 formulários de dados de exemplo disponível no Centro de transferências


A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador. Nota : O exemplo de código neste artigo utiliza Microsoft Data Access objectos. Para que este código seja executado correctamente, tem de referenciar a biblioteca DAO Microsoft 3,6 Object Library. Para o fazer, clique em References no menu Ferramentas no Editor do Visual Basic e certifique-se de que está seleccionada a caixa de verificação Microsoft DAO 3.6 Object Library .

Mais Informação

Uma técnica que pode utilizar para acelerar a introdução de dados repetitiva para o campo que contém o ponto de inserção é premir CTRL + apóstrofo (') para obter o valor do registo anterior.

Outra técnica consiste em utilizar a função () AutoFillNewRecord descrita mais adiante neste artigo. Pode chamar esta função a partir de NoActual propriedade evento procedimento um formulário para preencher todos os campos um novo registo utilizando dados do registo anterior. Se pretender preencher só seleccionada campos, pode criar uma caixa de texto e definir a propriedade ValorPredefinido com uma lista delimitada por ponto e vírgula de nomes de controlo para preencher automaticamente, por exemplo:
   Text box:
   -----------------------------------------------
   Name: AutoFillNewRecordFields
   Visible: No
   DefaultValue: Phone;Company Name;City;State;Zip
				
para criar e utilizar a função AutoFillNewRecord(), siga estes passos:
  1. Abra a base de dados exemplo Adamastor.mdb.
  2. Crie um módulo e escreva a seguinte linha na secção Declarations:
    Option Explicit
    					
  3. Escreva o seguinte procedimento:
     
    Function AutoFillNewRecord(F As Form)
    
       Dim RS As DAO.Recordset, C As Control
       Dim FillFields As String, FillAllFields As Integer
       
       On Error Resume Next
       
       ' Exit if not on the new record.
       If Not F.NewRecord Then Exit Function
       
       ' Goto the last record of the form recordset (to autofill form).
       Set RS = F.RecordsetClone
       RS.MoveLast
       
       ' Exit if you cannot move to the last record (no records).
       If Err <> 0 Then Exit Function
       
       ' Get the list of fields to autofill.
       FillFields = ";" & F![AutoFillNewRecordFields] & ";"
       
       ' If there is no criteria field, then set flag indicating ALL
       ' fields should be autofilled.
       FillAllFields = Err <> 0
       
       F.Painting = False
       
       ' Visit each field on the form.
       For Each C In F
          ' Fill the field if ALL fields are to be filled OR if the
          ' ...ControlSource field can be found in the FillFields list.
          If FillALLFields Or InStr(FillFields, ";" & (C.Name) & ";") > 0 Then
             C = RS(C.ControlSource)
          End If
       Next
       
       F.Painting = True
       
    End Function
    
    					
  4. Guarde o módulo como modAuto_Fill_New_Record.
  5. Abra o formulário clientes na vista de estrutura. Alterar a propriedade NoActual do formulário para leitura da seguinte forma:
    =AutoFillNewRecord([Forms]![Customers])
    					
  6. Adicione uma caixa de texto ao formulário e defina as seguintes propriedades:
       Text Box
       ----------------------------------------------------------
       Name: AutoFillNewRecordFields
       Visible: No
       DefaultValue: CompanyName;ContactName;ContactTitle;Address
    					
    NOTA: esta definição de exemplo para a caixa de texto só funciona na base de dados de exemplo Adamastor. Para sua própria base de dados, pode definir a propriedade ValorPredefinido com uma lista delimitada por ponto e vírgula de nomes de controlo.
Quando acede a um novo registo, os campos NomeDaEmpresa, ContactName, TítuloParaContacto e endereço são preenchidos automaticamente. Se pretender que todos os campos para ser preenchido automaticamente, inclua a propriedade ValorPredefinido em branco ou omitir a colocar a caixa de texto AutoFillNewRecordFields no formulário.

Referências

Para obter mais informações sobre o ciclo for, no Editor do Visual Basic, clique em Ajuda do Microsoft Visual Basic no menu Ajuda , escreva for... Each instrução seguinte no Assistente do Office ou no Assistente de respostas e, em seguida, clique em Procurar para visualizar o tópico.

A informação contida neste artigo aplica-se a:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbcode kbinfo kbprogramming KB210236 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 210236  (http://support.microsoft.com/kb/210236/en-us/ )
 

Traduções de Artigos

 

Related Support Centers