I’m transfering my app Dictionary Driver from Pervasive-Btrieve to Pervasive-SQL(Scalable) and I have some problems to solve.
When changing the driver, it is mandatory to change the Memo field to Blob. In the browse template, it is no longer possible to explicitly display the content of the memo field simply by specifying the memo field in the List. For example, if the Description field was declared as Memo(2048) in Btrieve, it is now a Blob field and can no longer be in the list of fields in the browse template. Instead, the local variable LocDescription STRING(2048) should be declared and filled accordingly (Display Update Blob Template). The problem is that I need to make the change to several hundred programs and that I cannot simply use the local variable in the QBE template. Is there any simple standard way to implement BLOB field in browse template?
2048 bytes is not that large, plus the DB should compress all the spaces so the mostly empty fields will not take space on disk. Check the DB docs for proper type like VARCHAR.
If the Memo Data is mostly empty I would think a Clarion CSTRING would be fastest as the RTL can scan forward just a few bytes until it finds the CHR(0). Plus I would think the CSTRING becomes a VARCHAR. Looking at the Pervasive data type docs I see a ZSTRING is a VARCHAR.
This is a bit off what you exactly need but if you have sizable BLOBS, maybe whole documents or images even, one way is to have a corresponding control to the right of your list that displays the BLOB for your highlighted row in the browse list. There are several templates that help set this up.