2017-11-17 9:38 GMT+01:00 Dan Kennedy <[email protected]>:
> On 11/17/2017 03:20 PM, Cecil Westerhof wrote:
>
>> The folowing works:
>> db eval ${getTeasToDrinkStr} {
>> puts [format "%-30s %-10s %2s %d" ${Tea} ${Last Used} ${Location}
>> ${Randomiser}]
>> }
>>
>> But I want to reuse what I get, so I tried the following:
>> set teaChoices [db eval ${getTeasToDrinkStr}]
>> foreach tea [array names teaChoices] {
>> puts ${teaChoices}(${tea})
>> }
>>
>> But that does not work. teaChoices is filled, but not as an array. When
>> using:
>> puts ${teaChoices}
>> puts [array size teaChoices]
>>
>> I see in the first line what I expect in teaChoices, but the size is zero.
>> So teaChoices is a string instead of an array. How do I get it filled as
>> an
>> array?
>>
>
> $teaChoices is a Tcl list. Assuming your query is still:
>
> SELECT tea, "last used", location FROM teaInStock;
>
Nope, this one is:
SELECT Tea
FROM teaInStock
ORDER BY "Last Used" DESC
LIMIT 5
;
> then $teaChoices contains three elements for each row returned by the
> query. The first of each set of three is the "tea", the second the "last
> used" value and the third the "location". So:
>
> set teaChoices [db eval $getTeasToDrinkStr]
> for {t last_used loc} $teaChoices {
> puts $t
> }
>
> will print the list of teas.
>
This gives:
wrong # args: should be "for start test next command"
while executing
"for {t last_used loc} $teaChoices {
puts $t
}
There is something going wrong, because:
puts [llength teaChoices]
gives:
1
while it should give:
5
> Not sure whether or not you really want an "array". In Tcl, array means
> associative array - a key-value structure like an STL map. A list is a flat
> vector of values, like an STL vector or an array in plain old C.
Nope, I want a list then. (Or maybe a list of arrays.)
--
Cecil Westerhof
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users