[ASP.Net] Non elencare nella select i duplicati dallo split

Discussione in 'Classic ASP' iniziata da djjunior, 12 Aprile 2017.

  1. djjunior

    djjunior Utente Attivo

    Registrato:
    24 Luglio 2004
    Messaggi:
    66
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Ciao non so come evitare la duplicazione dei risultati dallo split, premetto che lo script funziona
    Codice:
    <%
    loca = request.querystring("loc")
    
    sql = "SELECT DISTINCT localita FROM offerte WHERE tipo = '" & request.querystring("mod") & "' GROUP BY localita"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, Conn, 3
    
    if rs.eof then
    else
    %>
    <td >
    <select size="1" name="loc" onchange='this.form.submit()'>
    
    <%
    rs.MoveFirst 
    Do While Not rs.EOF
    
    controllo = rs.fields("localita")
    
    arryControllo = Split(Controllo, ", ") 
    
    For i=0 to UBound(arryControllo)
    
    stringa = Trim(arryControllo(i))
    
    %>
    
    <option value="<%=stringa%>"<%if loca = "" & stringa & "" then%>selected="selected"<%end if%> ><%=stringa%></option>
    <%
    Next
    
    rs.MoveNext
    Loop
    rs.Close
    set rs = Nothing
    end if
    %>
    
    Grazie
     
  2. djjunior

    djjunior Utente Attivo

    Registrato:
    24 Luglio 2004
    Messaggi:
    66
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Ho sbagliato sezione chiedo al moderato di spostare questo post in ASP CLASSIC, grazie
     
  3. djjunior

    djjunior Utente Attivo

    Registrato:
    24 Luglio 2004
    Messaggi:
    66
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Nessun aiuto?
     
  4. Paolo69

    Paolo69 Moderatore Membro dello Staff MOD

    Registrato:
    18 Febbraio 2010
    Messaggi:
    484
    Mi Piace Ricevuti:
    12
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Administrator
    Località:
    Italy
    Home Page:
    perchè devi splittare la variabile controllo, qual'è il suo valore originario?
     
  5. djjunior

    djjunior Utente Attivo

    Registrato:
    24 Luglio 2004
    Messaggi:
    66
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    La devo splittare perchè il campo localitas contiene nel campo varie località con virgola, tipo:
    MILANO, ROMA, FIRENZE
    Infatti così funziona, ma purtroppo ho il problema dei duplicati
     
  6. djjunior

    djjunior Utente Attivo

    Registrato:
    24 Luglio 2004
    Messaggi:
    66
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Nessun aiuto?
     
  7. Paolo69

    Paolo69 Moderatore Membro dello Staff MOD

    Registrato:
    18 Febbraio 2010
    Messaggi:
    484
    Mi Piace Ricevuti:
    12
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Administrator
    Località:
    Italy
    Home Page:
    Curiosità, ma all'interno del DB trovi nel campo località trovi:

    LOCALITA
    1 MILANO
    2 ROMA
    3 PALERMO
    4 ANCONA

    oppure:

    LOCALITA
    1 MILANO,ROMA,PALERMO,ANCONA...

    così emulo il DB e faccio qualche prova..
     
  8. djjunior

    djjunior Utente Attivo

    Registrato:
    24 Luglio 2004
    Messaggi:
    66
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    No trovi in una riga tutte le località cioè:
    1 Milano, Parma, Roma
    2 Roma, Perugia, Napoli
    e così, da premettere che ogni riga può avere le stesse località come ho indicato ieri.
    grazie
     
  9. Paolo69

    Paolo69 Moderatore Membro dello Staff MOD

    Registrato:
    18 Febbraio 2010
    Messaggi:
    484
    Mi Piace Ricevuti:
    12
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Administrator
    Località:
    Italy
    Home Page:
    ...sinceramente non so come eliminare due informazioni simili in un record dopo averli splittati.

    in teoria, ma non impossibile, dovresti splittare il record ed inserirlo in una tabella temporanea, con una query "DISTINCT" estrapolare solo i valori non duplicati ed elencarli... successivamente eliminare i valori dalla tabella temporanea...

    volendo, potresti creare una tabella correlata al record con i campi già splittati...

    lavorando di fantasia si può fare...
     
  10. djjunior

    djjunior Utente Attivo

    Registrato:
    24 Luglio 2004
    Messaggi:
    66
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    Grazie Paolo69, ma mi risulta alquanto difficile, mi hanno consigliato questo script al posto dello split:
    Codice:
    Function SplittaDistinct(str,sep)
        dim strx, sepx, arr, i, dic
        set dic=Server.CreateObject("Scripting.Dictionary")
        arr = Split(str,sep)
        strx=""
        sepx=""
        for i=LBound(arr) to UBound(arr)
            if not dic.Exists(arr(i)) then
                strx=strx & sepx & arr(i)
                dic.Add arr(i),true
                sepx=sep
            end if
        next
        SplittaDistinct = Split(strx,sep)
    End Function
    
    Ma non saprei come adattarlo al mio script, puoi darmi una mano, grazie 1000
     
Sto caricando...

Condividi questa Pagina