[Gambas-user] Subst$ with a Variant array of values
Bruce
adamnt42 at gmail.com
Sun May 19 08:14:08 CEST 2019
Looks good to me! I'll give it a try.
tx
Bruce
On 19/5/19 3:40 pm, Tobias Boege wrote:
> On Sun, 19 May 2019, Bruce wrote:
>> I don't think I have seen this before. (in fact I've never tried it before.)
>>
>> Basically, I have a Variant[] that contains the values that I want to
>> substitute into a string. That variant could be any length but (in this
>> case) is specific to the substitution pattern.
>>
>> The pattern is in fact an SQL query pattern that looks like
>> "SELECT * FROM &1 WHERE blah=$$&2$$ AND blahblah=&3".
>> The value array actually comes from another query that returns a single row
>> as an array, e.g. ["sales","D KB","27-Mar-2019"]. In other words, I am
>> trying to build a query based on the results of a prior query.
>>
>> So, I would "like" to be able to:
>> sQry=Subst$(sPattern, vaCriteria)
>> Is this feature possible?
>>
>
> You should think twice about using Subst$() to build a database query.
> Connection.Subst() will handle quoting better and in a database-specific
> way. And if you use a real method of a real class, you can use
>
> Object.Call(hConnection, "Subst", ...)
>
> to call it with an array of arguments, that you can freely build at
> runtime. It's not pretty, but the only solution I can think of.
>
> Example:
>
> Dim tmp As New String[]
> Dim h As New Connection
> h.Type = "sqlite3"
> h.Open()
>
> tmp.Push("SELECT &1 FROM &2 WHERE &1=&2")
> tmp.Insert(["a", "b"])
> Print Object.Call(h, "Subst", tmp)
>
> > SELECT 'a' FROM 'b' WHERE 'a'='b'
>
>> (As usual, the long explanation...)
>>
>
> Unusual for me but I'm going to skip that.
>
> Regards,
> Tobi
>
More information about the User
mailing list