I am using LibreOffice version 7.5 with FireBird on Windows 10 desktop.
_
I have a very long text field for which the “Text Type” property is set for “Multi-Line.” This text field contains many list items that should be indented. However, I did not see a way to Indent text. So, I just entered 5 spaces in front of each text item to manually move the text to the right.
_
Although the spaces look fine on my Form, when I PRINT the Report, Base ignores the spaces and the text items are not indented.
_
Is there a way to make the Base Report function recognize an Indent or spaces?
Seem it is deleting CHAR(32) at the start. You could add CHAR(8196) or something like this. Have a look at Wikipedia.
So you could create, in a query, something like this:
SELECT CHAR(8196)||"Field" AS "Field" FROM "Table"
This will add one space. You could write as much CHAR(8196)|| as you want.
If you already have the spaces in your fields/query you may follow @RobertG and use CHAR(8196), but replace CHAR(32) with with CHAR(8196) by string-function.
.
On the other hand: The report-builder will (usually?) create a table with indents…
Thank you! If I go back and edit the text to substitute CHAR(8196) for CHAR(32), the Report prints just fine.
That’s a lot of substitutions, however, for a database that has thousands of records. I looked at the “Edit and Replace” function, but didn’t see any way to find and replace CHAR(32) with CHAR(8196).
@Wanderer
Report-Builder? You mean the one that’s already built into Base/Firebird… or is there another one?
Yes. It is basically a 3rd party software. In old versions of LibreOffice (and still in OpenOffice) it used to be distributed as an add-on.
You can do this directly in the SQL-query via replace (see reference at Firebird):
https://firebirdsql.org/refdocs/langrefupd25-intfunc-replace.html
If I use Roberts example above I’d use:
SELECT REPLACE("Field", CHAR(32), CHAR(8196)) AS "Field" FROM "Table"
Thank you, @RobertG and @Wanderer.
I modified your command, and copied and pasted it into the Tools > SQL command window as follows:
SELECT REPLACE("fldProcedure", CHAR(32), CHAR(8196)) AS "fldProcedure" FROM "tblRecipes"
_
But I got an error message:
1: firebird_sdbc error:
*Dynamic SQL Error
*SQL error code = -104
*Token unknown - line 1, column 33
*CHAR
caused by
‘isc_dsql_prepare’
_
Do you see my error?
_
I also looked at the link you included for Firebird that discussed the REPLACE command, but I didn’t see a way to specify the table and field to search in (fldProcedure in tblRecipes). Does it search and replace in all fields in all tables?
Firebird uses ASCII_CHAR instead of CHAR.
Replace will change all fields in the table “tblRecipies” with this command:
SELECT REPLACE("fldProcedure", ASCII_CHAR(32), ASCII_CHAR(8196)) AS "fldProcedure" FROM "tblRecipes"
Tried this in Firebird. ASCII_CHAR won’t accept values greater than 255. So it doesn’t work. So the only solution I found: Open Writer. Choose special characters U+2007 (for example). Insert in Writer. Copy this to Base. Insert it between two ''.
This is not an “active” search and replace. It modifies the named Input, in this example column “Field” (as you didn’t tell the name of your columns, we use a generic invented name).
.
My command would not change your database, but can be used “on the fly” to modify the output of your query. So don’t use Tools->SQL, but modify a query in SQL-View.
.
It is possible to do this conversion permanently using UPDATE Table, but think twice, before doing this (and keep a backup of current data…)