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

    Informazione su delete...

    Ciao Ragazzi,

    sto' creando un portale, dove gli utenti possono mandarsi messaggi privati tra di loro, ho impostato il limite massimo di messaggi privati che un'utente puo' contenere, dopo di che vorrei che quando supera il numero di messaggi da me impostati... quelli "obsoleti" vengano cancellati. A livello di logica le sto pensando tutto, ma non riesco a trovare una solouzione.
    Di seguito vi posto il codice che attualmente uso:



    codice:
    <%
    session("userid") = request.QueryString("id")
    
    sql = " SELECT u_msg FROM com_utenti WHERE u_id=" & session("userid")
    set maxmsg = conn.execute(sql)
    recordperpagina = maxmsg("u_msg")
    maxmsg.PageSize = recordperpagina
    maxmsg.close
    set maxmsg = nothing
    
    
    
    sql = " SELECT u_id, u_username, msg_mittente, msg_id, msg_destinatario, msg_titolo, msg_messaggio, msg_orario, msg_letto FROM com_utenti, com_messaggi WHERE com_messaggi.msg_mittente = com_utenti.u_id AND com_messaggi.msg_destinatario = " & session("userid") & " ORDER BY com_messaggi.msg_id DESC"
    
    
    
    
    set listamsg = conn.execute(sql)
    if listamsg.EOF = true then
    nomsg = "Nessun messaggio presente."
    elsefor i = 1 to recordperpagina
    
    
    
    if not listamsg.eof then
    if listamsg("msg_letto") = 1 then
    %>
    <tr bgcolor="#CCCCCC">
    <td width="17"><%= i%></td>
    <td width="53"><input type="checkbox" name="<%= listamsg("msg_id")%>"></td>
    <td width="70">"><%= listamsg("u_username")%></td>
    <td width="182"222"">"><%=  listamsg("msg_titolo")%></td>
    <td width="114"><%= listamsg("msg_orario")%></td>
    </tr>
    <% else %>
    <tr bgcolor="<%= tbsfondo%>">
    <td width="17"><%= i%></td>
    <td width="53"><input type="checkbox"></td>
    <td width="70">"><%=listamsg("u_username")%></td>
    <td width="182">"><%=  listamsg("msg_titolo")%></td>
    <td width="114"><%= listamsg("msg_orario") %></td>
     </tr>
    <%end if
    listamsg.movenext
    end if
    next
    end if
    maxmsg = i
    
    
    
    listamsg.close
    set listamsg = nothing
    %>


    Grazie in anticipo, ragazzi!

  2. #2
    non ottimizzato

    codice:
    DELETE FROM tabella_messaggi 
    WHERE id_messaggio NOT IN (
       SELECT TOP n_quanti_ne_vuoi_tenere id_messaggio FROM tabella_messaggi ORDER BY id_messaggio DESC
       )

  3. #3
    Selezioni gli N più recenti.
    Crei una stringa con gli ID degli N più recenti del tipo
    55, 53, 48, 33, 22
    Poi sta stringa la passi ad una delete del topo
    "DELETE * FROM tabella WHERE campoID NOT IN (" & stringa & ")"

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    39
    Grazie.. ci provo...!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    39
    Sicuramente sbaglio qualcosa...
    errore di sintassi.



    codice:
    sql = " DELETE * FROM com_messaggi WHERE msg_id=" & session("userid") & " NOT IN (SELECT TOP(" & recordperpagina & ") u_id, u_username, msg_mittente, msg_id, msg_destinatario, msg_titolo, msg_messaggio, msg_orario, msg_letto FROM com_utenti, com_messaggi WHERE com_messaggi.msg_mittente = com_utenti.u_id AND com_messaggi.msg_destinatario = " & session("userid") & " ORDER BY com_messaggi.msg_id DESC)"


  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Stampala e postala qui.

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    39
    Originariamente inviato da Roby_72
    Stampala e postala qui.

    Roby


    Ciao Roby,
    ringraziando dio ho risolto mettendo solamente il campo che mi interessava nella subquery (ossia msg_id).

    La query attuale e':


    codice:
    sql = " DELETE * FROM com_messaggi WHERE msg_id NOT IN(SELECT top "& recordperpagina &" FROM com_utenti, com_messaggi WHERE com_messaggi.msg_mittente=com_utenti.u_id AND com_messaggi.msg.destinatario="& session("userid") & " ORDER BY com_messaggi.msg_id DESC"

    In questa maniera tutti i messaggi privati oltre il recordperpagina andranno rimossi automaticamente.

    Un altra domanda, c'e' qualche client utile per fare query su access???




    Volevo ringraziare tutti quelli che mi hanno aiutato, grazie!

  8. #8
    Il modulo query di access.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.