visto che una matrice bidimensionale era noiosa da usare in questo caso (a meno di non sapere a priori il numero di righe che avrebbe potuto contenere) ho usato un dictionary:
codice:
dim record_count
record_count=0
dim elementi
set elementi=server.CreateObject("Scripting.dictionary")
while not rs.eof
temp_arr=split(rs("box_app"),",")
for each valore in temp_arr
if elementi.Exists(trim(valore)) then
elementi.Item(trim(valore))=elementi.Item(trim(valore))+1
else
elementi.add trim(valore),1
end if
next
record_count=record_count+1
rs.movenext
wend
response.Write("valori in comune
")
chiavi=elementi.Keys
for i=0 to elementi.count-1
if elementi.Item(chiavi(i))=record_count then response.Write chiavi(i) & "
"
next
dovrebbe funzionare...io l'ho testato con un array usando questo codice:
codice:
rs=array("1,2,3","2,3,4","2,3","2,3,5")
dim record_count
record_count=0
dim elementi
set elementi=server.CreateObject("Scripting.dictionary")
for each box_app in rs
temp_arr=split(box_app,",")
for each valore in temp_arr
if elementi.Exists(trim(valore)) then
elementi.Item(trim(valore))=elementi.Item(trim(valore))+1
else
elementi.add trim(valore),1
end if
next
record_count=record_count+1
next
response.Write("valori in comune
")
chiavi=elementi.Keys
for i=0 to elementi.count-1
if elementi.Item(chiavi(i))=record_count then response.Write chiavi(i) & "
"
next
e mi restituisce a ragione 2 e 3 (che sono gli unici presenti in tutti gli elementi)
la spiegazione?
codice:
- creo un dizionario che conterrà come chiavi i valori del recordset e come valore il numero di volte che si ripetono
- scorro il recordset
- splitto il campo per ottenere i singoli valori
- per ogni valore ottenuto:
- controllo se c'è una chiave pari al valore passato
- se è presente, incremento il suo valore di 1
- altrimenti la aggiungo inizializzando il valore a 1
- itero
se poi optime ci delizia con una matrice bidimensionale, ok