2017-11-17 9:57 GMT+01:00 Dan Kennedy <[email protected]>:
>
> This gives:
>> wrong # args: should be "for start test next command"
>> while executing
>> "for {t last_used loc} $teaChoices {
>> puts $t
>> }
>>
>
> Sorry - [for] should be [foreach].
>
> So with your query as above, you want:
>
> set teaChoices [db eval $getTeasToDrinkStr]
> foreach t $teaChoices {
> puts $t
> }
>
That solved it, yes.
>
> There is something going wrong, because:
>> puts [llength teaChoices]
>> gives:
>> 1
>> while it should give:
>> 5
>>
>
> Missing $ sign. Should be:
>
> puts [llength $teaChoices]
>
> Without the $, it's returning the length of the literal "teaChoices" - one
> element. Not the length of the list contained in the variable named
> "teaChoices".
That was the problem.
I am trying a bit different route:
set teaList []
db eval ${getTeasToDrinkStr} {
lappend teaList [dict create \
Tea ${Tea} \
LastUsed ${LastUsed} \
Location ${Location} \
Randomiser ${Randomiser}]
}
set i 0
while {${i} < [llength ${teaList}]} {
puts [format "%d: %-30s %-10s %2s %d" [expr ${i} + 1] \
[dict get [lindex $teaList ${i}] Tea] \
[dict get [lindex $teaList ${i}] LastUsed] \
[dict get [lindex $teaList ${i}] Location] \
[dict get [lindex $teaList ${i}] Randomiser]]
incr i
}
This does what I want (I need the value of Tea to update the database), but
is there a better way?
--
Cecil Westerhof
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users