MS-ACESS MDB: SPLIT MEMO CAMPO em vários campos de texto. (Para evitar a corrupção de dados)

StackOverflow https://stackoverflow.com/questions/826668

Pergunta

Eu uso um banco de dados de acesso usado exatamente como back -end.
Eu uso alguns campos de memorando.

Aprendi que os campos de memorando estão sujeitos a causar corrupção do banco de dados porque são armazenados em uma página de dados separada; O registro contém apenas um ponteiro para a página de dados em que os dados reais são armazenados.

Na maioria das vezes eu só preciso de 100 a 1000 chars ou mais, então tive uma ideia ...
Minha idéia "brilhante" (ou não) era dividir o memorando em 4 ou 5 campos de texto (eles podem conter 255 chars cada).

Alguém já fez isso antes?
Algum problema conhecido?
Essa abordagem seria menos propensa à corrupção de dados?

Obrigado,
Entalhe

Ps
1. Eu já tive problemas de corrupção antes.
2. Sei que a melhor coisa seria migrar para outro back -end, mas não é possível.

Foi útil?

Solução

A melhor solução alternativa é desencadear a página de dados do memorando de seu registro anexado. A maneira de fazer isso é colocar o (s) campo (s) de memorando em uma tabela separada. Você pode fazer isso com uma tabela 1: 1 (com vários memorandos na mesa lateral) ou, melhor, como uma tabela 1: n com um campo de tipo de memorando. A última maneira é a única maneira de evitar completamente o problema do ponteiro do memorando, como na solução anterior, a corrupção de qualquer ponteiro de memorando na tabela de memorando faz com que você perca todos eles.

Além disso, você deve considerar Por quê Seu banco de dados está corrompendo os ponteiros de memorando. Além da sugestão acima, você provavelmente deve considerar a edição de seus memorandos, embora, uma vez que não pareça que você está usando um front end de acesso ao seu Jet MDB que provavelmente não é um problema. Eu vejo corrupção no memorando de vez em quando, mas não com muita frequência. Se você o vê com frequência, sugere -me que seu aplicativo foi mal projetado ou seu ambiente operacional é marcadamente abaixo do padrão.

Outras dicas

Parece que você deseja pegar um campo de memorando existente e cortar antes de colocá-lo no banco de dados e, em seguida, colá-lo novamente quando precisar exibi-lo.

Eu acho que você vai estar em um mundo de dor se tentar isso. Eu tentaria mais mudar o back -end se essa fosse sua única opção :)

Vou construir a resposta da DWF sugerindo fazer algo como você estava sugerindo. Faça uma tabela 1: n (vou chamá -la de usuário) com um campo de texto (vs os memorandos com os quais você parece estar tendo problemas).

Em seguida, crie um subformado com usuários como fonte de registro e substitua o campo Memorando pelo subformado Usernotes. Isso permite que o usuário decida onde as quebras de linha/parágrafo estão dentro do contexto do campo de texto de 255 caracteres. (Para conversão, você ainda terá que cortar os memorandos, mas isso é apenas uma operação única)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top