>I cannot replicate with code -- even with THAT table while in a suspended state. That is what I was trying to convey with the latter part of the article. If I replace it manually thousands of times, no bloat -- only when it is done through this program.
>
>I cannot use a memory variable. The table is referenced recursively directly in hundreds of places.
It should be relatively straightforward to systematically search through code, and replace all occurences.
If you do it, perhaps you should take the time to use a "wrapper" function or class. So, instead of:
replace MyMemoField with MyMemoField + "Some Text"
you might use (I am assuming the text is some auditing stuff, but it doesn't really matter if it doesn't):
AddAuditText("Some Text")
oAudit.AddText("Some Text")
That should make it easy to redesign later, for instance, to change from a memo field to a memory variable, or to a text file on disk, to do a memo cleanup after every 100 uses, etc. - all in a single place.
A public object (or one declared in the main program; it might also be a property of the global application object) would be especially appropriate; it could store the data itself (if you decide to use memory variables), have methods for adding and retrieving text, do the cleanup if you decide to use memo variables, and, of course, do all the necessary encapsulation, as outlined above. I.e., hide the implementation details, so that you would no longer have to search through your entire program if you change the way the data is stored.
By the way, how do you handle the cursor with private datasessions? Change the datasession temporarily, or what?
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)