MS Access 2010: o texto em um campo “RTF” (na verdade, é HMTL) mostra o código html em vez da formatação pretendida

0

O problema

Estou trabalhando em um banco de dados no MS Access 2010 contendo basicamente texto.

Cada um dos meus cerca de 4000 registros tem um memorando com um texto de cerca de 2000-4000 caracteres. Durante um longo período de tempo tenho destacado variuos partes desses textos aplicando a ele, em um campo de formulário, coisas como "negrito" ou "destaque amarelo" ou "sublinhado" e assim por diante. Isso funcionou bem.

Agora, o problema: de repente, nos registros mais antigos, a formatação não é mais exibida como pretendido. Em vez disso, vejo as respectivas tags html, como <b>, <u>, <BACKGROUND COLOR =...>, <div></div> e assim por diante.

Portanto, a marcação não está perdida. Até parece saudável (todas as tags de fechamento estão lá). Mas o Access não exibe mais corretamente (negrito, amarelo, lista de marcadores, etc.)

Por outro lado, os registros com os quais trabalhei recentemente ainda estão bem formatados em RTF como deveriam.

A questão

Preciso de conselhos sobre o que eu poderia fazer para que o Access reconheça o html corretamente e use-o para exibir recursos gráficos. Alguma forma de operações de string? Alguma forma de reimportação?

Documentação

Aqui está um exemplo de um desses registros que não é exibido corretamente:

Detalhesimportantes:oqueeleschamamde"RTF" é, na verdade, HTML

Note que eu fiz tudo exclusivamente no MS Access 2010. Toda a marcação é definida por mim pessoalmente (não há marcação importada), e toda essa marcação é realmente HTML. No entanto, definir o campo table e as propriedades do campo de formulário para o uso de HTML significa defini-las para o que elas ainda chamam de "RTF". Obviamente, eles não se incomodaram em renomeá-lo. De tudo o que eu sei, nenhum RTF "real" está envolvido, é tudo HTML.

Alterações recentes

Eu não tenho ideia do que causou isso. Eu tenho feito ultimamente muitas operações, especialmente importando outros 1000 registros de uma fonte externa, e algum trabalho adicional na programação VBA do banco de dados. Eu não acho que a importação ou a programação VBA tenha causado ele problenm.

Um possível culpado

No entanto, uma coisa que pode estar relacionada é: durante minhas várias atividades recentes no banco de dados, reconheci que na tabela que contém todos os registros (t01_main) o campo que deveria ter o texto formatado (fiedl chamado [SummaryRTF] ) não foi definido como "RTF" (consulte a nota acima; significa HTML), mas como "texto simples".

Estranhamente isso até agora não foi um problema. O campo de formulário que exibe o texto e onde eu faço a formatação foi definido como "RTF" (ou seja, HTML) de qualquer maneira. Eu não tive nenhum problema com a formatação naquele momento.

Em seguida, ajustei a propriedade do campo da tabela para "RTF" (leia-se: HTML).

Eu acredito strongmente que isso é o que agora causa o problema. Eu suponho, certas alterações foram feitas no texto durante essa etapa.

Então, novamente a pergunta

A pergunta é: o que posso fazer agora para restaurar minha boa formatação, com base no html que obviamente ainda é mantido em campo?

Talvez seja bom saber

  • Eu tenho backups das fases do meu trabalho e poderia, se isso ajudar, importar de lá dados "saudáveis" mais antigos - (do campo da tabela com property: plain) no mesmo campo na última versão da minha tabela (com os dados agora "ruins", onde o mesmo campo é "rtf")
  • Eu posso trabalhar com o VBA para fazer operações de string ou qualquer outra, ou fazer consultas SQL por meio do VBA
  • Mas, claro, quanto mais rápida a solução, melhor

Adendos

1) Eu agora verifiquei em uma versão de backup do banco de dados (com o campo na tabela definida como "texto simples"). Aqui, na exibição de tabela, o texto também possui tags html; no entanto, no campo de formulário (definido como "RTF"), ele exibe um bom formato (negrito, amarelo, etc.)

2) Eu verifiquei - em uma versão de backup - o que acontece quando você altera a configuração do campo tabulado de "Formato de texto: texto simples" para "Formato de texto: RTF". O Access 2010 exibe um alerta da seguinte maneira:

    
por Christian Geiselmann 23.01.2018 / 19:06

1 resposta

0

A solução é mais simples do que se poderia acreditar.

O MS Access possui uma ferramenta interna para corrigir o problema. Como na pergunta original visível em "Addenda", há uma função chamada "PlainText" que pode ser usada, através de uma consulta de atualização, para remover as tags HMTL.

Agora, isso sozinho não seria de todo útil, porque não preciso de texto simples; a coisa valiosa foi toda minha formatação cuidadosa. No entanto, estranhamente, ele faz mais, restaurando a formatação antiga.

Então, o que eu fiz é executar uma consulta de atualização

UPDATE t01_main SET t01_main.SummaryTEST = PlainText([SummaryRTF]);

para preencher um novo campo [SummaryTEST]. (Eu usei um novo campo em vez do campo de origem apenas para ter certeza de que poderia reverter isso se algo desse errado).

Agora, a formatação é legal novamente.

Mas atenção! Se alguns de seus campos que você está misturando através da fábrica "PlainText ()" já são bons e bonitos, a função removeria sua formatação.

Em maiúsculas, isso significava que eu tinha que excluir da consulta de atualização todos os registros que ainda estavam bem, ou seja, aqueles que eu tinha formatado apenas hoje depois de definir a propriedade de campo da tabela de "simples" para "RTF". Felizmente todos esses foram apenas do ano passado de 2017, então eu poderia simplesmente excluí-los por:

UPDATE t01_main SET t01_main.SummaryRTF = PlainText([SummaryRTF]) WHERE (((t01_main.Year)<>"2017"));
    
por 23.01.2018 / 20:13