Search code examples
ms-accessdatabase-designcorruption

Ms-Access MDB: Split Memo field into Several Text fields. (To prevent data corruption)


I use an Access database used just as back end, and I use some Memo Fields.

I have learned that Memo Fields are subject to cause database corruption because they are stored in a separate data page; the record only holds a pointer to the data page where the actual data is stored.

Most of the time, I just need from 100 to 1000 chars or so, so I had an idea. My "brilliant" (or not) idea was to split the memo into 4 or 5 Text Field's (they can hold 255 chars each).

Anyone has done this before?
Any known issues?
Would this approach be less prone to data corruption?

P.S.

  1. I have had corruption issues before.
  2. I know the best thing would be to migrate to another back end, but it isn't possible.

Solution

  • The better workaround is to unbundle the memo data page from its attached record. The way to do that is to put the memo field(s) in a separate table. You can either do it with a 1:1 table (with multiple memos in the side table), or, better, as a 1:N table with a memo type field. The latter way is the only way to completely avoid the memo pointer problem, though, as in the former solution, the corruption of any memo pointer in the memo table causes you to lose all of them.

    Also, you should consider why your database is corrupting memo pointers. Aside from the suggestion above, you should probably consider editing your memos unbound, though since it doesn't seem you are using an Access front end to your Jet MDB that is probably not an issue. I see memo corruption every now and again, but not very often. If you see it often, it suggests to me that your application is badly designed or your operating environment is markedly substandard.