Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Pubblicare solo i record con 1 solo campo diverso

    Salve a tutti. Ho un piccolo problema nella visualizzazione di record di un database Access. La pagina pubblica i "movimenti" dei camion di un' azienda di trasporti. Il primo campo è "targa". Il cliente inserisce i dati relativi ai movimenti dei camion, ovviamente anche più volte per uno stesso camion se, magari il giorno dopo, quel camion fa un altro "movimento". Ora vorrebbe, oltre alla pagina che pubblica TUTTI i record, quindi anche più volte la stessa targa, anche un' altra pagina che pubblichi per ogni targa SOLO l'ultimo movimento.
    Il codice della pagina che pubblica TUTTI i record (quindi anche più volte la stessa targa) è questo:

    <%
    id = request("id")
    Set Conn= Server.CreateObject("Adodb.connection")
    Conn.Open "provider=microsoft.jet.oledb.4.0; data source="& Server.MapPath("/mdb-database/posizione.mdb")
    sql = "SELECT * FROM tbl_authors ORDER BY data DESC"
    set rs = conn.execute(sql)
    %>
    <%
    While NOT rs.EOF
    %>

    <% Response.Write("<tr>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("targa")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("datacarico")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("loccarico")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("datascarico")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("locscarico")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("autista")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("posmezzo")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("poslibretto")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("infovarie")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("autore")%><% Response.Write("</font></td>")%>
    <% Response.Write("<td align=""left""> <font face=""Tahoma"" size=""1"">")%><%= rs("data")%><% Response.Write("</font></td>")%>
    <% Response.Write("</tr>")%>

    <%
    rs.MoveNext
    Wend
    %>
    <%
    rs.close
    set rs = nothing
    conn.close
    set conn = nothing
    %>

    Ora probabilmente per pubblicare solo i record che hanno targa diversa (e scegliendo per le targhe "duplicate" solo l' ultimo viaggio, in base alla data di inserimento "data") dovrò modificare il codice:

    sql = "SELECT * FROM tbl_authors ORDER BY data DESC"

    ma come? Con il DISTINCT non funziona perchè se lo riferisco solo a "targa" poi non legge gli altri campi, se lo riferisco a tutti i campi me li pubblica comunaue tutti, basta che sia differente anche un solo altro campo...

    Aspetto risposta e ringrazio in anticipo.
    Paolo

  2. #2
    Ho provato con:

    sql = ("SELECT targa, datacarico, loccarico, datascarico, locscarico, autista, posmezzo, poslibretto, infovarie, autore, data, COUNT(*) FROM tbl_authors GROUP BY targa, datacarico, loccarico, datascarico, locscarico, autista, posmezzo, poslibretto, infovarie, autore, data Having count(*) > 1")

    ma così non me ne pubblica nessuno---

  3. #3
    codice:
    sql = "SELECT DISTINCT(campo1), campo2, campo3 FROM tabella1 GROUP BY campo1, campo2, campo3 ORDER BY campo1"

  4. #4
    Innanzitutto ti ringrazio per la risposta. Però ho provato la tua soluzione e non mi elimina i record con il campo "targa" uguale.

    Ho fatto così:

    sql=("SELECT DISTINCT(targa), datacarico, loccarico, datascarico, locscarico, autista, posmezzo, poslibretto, infovarie, autore, data FROM tbl_authors ORDER BY targa ASC")

    ma adesso mi ripropone più volte la stessa targa.

  5. #5
    Ti fai un'altra pagina alla quale passi la targa e ti restituisce l'ultimo movimento.
    codice:
    targa = request.form("targa")
    sql = "SELECT TOP 1 * FROM tabella1 WHERE campoTarga = '" & targa & "' ORDER BY campoData ASC"

  6. #6
    Probabilmente non ho capito bene. Se faccio come mi dici:
    codice:
    targa = request.form("targa")
    sql = "SELECT TOP 1 * FROM tabella1 WHERE campoTarga = '" & targa & "' ORDER BY campoData ASC"
    non ottengo una pagina che mi restituise SOLO 1 record? Io avrei bosogno di una pagina che, in definitiva, legge il database e mi pubblica tutti i record MA, quando trova più record in cui il campo "targa" ha il medesimo valore (lo stesso numero di targa), sceglie tra irecord con targhe uguali quello con la data di inserimento più recente scartando gli altri. E, naturalmente, mi pubblichi tutti gli altri record con targhe NON uguali. Cioè in pratica legge, ad esempio, la targa AA12345, vede che non ci sono recrod con la stessa targa e va avanti; poi incontra la targa BB12345, vede che ci sono altri due record con la medesima targa BB12345, sceglie tra i 3 record con targa BB12345 quello con data di inserimento più recente e va avanti, pubblicando tutti gli altri, sempre con lo stesso meccanismo di selezione tra record con targa uguale.
    Sono stato troppo confusionario nella spiegazione?

  7. #7
    Non ci sei più, eh? Bene, grazie per ora, magari quando ti ricolleghi mi rispondi all' ultimo quesito.
    Grazie ancora.

  8. #8
    Al momento è la soluzione migliore che riesco ad ottenere:
    codice:
    <%
    set conn = server.createObject("ADODB.Connection")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& server.mapPath("\db\db.mdb")
    
    sql = "SELECT DISTINCT(targa)" &_			
    		  "FROM tbl_authors " &_		  		  
    		  "GROUP BY targa " &_
    		  "ORDER BY targa"
    				 
    
    set rs = conn.execute(sql)
    
    	if not rs.eof then
    		
    		do until rs.eof
    
    		response.write rs("targa") & " "
    		
    			sql2 = "SELECT * FROM tbl_authors WHERE targa = '" & rs("targa") & "' ORDER BY data DESC"
    			
    				set rs2 = conn.execute(sql2)
    				
    					if not rs.eof then
    						response.write rs2("data") & "
    "
    					end if
    					
    				rs2.close
    				set rs2 = nothing
    
    		rs.moveNext
    
    		loop
    		
    	end if
    
    rs.close
    set rs = nothing
    
    conn.close
    Set conn = nothing
    %>

  9. #9
    Mille grazie. Ci provo subito e ti faccio sapere.

  10. #10
    Piccola correzione:
    codice:
                                                       set rs2 = conn.execute(sql2)
    				
    					if not rs2.eof then
    						response.write rs2("data") & "
    "
    					end if
    					
    				rs2.close
    				set rs2 = nothing
    La if va con rs2 e non con rs.

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.