/ I want to change the size of my Memo field to minimum.
/ I use the SET BLOCKSIZE to 0 command but apparently it is not
working.
/ I set the blocksize and add characters to the memo field. But I must
pack
/ memo after to reduce the size ot the
/ table to an acceptable size.
Pack Memo might help even when there is no change in block size. Anyway,
the memo fields whose length is made bigger every once in a while tend
to clutter the .fpt file with unused blocks. When first stuffing some
content into a memo file, sufficient blocks are allocated to keep the
content. Now, if you add some more to it, the allocated blocks are
probably not enough anymore, so it just allocates new blocks for the
complete memo at the end of the .fpt file, leaving the first blocks
unused. It doesn't reuse blocks. The only way to stop them cluttering
your disk is to Pack Memo (which is implicitely done when you just Pack
the table).
Set Blocksize affects creating new tables, or converting old FP/DBase
tables to new format. In your case, Pack Memo worked, and reduced the
..fpt's size; Set Blocksize did nothing.
You might try setting different block sizes and then copying your tables
into new ones (having memos packed, just to be fair in measuring), just
to see which size fits you best. Anyway, the legal values for Set
Blocksize are 64, 128, 256 etc; values from 1 to 32 mean kilobytes per
block.
Another matter: issuing Append Blank is ok, since it doesn't take new
blocks, but issuing an Sql-insert and then filling up the memo fields
may create a new block at the end of .fpt, if the replaced value is
longer (in blocks) than the Insert-ed value. One more, the first block
is shorter 4 bytes or so, which are occupied with the header (contains
length).