prova questa cosa:
codice:
str="Oggetto1-Parte1-Azione1-Parte4-Azione2-Oggetto5-Oggetto9-Parte2"
dim oggetto,parte,azione,arr_split,sql,stopper,voltaogg,voltapar,voltazio,h,i,f
oggetto="oggetto"
parte="parte"
azione="azione"
arr_split=split(str,"-")
sql="select * from tabella where"
voltaogg=0
stopper=false
for i=0 to ubound(arr_split)
if ucase(left(arr_split(i),len(oggetto)))=ucase(oggetto) then
if voltaogg>0 then sql=sql & " or"
voltaogg=voltaogg+1
sql=sql & " oggetto=" & arr_split(i)
'cerco tutte le parti
h=i+1
voltapar=0
stopper=false
while (h<=ubound(arr_split)) and stopper=false
if ucase(left(arr_split(h),len(oggetto)))=ucase(oggetto) then
stopper=true
if voltapar>0 then sql=sql & ")": voltapar=0
end if
if ucase(left(arr_split(h),len(parte)))=ucase(parte) then
if voltapar=0 then sql=sql & " and ("
if voltapar>0 then sql=sql & " or "
sql=sql & "parte=" & arr_split(h)
voltapar=voltapar+1
if h=ubound(arr_split) and voltapar>0 then sql=sql & ")"
end if
h=h+1
wend
'cerco tutte le azioni
f=i+1
voltazio=0
stopper=false
while (f<=ubound(arr_split)) and stopper=false
if ucase(left(arr_split(f),len(oggetto)))=ucase(oggetto) then
stopper=true
if voltazio>0 then sql=sql & ")":voltazio=0
end if
if ucase(left(arr_split(f),len(azione)))=ucase(azione) then
if voltazio=0 then sql=sql & " and ("
if voltazio>0 then sql=sql & " or "
sql=sql & "azione=" & arr_split(f)
voltazio=voltazio+1
if f=ubound(arr_split) and voltazio>0 then sql=sql & ")"
end if
f=f+1
wend
end if
next
response.write sql