I did a little refactoring of your code to simplify things a bit. Perhaps these changes will fix the problem. One thing to do when you have to test strings is to force it to a case so you won't have to worry about the case of the source data.
Dim strUsername, strSQL, strLogUser,strVeg,objRS,varRotation,VarVeg
Dim sRotationGroup
strSQL="SELECT veg_name FROM veg_root vr JOIN members m ON vr.username=m.username WHERE m.id=" & Cint(session("userid")) & ";"
objRS.Open strSQL, objConn, adOpenStatic, adLockReadOnly, adCmdText
If Not (objRS.BOF And objRS.EOF) Then
While Not objRS.EOF
Select Case LCase(objRS.Fields("veg_name"))
Case "artichokes","beetroot","carrots","parsnips","pota to"
sRotationGroup = "Root"
Case "brocolli","brusselsprouts","cabbage","cauliflower ","kale","swede"
sRotationGroup = "Brassica"
Case "broadbeans","celery","leek","onions","peas","spin ich","sweetcorn","tomotoes"
sRotationGroup = "Other"
End Select
Response.Write "*"
Response.Write objRS.Fields("veg_name")
Response.Write " "
Response.Write "-crop rotation group: "
Response.Write sRotationGroup
Response.Write "<br>"
objRS.MoveNext
End While
objRS.close
End If
Set objRS = Nothing
Peter
-------------------------
Work smarter, not harder