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

ACC2000: Campo de Memo truncado quando o 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çado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.

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

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Quando exporta um relatório para o Microsoft Excel, qualquer campo de memorando é truncado para 255 caracteres. Também poderá ver este comportamento quando clica no comando Analisar com o MS Excel enquanto são pré-visualizar 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 exporta um relatório para formato Excel 5.0/95, no qual o comprimento máximo de conteúdo da célula de texto é 255.

Resolução

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.

Método 1

Exportar a tabela ou consulta subjacente para o formato de ficheiro do Excel 2000. Para o fazer, siga estes passos:
  1. Na janela Base de dados, seleccione a tabela ou consulta em que o relatório se baseia.
  2. No menu ficheiro , clique em Exportar .
  3. No Exportar tabela '< Nome da Tabela >' caixa de diálogo, seleccione Microsoft Excel 97-2000 (*.xls) na caixa Guardar c/ o tipo de.
  4. Clique em Guardar para exportar a tabela.

Método 2

Crie caixas de texto no relatório para dividir o campo de memorando em cadeias de 250 caracteres. Depois de ter exportar o relatório, remontar as cadeias.

Por exemplo, suponha tiver um campo de memorando denominado notas e em alguns registos, o conteúdo do campo tem 700 caracteres de comprimento. Pode criar três caixas de texto no relatório de cada uma das seguintes três expressões como origem do controlo para uma das caixas de texto:
=Mid([Notes],1,250)

=Mid([Notes],251,250)

=Mid([Notes],501,250)
Depois de ter exportar o relatório para uma folha de cálculo, pode remontar os segmentos do campo de memorando. Por exemplo, os segmentos do campo Nota do primeiro registo aparecem nas células B2, C2 e D2 respectivamente. Pode remontar campo Memo escrevendo a seguinte fórmula noutra célula, E2:
=CONCATENATE(B2,C2,D2) )
Em seguida, é possível copiar esta fórmula para o resto das células na coluna E remontar o campo notas para todos os registos.

Note que a função concatenar devolve o erro # valor quando tenta utilizar a fórmula
=CONCATENATE(B2:D2) )
O endereço de cada célula cujo conteúdo pretende incluir no resultado concatenado tem de ser listado separadamente.

Se o comprimento dos dados no campo Nota faz necessários para criar mais do que algumas caixas de texto, pode utilizar um procedimento do Visual Basic for Applications para automatizar a criação dessas caixas de texto. O exemplo seguinte demonstra como utilizar um procedimento para criar as caixas de texto e, em seguida, exportar o relatório e remontar o conteúdo da caixa texto.
  1. Siga os passos 1 a 7 na secção "Passos para reproduzir o comportamento" mais adiante neste artigo.
  2. Crie um novo relatório na vista de estrutura com base na tabela tblMemoOutput.
  3. Arraste o campo código para a secção de detalhe do relatório.
  4. Guarde o relatório como rptMemoOutput.
  5. Abra um novo módulo e escreva 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 guarde o módulo como mdlSplitFunction.
  7. Escreva o seguinte na janela Immediate e prima ENTER:
    ?MemoSplitter("rptMemoOutput","Notes",5200)
    					
  8. Ver o relatório no modo Pré-visualizar. No menu Ferramentas , aponte para Ligações do Office e, em seguida, clique em Analisar com o MS Excel .
  9. Quando aparecerem os dados num ficheiro de folha de cálculo no Microsoft Excel, clique em célula A1 ; prima CTRL + SHIFT+END para seleccionar todos os dados.
  10. No menu Formatar , aponte para linhas e, em seguida, clique em Ajustar automaticamente .
  11. Seleccione a célula A2 . No menu Inserir , clique em linhas .
  12. Escreva a seguinte fórmula na célula A2:
    =VALUE(LEFT(A1,FIND("M",A1,1)-1))
  13. Copie a fórmula para as células B2 - U2 .
  14. Seleccione as células 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 . Isto converte as fórmulas na segunda linha para valores que pode utilizar para ordenar os segmentos do campo Notas.
  18. Clique na célula A2 e prima CTRL + SHIFT+END para seleccionar tudo, mas a primeira linha de dados.
  19. No menu dados , clique em ' Ordenar '.
  20. Na caixa de diálogo Ordenar , clique em Opções .
  21. Em orientação na caixa de diálogo Opções de ordenação , clique em Ordenar da esquerda para direita . Em seguida, clique em OK .
  22. Na caixa de diálogo Ordenar , clique em Row2 na lista de Ordenar por e, em seguida, clique em OK para ordenar os segmentos do campo notas .
  23. Na célula W3 , escreva 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 remontar o campo notas para cada registo.

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Passos para reproduzir o comportamento

  1. Inicie o Microsoft Access e abra uma base de dados.
  2. Crie a seguinte tabela denominada tblMemoOutput:
       Table: tblMemoOutput
       --------------------
       Field Name: ID
       Data Type: Text
       Field Name: Notes
       Data Type: Memo
    					
  3. Guarde a tabela como tblMemoOutput. Quando lhe for pedido para criar uma chave primária, clique em não .
  4. Abra a tabela na vista de folha de dados e introduza os seguintes registos:
       ID   Notes
       --   -----
       a    a
       b    b
       c    c
    					
  5. Abra um novo módulo e escreva 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 guarde o módulo como mdlDataFunction.
  7. Introduza o seguinte na janela Immediate e prima ENTER:
    ?FillMemo("tblMemoOutput","Notes")
    					
  8. Utilizar o relatório automático: colunas Assistente para criar um relatório com base no tblMemoOutput. Ver o relatório no modo Pré-visualizar.
  9. No menu Ferramentas , aponte para Ligações do Office e, em seguida, clique em Analisar com o MS Excel .
  10. Quando aparecerem os dados num ficheiro de folha de cálculo no Microsoft Excel, escreva a seguinte fórmula na célula C2:
    =LEN(B2)
    Tenha em atenção que a dados no campo Notas foram truncados para 255 caracteres.

Referências

Para mais informações sobre como carregar o resultado de um relatório para o Microsoft Excel, clique em Ajuda do Microsoft Access no menu de Ajuda escreva Exportar dados no Assistente do Office ou no Assistente de respostas e, em seguida, clique em Procurar para visualizar os tópicos devolvidos.

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 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: 208801  (http://support.microsoft.com/kb/208801/en-us/ )