Ms-Access MDB: Fractionner le champ Mémo en plusieurs champs de texte. (Pour éviter la corruption de données)

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

Question

J'utilise une base de données Access utilisée en tant que back-end.
J'utilise des champs de mémo.

J'ai appris que les champs Memo sont susceptibles d'entraîner une corruption de la base de données car ils sont stockés dans une page de données distincte. l'enregistrement ne contient qu'un pointeur sur la page de données où sont stockées les données réelles.

La plupart du temps, je n'ai besoin que de 100 à 1000 caractères, alors j'ai eu une idée ...
Mon " brillant " (ou pas) l’idée était de scinder le mémo en 4 ou 5 champs de texte (chacun pouvant contenir 255 caractères).

Quelqu'un a déjà fait cela?
Des problèmes connus?
Cette approche serait-elle moins sujette à la corruption de données?

Merci,
Jag

P.S.
1. J'ai déjà eu des problèmes de corruption.
2. Je sais que le mieux serait de migrer vers un autre serveur, mais ce n'est pas possible.

Était-ce utile?

La solution

La meilleure solution consiste à dissocier la page de données de mémo de son enregistrement attaché. Pour ce faire, placez le (s) champ (s) de mémo dans un tableau séparé. Vous pouvez le faire avec une table 1: 1 (avec plusieurs mémos dans la table annexe) ou, mieux, sous forme de table 1: N avec un champ de type mémo. Ce dernier moyen est le seul moyen d’éviter complètement le problème du pointeur de mémo, même si, comme dans la solution précédente, la corruption de tout pointeur de mémo dans la table des mémos vous fait perdre l’ensemble.

De même, vous devriez envisager pourquoi votre base de données altère les pointeurs de mémoire. Outre la suggestion ci-dessus, vous devriez probablement envisager de modifier vos mémos non liés, mais comme il ne semble pas que vous utilisiez un frontal d'accès à votre base de données Jet, ce n'est probablement pas un problème. Je vois des notes de corruption de temps en temps, mais pas très souvent. Si vous le voyez souvent, cela me suggère que votre application est mal conçue ou que votre environnement d’exploitation est nettement inférieur aux normes.

Autres conseils

On dirait que vous voulez utiliser un champ de mémo existant et le découper avant de le placer dans la base de données, puis de le recoller lorsque vous devez l'afficher.

Je pense que vous allez être dans un monde de douleur si vous essayez cela. J'essaierais plus fort de changer le backend si c'était votre seule option:)

Je me baserai sur la réponse de DWF en suggérant de faire quelque chose comme ce que vous proposiez. Créez un tableau 1: N (je l'appellerai UserNotes) avec un champ de texte (par rapport aux mémos avec lesquels vous semblez avoir des problèmes).

Créez ensuite un sous-formulaire avec UserNotes comme source d'enregistrement et remplacez le champ Mémo par le sous-formulaire UserNotes. Cela permet à l'utilisateur de décider où se trouvent les sauts de ligne / paragraphe dans le contexte du champ de texte de 255 caractères. (pour la conversion, vous devrez toujours couper les mémos, mais ce n'est qu'une opération unique)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top