Am Donnerstag, den 09.02.2006, 09:36 +0100 schrieb Frank Schönheit - Sun
Microsystems Germany:
> Hi Marc,

Hello Frank,

> > Hi,
> > 
> > I'm searching an API for changing the appearance of values in self built
> > strings for use in SQL statements to the right form.
> > ...
> > If I want to make SQL strings myself and fire them from OO.o to a
> > connected DB this difference has to be detected and handled. At the
> > moment I have to ask the databases metadata for every single field what
> > type it is, have in mind what types are possible (decimal, float,
> > currnecy, ...) and do the right thing. That is a tedious and error prone
> > task.
> > 
> > How is it done inside OO.o and is there a publicly available
> > service/inteface for shrinking my code?
> 
> Inside OOo, this kind of string creation is deep inside some parser
> code, and not available as UNO service. At a low level, the
> XLocaleData.getLocaleItem might at least help you in obtaining the
> proper separators.

Okay, I'll have a look at it (although it'll take some time).

> At a higher level, the XSingleSelectQueryComposer, in particular its
> appendFilterByColumn method, are the only way to let an UNO service
> generate the string representations. However, this contradicts your wish
> to create the SQL strings yourself, it seems.

Yes, I do use a QueryComposer for quoting strings and identifiers the
right way, as you kindly told me. :)

Do you see any sense in making a helper service concentrating on this
kind of tasks?

Another use case is filling a Rowset for posting to the db. In a
Calc-makro I'm using something similar and have to carry it around as a
library:


' Umwandlung des Werts aus der Zelle in den passenden Spaltentyp
' fehlende Typen bitte ergänzen!
sub doUpdateValue(aRowSet as object, colnum as integer, ntype as
integer, value)
        select case ntype
                case com.sun.star.sdbc.DataType.BIT
                        aRowSet.updateBoolean(colnum, value)
                case com.sun.star.sdbc.DataType.INTEGER, _
                         com.sun.star.sdbc.DataType.SMALLINT, _
                         com.sun.star.sdbc.DataType.TINYINT, _
                         com.sun.star.sdbc.DataType.BIGINT
                        aRowSet.updateInt(colnum, value)
                case com.sun.star.sdbc.DataType.FLOAT
                        aRowSet.updateFloat(colnum, value)
... and so on and on and on ...

So I think demanding a "locale converter service" from and to the
current locale for base would be a good thing.

What do you think?
What do other script programmers think?

Regards,
Marc



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to