ID do artigo: 208801 - Última revisão: quinta-feira, 23 de junho de 2005 - Revisão: 2.0

ACC2000: Campo de memorando truncado ao relatório é a saída para o Excel

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.

Avançadas: Requer especialista de codificação, interoperabilidade e habilidades de multiusuário.

Para uma versão deste artigo do Microsoft Access 2002, consulte 294286  (http://support.microsoft.com/kb/294286/EN-US/ ) .

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Quando você dá saída a um relatório para o Microsoft Excel, qualquer campo Memorando será truncado para 255 caracteres. Esse comportamento também pode ser verificado quando você clica no comando Analisar com o MS Excel enquanto está visualizando um relatório.

Causa

No Excel, o comprimento máximo de conteúdo da célula de texto é 32.000 caracteres. No entanto, o Access gera um relatório para formato Excel 5.0/95, no qual o comprimento máximo de conteúdo da célula de texto é de 255.

Resolução

Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades.

Método 1

Exportar a tabela ou consulta base para o formato do Excel 2000. Para fazer isso, execute estas etapas:
  1. Na janela banco de dados, selecione a tabela ou consulta na qual o relatório é baseado.
  2. No menu arquivo , clique em Exportar .
  3. No Exportar tabela '< Nome da Tabela >' caixa de diálogo, selecione Microsoft Excel 97-2000 (*.xls) na caixa Salvar como tipo .
  4. Clique em Salvar para exportar a tabela.

Método 2

Crie caixas de texto no relatório para dividir o campo Memorando em seqüências de caracteres de 250. Após você ter emitir o relatório, remontar essas cadeias de caracteres.

Por exemplo, suponha que você tem um campo de memorando chamado Notes, e em alguns registros, o conteúdo desse campo for 700 caracteres longo. Você pode criar três caixas de texto no relatório com cada uma das três expressões a seguir como a origem do controle para uma das caixas de texto:
=Mid([Notes],1,250)

=Mid([Notes],251,250)

=Mid([Notes],501,250)
Após você ter emitir o relatório para uma planilha, você pode remontar os segmentos do campo Memorando. Por exemplo, os segmentos do campo Memorando do primeiro registro aparecem nas células B2, C2 e D2 respectivamente. Você pode remontar o campo Memorando, digitando a seguinte fórmula na outra célula, E2:
=CONCATENATE(B2,C2,D2) )
Em seguida, você pode copiar essa fórmula para o resto das células na coluna E remontar o campo do Notes para todos os registros.

Observe que a função CONCATENAR retorna o erro # valor quando você tenta usar a fórmula
=CONCATENATE(B2:D2) )
O endereço de cada célula cujo conteúdo você deseja incluir no resultado concatenado deve ser listado separadamente.

