Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    7

    Ordinare alfabeticamente con lettere

    Ciao a tutti!
    Premetto che so poco di ASP...ma ci provo.
    Ho una pagina che dovrebbe restituire a video le società presenti nel database; a me piacerebbe che fossero in ordine alfabetico (...e fin qui ok) ma che si presentassero così per es.:

    A
    Albergo xyz
    Albergo www

    B
    Barca
    Bell

    ecc...

    Praticamente con le lettere dell'alfabeto iniziali.

    Uso il seguente codice:
    codice:
    <%@ Language=VBScript %>
    <%
       Option Explicit
       Response.ExpiresAbsolute=Now()
    %>
    
    <H1>Le Societ&agrave</H1>
    
    
    
    <%
       Dim conn
       Dim rs
       Dim sSql
       
       'Imposto la connessione
       Set conn = Server.CreateObject("ADODB.Connection")
       conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + Server.MapPath("/mdb-database/societa.mdb")
       
       'Imposto la stringa SQL di selezione dati Ordinando per società
       sSql = "SELECT * FROM societa ORDER BY soc"
       
       'Creo e apro il Set di Record
       Set rs = Server.CreateObject("ADODB.Recordset")
       rs.Open sSql, conn, 3, 3
    %>
       <%
          'Controllo se non c'e' nessun dato (EOF=End Of File)
          If rs.EOF=True Then
       %>
       
          Nessun record trovato
       
       <%
          Else
             Do Until rs.EOF
       %>
         		
            " onclick="return GB_show('<%=rs.Fields("soc").Value%>', '/soc/stampa.asp?id=<%=rs.Fields("id").Value%>', 550, 550)"><%=rs.Fields("soc").Value%> 
    
          
       <%
                rs.MoveNext 
             Loop
          End If
          
          'Chiudo il recordset e libero la memoria
          rs.Close
          Set rs = Nothing
          'Chiudo la connessione al database e libero la memoria
          conn.Close 
          Set conn = Nothing
       %>
    Ho provato a mettere anche questo codice:
    codice:
    <%
    'Cerco di mettere in ordine alfabetico
    Dim ThisLetter, TestLetter, TestName
    ThisLetter = ""
    %>
    <%
    'Start of Repeat Region 
    TestName = rs.fields.Item("soc").value
    TestLetter = Left(TestName,1)
    
    If ThisLetter <> TestLetter then
    response.write ("
    
    ") & TestLetter
    End if
    Response.Write ("
    ") ' volendo posso rimettere il nome della società (& TestName)
    
    'End of Repeat Region
    %>
    Ma per ogni record mi mette una lettera...

    Potreste per cortesia aiutarmi.

    Grazie mille!

  2. #2
    il ccheck dell'iniziale lo devi fare *dentro* al ciclo di stampa...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    7
    Scusa la mia ignoranza...ma potresti spiegare come ad un bimbo di 3 anni

  4. #4
    un bimbo di 3 anni non capirebbe.... del resto un bimbo di tre anni non avrebbe potuto scrivere quel codice... riesci a individuare il ciclo do...loop di stampa (a video) del recordset?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    7
    Mi fai sentire come quando ero alla lavagna col prof. alle spalle

    Intendi questo ?

  6. #6
    brava! *dentro* al ciclo metti la logica dell'iniziale

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    7
    Ciao Optime, io avrei fatto così:
    codice:
    <%
          Else
             Do Until rs.EOF
       %>
     <div class="elenco">  
    <%
    'Cerco di mettere in ordine alfabetico
    Dim ThisLetter, TestLetter, TestName
    ThisLetter = ""
    %>
    <%
    'Start of Repeat Region 
    TestName = rs.fields.Item("soc").value
    TestLetter = Left(TestName,1)
    
    If ThisLetter <> TestLetter then
    response.write ("
    
    ") & TestLetter
    ThisLetter = TestLetter
    End if
    Response.Write ("
    ") ' volendo posso rimettere il nome della società (& TestName)
    
    'End of Repeat Region
    %>
    </div> 
       <div class="societa">
         		
            " onclick="return GB_show('<%=rs.Fields("soc").Value%>', '/soc/stampa.asp?id=<%=rs.Fields("id").Value%>', 550, 550)"><%=rs.Fields("soc").Value%> 
            </div>
            	
    
          
       <%
                rs.MoveNext 
             Loop
          End If
    Ma a video, per ogni record, mi mette una lettera iniziale . E' possibile metterne una sola, e poi i record di quella lettera?

    Scusa la mia ignoranza e se approfitto della tua pazienza!

  8. #8
    corretto! azzeri la variabile che contiene l'iniziale ad ogni giro... *quella* parte lì va fuori dal ciclo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.