Select Case statement not working correctly (Full Version)

All Forums >> [Web Development] >> ASP, PHP, and Database



Message


dzirkelb1 -> Select Case statement not working correctly (6/18/2009 12:32:16)

I have an issue with my statement. here is the code:

intWeekToAdd = 0
intDayOfYear = 0
intDayOfYear = cInt(DateDiff("d", "1/1/2009", Date()))

select case intDayOfYear
	case intDayOfYear < 22
		intWeekToAdd = 1
	case intDayOfYear > 21 and intDayOfYear < 43
		intWeekToAdd = 2
	case intDayOfYear > 42 and intDayOfYear < 64
		intWeekToAdd = 3
	case intDayOfYear > 63 and intDayOfYear < 85
		intWeekToAdd = 4
	case intDayOfYear > 84 and intDayOfYear < 106
		intWeekToAdd = 5
	case intDayOfYear > 105 and intDayOfYear < 127
		intWeekToAdd = 6
	case intDayOfYear > 126 and intDayOfYear < 148
		intWeekToAdd = 7
	case intDayOfYear > 147 and intDayOfYear < 169
		intWeekToAdd = 8
	case intDayOfYear > 168 and intDayOfYear < 190
		intWeekToAdd = 9
	case intDayOfYear > 189 and intDayOfYear < 211
		intWeekToAdd = 10
	case intDayOfYear > 210 and intDayOfYear < 232
		intWeekToAdd = 11
	case intDayOfYear > 231 and intDayOfYear < 253
		intWeekToAdd = 12
	case intDayOfYear > 252 and intDayOfYear < 274
		intWeekToAdd = 13
	case intDayOfYear > 273 and intDayOfYear < 295
		intWeekToAdd = 14
	case intDayOfYear > 294 and intDayOfYear < 316
		intWeekToAdd = 15
	case intDayOfYear > 315 and intDayOfYear < 337
		intWeekToAdd = 16
	case intDayOfYear > 336 and intDayOfYear < 365
		intWeekToAdd = 17
end select

response.write(intDayOfYear&"<br>"&intWeekToAdd)


intDayOfYear = 168, so, intWeekToAdd should equal 8; however, it is still set at 0. What am I doing wrong?




ou812 -> RE: Select Case statement not working correctly (6/18/2009 14:01:47)

Unfortunately, the ASP case select statement does not allow comparisons. You can only match to exact results. So you can either type each number you need it to match against separated by commas or use an ifelse routine. I would suggest an ifelse routine. Something like this:
intWeekToAdd = 0
intDayOfYear = 0
intDayOfYear = cInt(DateDiff("d", "1/1/2009", Date()))

if intDayOfYear > 336 then
		intWeekToAdd = 17
elseif intDayOfYear > 315 then
		intWeekToAdd = 16
elseif  intDayOfYear > 294 then
		intWeekToAdd = 15
elseif intDayOfYear > 273 then
		intWeekToAdd = 14
elseif intDayOfYear > 252 then
		intWeekToAdd = 13
elseif intDayOfYear > 231 then
		intWeekToAdd = 12
elseif intDayOfYear > 210 then
		intWeekToAdd = 11
elseif intDayOfYear > 189 then
		intWeekToAdd = 10
elseif intDayOfYear > 168 then
		intWeekToAdd = 9
elseif intDayOfYear > 147 then
		intWeekToAdd = 8
elseif intDayOfYear > 126 then
		intWeekToAdd = 7
elseif intDayOfYear > 105 then
		intWeekToAdd = 6
elseif intDayOfYear > 84 then
		intWeekToAdd = 5
elseif intDayOfYear > 63 then
		intWeekToAdd = 4
elseif intDayOfYear > 42 then
		intWeekToAdd = 3
elseif intDayOfYear > 21 then
		intWeekToAdd = 2
elseif intDayOfYear < 22 then
		intWeekToAdd = 1
else
		response.write "Oh No!<br>"
end if
response.write(intDayOfYear&"<br>"&intWeekToAdd)


To make it a bit more efficient, I reversed the order (and now thinking about it I could have left it the same order but reversed the > to <. oh well) and removed the extra check. So it falls through until it hits the elseif it matches.




dzirkelb1 -> RE: Select Case statement not working correctly (6/18/2009 15:10:02)

quote:

if intDayOfYear > 336 then
intWeekToAdd = 17
elseif intDayOfYear > 315 then
intWeekToAdd = 16
elseif intDayOfYear > 294 then
intWeekToAdd = 15
elseif intDayOfYear > 273 then
intWeekToAdd = 14
elseif intDayOfYear > 252 then
intWeekToAdd = 13
elseif intDayOfYear > 231 then
intWeekToAdd = 12
elseif intDayOfYear > 210 then
intWeekToAdd = 11
elseif intDayOfYear > 189 then
intWeekToAdd = 10
elseif intDayOfYear > 168 then
intWeekToAdd = 9
elseif intDayOfYear > 147 then
intWeekToAdd = 8
elseif intDayOfYear > 126 then
intWeekToAdd = 7
elseif intDayOfYear > 105 then
intWeekToAdd = 6
elseif intDayOfYear > 84 then
intWeekToAdd = 5
elseif intDayOfYear > 63 then
intWeekToAdd = 4
elseif intDayOfYear > 42 then
intWeekToAdd = 3
elseif intDayOfYear > 21 then
intWeekToAdd = 2
elseif intDayOfYear < 22 then
intWeekToAdd = 1
else
response.write "Oh No!<br>"
end if


That works out well, thanks!




Page: [1]

Valid CSS!




Forum Software © ASPPlayground.NET Advanced Edition 2.4.5 ANSI
0.0625