Since we are on a wish list, I would rather just have the ability to use
variables in a case statement. Then you could do a hack like

<cfscript>
myrange="";
for(i=30; i lt 45; i=i+1){
        devnull = listAppend(myrange,i,",");l
}
</cfscript>

<cfswitch expression="#myswitch#">
        <cfcase value="#myrange#" delimiters=","></cfcase>
        ...
</cfswitch>

there have been other instance were a variable in a case would have been a
life saver.


-----Original Message-----
From: Matt Robertson [mailto:[EMAIL PROTECTED]]
Sent: Monday, October 14, 2002 3:36 PM
To: CF-Talk
Subject: Re: switch-case was RE: BlueDragon (was RE: How is CFMX J2EE
implemented?)


No, the ZIPs aren't common usage, but I've certainly had to deal with it a
lot.  Just used them to illustrate the point.  Another issue with the same
application was doing age ranges.  Simple to type ''30 to 45'' and annoying
to have to type out ''30,31,32,33...'' etc.

What I'm curious about is whether something simple to code exists that can
do that job with reasonable performance.  There's no measurable performance
hit on the client/server app, so *someone* was able to build it and make it
work.

That code BTW is from a product called Superbase.  Mighty powerful RAD stuff
that no one has ever heard of.  Between pathetic promotion back when the
market was still young (SB was the first native Windows DB) and Microsoft
selling Access for $99 in a field where the competition was $700... it was
never a volume player.  A great tool, but not something you'd spend time
learning unless you had to.

---------------------------------------
Matt Robertson    [EMAIL PROTECTED]
MSB Designs, Inc., www.mysecretbase.com
---------------------------------------


---------- Original Message ----------------------------------
from: S. Isaac Dealey <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
date: Mon, 14 Oct 2002 18:20:08 -0400

>I should probably keep my nose out of this one. :)
>
>> Ah... this is why competition is good.
>
>> I don't have a new feature, per se, but I do have a pet
>> peeve that came about from porting an app written in
>> another language to an online CF version.
>
>> The CFCASE portion of CFSWITCH is sorely limited in its
>> ability to handle parameters.  It can't do ranges, and if
>> it could it can't mix multiple parameters on the same
>> line.  Look at the following case argument written in
>> another language:
>
>> SELECT CASE carval%
>>    CASE 1 TO 50000:H6.VL = "500":H7.VL = "500"
>>    CASE 50001 TO 100000:H6.VL = "1,000":H7.VL = "1,000"
>>    CASE IS > 100000:H6.VL = "2,500":H7.VL = "2,500"
>> END SELECT
>
>What's that VB? VB's the only language I'm familiar with that uses
>select-case rather than switch-case ... and I've never seen ranges used in
a
>case statement, although I have occasionally wished that there were a
method
>for it... There are of course, other ways to accomplish this:
>
><cfset myarray = arraynew(1)>
><cfset myarray[1] = 100001>
><cfset myarray[2] = 50001>
><cfset myarray[3] = 1>
><cfloop index="x" from="1" to="#arraylen(myarray)#">
>       <cfset mylocalvariable = min(mylocalvariable,myarray[x])>
></cfloop>
><cfswith expression="#mylocalvariable#">
>       <cfcase value="1"></cfcase>
>       <cfcase value="50001"></cfcase>
>       <cfcase value="100001"></cfcase>
></cfswitch>
>
>This is even assuming that there isn't a faster / easier way to do this in
a
>formulaic manner, i.e.
>
><cfset mylocalvariable = ceiling(myquery.mycolumn / 50000)>
><cfswitch expression="#mylocalvariable#">
>       <cfcase value="1"></cfcase>
>       <cfcase value="2"></cfcase>
>       <cfdefaultcase></cfdefaultcase>
></cfswitch>
>
>> 5 lines of code, total.  While you could do this without
>> *too* much more CF code, this is a very simple example.
>> Doing U.S. ZIP code ranges, where you are selecting
>> combinations of individual ZIPs and ranges - can be coded
>> in a LOT fewer lines if you allow something like the
>> following:
>
>> <CFSWITCH EXPRESSION="#variables.ZIPCode#>
>>    <CFCASE VALUE="LT 93711">
>>       ...blahblahblah...
>>    </CFCASE>
>>    <CFCASE VALUE="93712, 93713 TO 93940, 93950, 94086 TO
>>    95050">
>>       ...blahblahblah...
>>    </CFCASE>
>>    <CFCASE VALUE="GT 93940">
>>       ...blahblahblah...
>>    </CFCASE>
>> </CFSWITCH>
>
>I dunno if I'd use zip-codes as an example of common usage ... GIS is a
>pretty hefty subject in and of itself.
>
>I suspect if I wanted to do something like this in CF I would probably wind
>up using the database, structures or a 5-dimensional array ( one dimension
>for each digit in the zip code ) ... most likely database ... I could write
>a case statement in sql server with ranges, though that has a lot to do
with
>the cases in sql server ( not sure about other db servers ) being scalar
>expressions (?) is that the right term?... In any event, any one of the
>three solutions is liable to be more efficient than a horde of <cfif>
>statements as I think many of us may be apt to launch into, just because
the
>the structure and array solutions may not be very intuitive and the db
>solution requires sql knowledge that many of us haven't mastered.
>
>
>Isaac
>Certified Advanced ColdFusion 5 Developer
>
>www.turnkey.to
>954-776-0046
>
>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4
Subscription: http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf_talk
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Get the mailserver that powers this list at http://www.coolfusion.com

Reply via email to