Thanks RVK, as always.
I couldn't get the first suggestion to work. In my CREATE TABLES statement I declared the values as Text and then in my SELECT statements I used CASE, e.g.
SELECT CASE(* as TEXT) from MY_TABLE but I got invalid syntax error, but I couldn't see where it was wrong.
So I reverted those changes and then tried your second suggestion, which did fix the issue, in that it does now display what it should. However the problem I have is that the max value I need to set for these values is 32K! So I have had to decalre VARCHAR(32000) for every row in my database. And whilst 95% of the time, these values won't be anywhere near 32K in length, and will rarely even be over about 500 characters, but any one of them could be at some stage and I don't want the program to crash out because I've been to reserved and set only, say 5K. I have a feeling this 32K VARCHAR declaration may impact performance? Memory usage doesn't seem too bad on the computer while the program is running and doing its thing until the data has to be exported from the DBDataSet to CSV using laddbexport unit and the TCSVExport library, where, prior to export, memory usage sits at about 20Mb, and then after the export it jumps to 600Mb, and stays like that even though I have free'd the TSCVExport creations!
Anyway, it has worked for now RVK so thank you. I can work on a more robust solution in due course.