I try to use a select case statement in a loop, but I am faced everytime with the error “Type mismatch error. Expected String, but got Boolean, select case select case SearchItem”
A field in my database contains 2 values in a field separated by a space “ “
so I want to split this field with cell()=split(field.stringvalue,” “) to have a cell(0) and cell(1) with a value.
Then I want to check if the value thru in a big select case statement (which work without embedded in a loop)
So I did first time:
i=0 to ubound(cell)
select case cell(i)
case "item-1”
.
.etc
end select
next
but, I do get the above mentioned error, while cell(i) contains a string
for i=0 to ubound(AllergenenTotal)
cell1()=split(AllergenenTotal(i),",")
cell()=split(cell1(1)," ")
if ubound(cell)>0 then
SearchAllergeen = cell(0)
end if
j=0
do
if j<=ubound(cell) then
SearchAllergeen=cell(j)
else
exit do
end if
select case SearchAllergeen
case "ei"
AllergeenPics.add ei
AllergenenPicsTxt.Add cell(j)
Case "lupine"
AllergeenPics.add lupine
AllergenenPicsTxt.Add cell(j)
case instr(cell(1),"melk")>0
AllergeenPics.add melk
AllergenenPicsTxt.Add cell(j)
case "gluten"
AllergeenPics.add gluten
AllergenenPicsTxt.Add cell(j)
case "gluten"
AllergeenPics.add gluten
AllergenenPicsTxt.Add cell(j)
case "mosterd"
AllergeenPics.add mosterd
AllergenenPicsTxt.Add cell(j)
case "noten"
AllergeenPics.add noten
AllergenenPicsTxt.Add cell(j)
case "pinda"
AllergeenPics.add pindas
AllergenenPicsTxt.Add cell(j)
case "schaaldieren"
if instr(cell(1),"weekdieren")>0 then
AllergeenPics.add weekdieren
AllergenenPicsTxt.Add cell(j)
elseif instr(cell(j),"vis")>0 then
AllergeenPics.add vis
AllergenenPicsTxt.Add cell(j)
else
AllergeenPics.add schaaldieren
AllergenenPicsTxt.Add cell(j)
end if
case "selderij"
AllergeenPics.add selderij
AllergenenPicsTxt.Add cell(j)
case "sesamzaad"
AllergeenPics.add sesamzaad
AllergenenPicsTxt.Add cell(j)
case "soja"
AllergeenPics.add soja
AllergenenPicsTxt.Add cell(j)
case "sulfiet"
AllergeenPics.add sulfiet
AllergenenPicsTxt.Add cell(j)
case "vis"
AllergeenPics.add vis
AllergenenPicsTxt.Add cell(j)
case "weekdieren"
if instr(cell(j),"schaaldieren")>0 then
AllergeenPics.add schaaldieren
AllergenenPicsTxt.Add cell(j)
elseif instr(cell(j),"vis")>0 then
AllergeenPics.add vis
AllergenenPicsTxt.Add cell(j)
else
AllergeenPics.add weekdieren
AllergenenPicsTxt.Add cell(j)
end if
Case "fruit"
AllergeenPics.add allfruit
AllergenenPicsTxt.Add cell(j)
end select
j=j+1
loop
next
Var str As String = "asdfad,dfghdg,etwert,lkjljlkj"
Var cells() As String = str.Split(",")
For i As Integer = cells.FirstIndex to cells.LastIndex
Select Case cells(i)
Case "dfghdg"
System.DebugLog "dfghdg"
Case "asdfasdasdfasdfa"
System.DebugLog "000000000000"
End
Next
System.DebugLog "Ended ok"
App.DoEvents // Print and Quit
Quit
var i,j as integer
var cell(), cell1(),SearchAllergeen as string
dim allergtext() as string = AllergenenPicsTxt()
for i=0 to 14
MyPics = none
Myallergeen(i).Refresh
next
AllergeenPics.RemoveAll
AllergenenPicsTxt.RemoveAll
for i=0 to ubound(AllergenenTotal)
cell1()=split(AllergenenTotal(i),",")
cell()=split(cell1(1)," ")
if ubound(cell)>0 then
SearchAllergeen = cell(0)
end if
j=0
do
if j<=ubound(cell) then
SearchAllergeen=cell(j)
else
exit do
end if
select case SearchAllergeen
case "ei"
AllergeenPics.add ei
AllergenenPicsTxt.Add cell(j)
Case "lupine"
AllergeenPics.add lupine
AllergenenPicsTxt.Add cell(j)
case instr(cell(1),"melk")>0
AllergeenPics.add melk
AllergenenPicsTxt.Add cell(j)
case "gluten"
AllergeenPics.add gluten
AllergenenPicsTxt.Add cell(j)
case "gluten"
AllergeenPics.add gluten
AllergenenPicsTxt.Add cell(j)
case "mosterd"
AllergeenPics.add mosterd
AllergenenPicsTxt.Add cell(j)
case "noten"
AllergeenPics.add noten
AllergenenPicsTxt.Add cell(j)
case "pinda"
AllergeenPics.add pindas
AllergenenPicsTxt.Add cell(j)
case "schaaldieren"
if instr(cell(1),"weekdieren")>0 then
AllergeenPics.add weekdieren
AllergenenPicsTxt.Add cell(j)
elseif instr(cell(j),"vis")>0 then
AllergeenPics.add vis
AllergenenPicsTxt.Add cell(j)
else
AllergeenPics.add schaaldieren
AllergenenPicsTxt.Add cell(j)
end if
case "selderij"
AllergeenPics.add selderij
AllergenenPicsTxt.Add cell(j)
case "sesamzaad"
AllergeenPics.add sesamzaad
AllergenenPicsTxt.Add cell(j)
case "soja"
AllergeenPics.add soja
AllergenenPicsTxt.Add cell(j)
case "sulfiet"
AllergeenPics.add sulfiet
AllergenenPicsTxt.Add cell(j)
case "vis"
AllergeenPics.add vis
AllergenenPicsTxt.Add cell(j)
case "weekdieren"
if instr(cell(j),"schaaldieren")>0 then
AllergeenPics.add schaaldieren
AllergenenPicsTxt.Add cell(j)
elseif instr(cell(j),"vis")>0 then
AllergeenPics.add vis
AllergenenPicsTxt.Add cell(j)
else
AllergeenPics.add weekdieren
AllergenenPicsTxt.Add cell(j)
end if
Case "fruit"
AllergeenPics.add allfruit
AllergenenPicsTxt.Add cell(j)
end select
j=j+1
loop
next
'next
I=ubound(Allergeenpics)
j=ubound(AllergenenPicsTxt)
for i=0 to ubound(AllergeenPics)-1
mypics1 = allergeenpics(i)
MyAllergeen(i).Refresh
next
for j=I+1 to 14
mypics1 = none
Myallergeen(j).Refresh
next
The complete code of this method. MyAllergeen() is an array of small canvas
Actually… this is your problem. When you do a select case on a variable that is a string, the values after each “case” statement must all evaluate to a string. Now… you can do what you want, but it’s a little more work.
You could do
Select Case True
And then make each one of the case statements into a comparison…