Se o comprimento dos dados no campo Memorando torna necessário para que você crie mais de algumas caixas de texto, você pode usar um procedimento do Visual Basic for Applications para automatizar a criação das caixas de texto. O exemplo a seguir demonstra como usar um procedimento para criar caixas de texto, em seguida, o relatório de saída e remontar o conteúdo da caixa texto.
  1. Execute as etapas 1 a 7 na seção "Passos para reproduzir o problema mostrados" posteriormente neste artigo.
  2. Crie um novo relatório no modo de design com base na tabela tblMemoOutput.
  3. Arraste o campo ID à seção detalhe do relatório.
  4. Salve o relatório como rptMemoOutput.
  5. Abra um novo módulo e digite o seguinte procedimento:
    Function MemoSplitter(strReportName As String, _
       strFieldName As String, lngMemoLength As Long)
    
       Dim NewControl As Control
       Dim intLoopCount As Integer
       For intLoopCount = 0 To lngMemoLength / 250
    
          Set NewControl = CreateReportControl(strReportName, _
             acTextBox, acDetail)
          NewControl.Name = intLoopCount & "MemoText"
          NewControl.ControlSource = "=Mid([" & _
             strFieldName & "]," & 250 * intLoopCount + 1 _
             & ",250)"
       Next intLoopCount
    
    End Function
    					
  6. Compile e salve o módulo como mdlSplitFunction.
  7. Digite o seguinte na janela Verificação imediata e, em seguida, pressione ENTER:
    ?MemoSplitter("rptMemoOutput","Notes",5200)
    					
  8. Exiba o relatório em Visualizar impressão. No menu Ferramentas , aponte para Vínculos do Office e, em seguida, clique em Analisar com o Microsoft Excel .
  9. Quando os dados for exibida em um arquivo de planilha em Microsoft Excel, clique em célula A1 ; pressione CTRL + SHIFT + END para selecionar todos os dados.
  10. No menu Formatar , aponte para linha e, em seguida, clique em AutoAjuste .
  11. Selecione a célula A2 . No menu Inserir , clique em linhas .
  12. Digite a seguinte fórmula na célula A2:
    =VALUE(LEFT(A1,FIND("M",A1,1)-1))
  13. Copie a fórmula para células B2 - U2 .
  14. Selecione as células de A2 - U2 .
  15. No menu Editar , clique em Copiar .
  16. No menu Editar , clique em Colar especial .
  17. Em Colar na caixa de diálogo Colar especial , clique em valores e, em seguida, clique em OK . Isso converte as fórmulas na segunda linha para valores, que você pode usar para classificar os segmentos do campo do Notes.
  18. Clique na célula A2 e pressione CTRL + SHIFT + END para selecionar todos os mas a primeira linha de dados.
  19. No menu dados , clique em Classificar .
  20. Na caixa de diálogo Classificar , clique em Opções .
  21. Em orientação na caixa de diálogo Opções de classificação , clique em Classificar da esquerda para direita . Em seguida, clique em OK .
  22. Na caixa de diálogo Classificar , clique em Row2 na lista Classificar por e, em seguida, clique em OK para classificar os segmentos do campo do Notes .
  23. Na célula W3 , digite a seguinte fórmula:
    =CONCATENATE(A3,B3,C3,D3,E3,F3,G3,H3,I3,J3,K3,L3,M3,N3,O3,P3,Q3,R3,S3,T3,U3)
  24. Copie a fórmula para células W3 e W4 para remontar o campo anotações para cada registro.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

Etapas para reproduzir o problema

  1. Inicie o Microsoft Access e abra qualquer banco de dados.
  2. Crie a seguinte tabela denominada tblMemoOutput:
       Table: tblMemoOutput
       --------------------
       Field Name: ID
       Data Type: Text
       Field Name: Notes
       Data Type: Memo
    					
  3. Salve a tabela como tblMemoOutput. Quando solicitado a criar uma chave primária, clique em não .
  4. Abra a tabela no modo folha de dados e digite os seguintes registros:
       ID   Notes
       --   -----
       a    a
       b    b
       c    c
    					
  5. Abra um novo módulo e digite o seguinte procedimento:
    Function FillMemo(strTableName As String, _
       strFieldName As String)
    
       Dim db As Database
       Dim rs As Recordset
       Dim intLoopCount As Integer
    
       Set db = CurrentDb
       Set rs = db.OpenRecordset(strTableName)
    
       Do Until rs.EOF
          rs.Edit
    
          For intLoopCount = 1 To 26
             rs(strFieldName) = rs(strFieldName) _
                & String(200, Chr(intLoopCount + 64))
          Next intLoopCount
    
          rs.Update
          rs.MoveNext
       Loop
    
       db.Close
    
    End Function
    
    					
  6. Compile e salve o módulo como mdlDataFunction.
  7. Digite o seguinte na janela Verificação imediata e, em seguida, pressione ENTER:
    ?FillMemo("tblMemoOutput","Notes")
    					
  8. Use o AutoRelatório: Colunar Assistente para criar um relatório com base em tblMemoOutput. Exiba o relatório em Visualizar impressão.
  9. No menu Ferramentas , aponte para Vínculos do Office e, em seguida, clique em Analisar com o Microsoft Excel .
  10. Quando os dados aparecem em um arquivo de planilha no Microsoft Excel, digite a seguinte fórmula na célula C2:
    =LEN(B2)
    Observe que a dados no campo anotações foram truncados para 255 caracteres.

Referências

Para obter mais informações sobre como carregar a saída de um relatório no Microsoft Excel, clique em Ajuda do Microsoft Access no menu Ajuda , digite saída de dados no Assistente do Office ou no Assistente de resposta e, em seguida, clique em Pesquisar para exibir os tópicos retornados.

A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbbug kbpending KB208801 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 208801  (http://support.microsoft.com/kb/208801/en-us/ )