Artigo: 210588 - Última revisão: quinta-feira, 23 de Junho de 2005 - Revisão: 2.0

ACC2000: Como analisar texto separados por vírgulas para campos de múltiplos

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo fornece dois métodos que pode utilizar para analisar o texto separado por vírgulas num campo de texto e para apresentar o texto em vários campos de texto .

Pode utilizar o primeiro método para um campo de texto que contém duas palavras separadas por uma vírgula, por exemplo, um campo que contém um último nome seguido por um nome (Silva, João).

Pode utilizar o segundo método para um campo de texto que contém mais do que duas palavras separadas por vírgulas, por exemplo, um campo que contém uma cidade, região e um país (Toronto, Ontário, Canadá).

Mais Informação

Para analisar os campos de texto separado por vírgulas e para apresentar as cadeias de texto resultante num vários campos de texto , utilize um dos métodos listados abaixo:

Método 1

Este método utiliza uma expressão numa consulta que inclui três funções: a função Instr() para procurar a vírgula no campo texto e as funções Left$() e Right$() para extrair as duas partes do campo de texto .

Para analisar um campo de texto que contém duas palavras separadas por uma vírgula, siga estes passos:
  1. Inicie o Microsoft Access e, em seguida, abra qualquer base de dados existente.

    Crie uma tabela com a seguinte estrutura:
    Tabela: Parse2Words
    ------------------
    Nome de campo: Empl
    Tipo de dados: texto
  2. Visualize a tabela Parse2Words na vista de folha de dados e, em seguida, escreva os seguintes três registos no campo Empl :
    Silva, João
    Callahan, Laura
    Fuller, Andrew
  3. Crie a seguinte consulta baseada na tabela Parse2Words:
       Query: QueryTest
       ------------------------------------------------------------------
       Field: FirstName: Right$([Empl],Len([Empl]) - InStr(1,[Empl],",") -1)
          Show: True
       Field: LastName: Left$([Empl],InStr(1,[Empl],",") -1)
          Show: True
    						
    Nota : É possível modificar a consulta QueryTest para compensar espaços entre as duas partes no campo Empl . Por exemplo, se o texto no campo Empl Silva, João sem espaços, remova o-"1" a expressão de campo de nome .
  4. Execute a consulta. Nota a consulta QueryTest separa o texto no campo Empl em dois campos abaixo:
       FirstName   LastName
       --------------------
       John        Smith
       Laura       Callahan
       Andrew      Fuller
    					

Método 2

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. Este método utiliza duas funções definidas pelo utilizador: uma função CountCSWords() para contar o número de palavras separadas por vírgulas no campo texto com o nome e uma função denominada GetCSWord() para repor a palavra n-ésimo no campo texto .

Para analisar um campo de texto que contém mais de duas palavras separadas por vírgulas, siga estes passos:
  1. Inicie o Microsoft Access e, em seguida, abra uma base de dados.
  2. Crie uma tabela com a seguinte estrutura:
    Tabela: ParseWords
    --------------------
    Nome de campo: localização
    Tipo de dados: texto
  3. Visualize a tabela ParseWords na vista de folha de dados e, em seguida, escreva os seguintes três registos no campo localização :
    Toronto, Ontário, Canadá
    Boston, Massachusetts, E.U.A.
    Vancouver, Reino Unido Columbia, Canadá
  4. Crie um módulo e, em seguida, escreva Option Explicit na secção Declarations se não estiver já existe.
  5. Escreva os seguintes procedimentos:
    Function CountCSWords(ByVal S) As Integer
    ' Counts the words in a string that are separated by commas.
    
    Dim WC As Integer, Pos As Integer
       If VarType(S) <> 8 Or Len(S) = 0 Then
         CountCSWords = 0
         Exit Function
       End If
       WC = 1
       Pos = InStr(S, ",")
       Do While Pos > 0
         WC = WC + 1
         Pos = InStr(Pos + 1, S, ",")
       Loop
       CountCSWords = WC
    End Function
    
    Function GetCSWord(ByVal S, Indx As Integer)
    ' Returns the nth word in a specific field.
    
    Dim WC As Integer, Count As Integer, SPos As Integer, EPos As Integer
       WC = CountCSWords(S)
       If Indx < 1 Or Indx > WC Then
         GetCSWord = Null
         Exit Function
       End If
       Count = 1
       SPos = 1
       For Count = 2 To Indx
         SPos = InStr(SPos, S, ",") + 1
       Next Count
       EPos = InStr(SPos, S, ",") - 1
       If EPos <= 0 Then EPos = Len(S)
       GetCSWord = Trim(Mid(S, SPos, EPos - SPos + 1))
    End Function
    
    					
  6. Compilar o módulo, guardá-lo como basParse e, em seguida, fechá-lo.
  7. Crie a seguinte consulta baseada na tabela ParseWords:
       Query: QueryTest2
       ---------------------------------------
       Field: City: GetCSWord([Location],1)
          Show: True
       Field: Region: GetCSWord([Location],2)
          Show: True
       Field: Country: GetCSWord([Location],3)
          Show: True
    					
  8. Execute a consulta. Nota a consulta QueryTest2 separa o texto no campo localização para os três campos abaixo:
       City        Region             Country
       --------------------------------------
       Toronto     Ontario            Canada
       Boston      Massachusetts      USA
       Vancouver   British Columbia   Canada
    					

Referências

Para mais informações sobre recursos de programação para o Visual Basic for Applications, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
226118  (http://support.microsoft.com/kb/226118/EN-US/ ) OFF2000: Recursos de programação do Visual Basic for Applications

Para obter informações adicionais sobre analisar cadeias de texto, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
209045  (http://support.microsoft.com/kb/209045/EN-US/ ) ACC2000: Expressões de exemplo para extrair a parte da cadeia de texto

A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbhowto kbusage KB210588 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: 210588  (http://support.microsoft.com/kb/210588/en-us/ )