Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Cancella Padre e eventuali figli

    Ciao a tutti

    Ho fatto un menu ad albero con 4 sottolivelli dinamico, ora mi si pone il problema di quando vado a cancellare una voce che ha dei figli ... potrei non cancellare gli eventuali figli che non verranno mai + ripresi ... ma non mi piace lasciare dati inutili nel DB per cui vorrei cancellare anche gli eventuali figli.

    La tabella del DB è:

    IDMenu----IDPadre----Voce

    (il menu può avere fini a 4 sottolivelli)

    Io ho pensato di fare 4 pagine dove ad ogni passaggio mi controlla se la tal voce ha un figlio e la cancella Ma non riesco nemmeno così perchè...la voce di primo livello è sempre una sola mentre le altre possono essere infinite tipo:


    ---Voce di primo livello
    ---------voce1
    ----------------voce11
    ----------------voce22

    ---------voce2

    ---------voce3

    qualcuno sa darmi qualche dritta su come fare un detele furbo su questa struttura?

  2. #2
    codice:
    function deleteChilds(cn,valueID)
    loopFunction = false
    s = "SELECT IDMenu FROM Tabella WHERE IDPadre = " & valueID
    set r = cn.execute(s)
    if not r.eof then
    loopFunction = true
    tempID = r("IDMenu")
    end if
    r.close
    set r = nothing
    cn.execute("DELETE * FROM Tabella WHERE IDMenu = " & valueID
    if loopFunction then deleteChilds cn, tempID
    end function
    
    id = request.form("id")
    set conn = ...
    conn.open ...
    
    ...
    if len(id) > 0 and isNumeric(id) then deleteChilds conn, id
    
    ...
    
    conn.close
    set conn = nothing

  3. #3
    Grazie Mems
    La provo subito subito

  4. #4
    Mems io l'ho così scritta:

    function deleteChilds(cn,valueID)
    loopFunction = false
    s = "SELECT IDMenu FROM Menu WHERE IDPadre = " & valueID
    set Menu = cn.execute(s)
    if not Menu.eof then
    loopFunction = true
    tempID = Menu("IDMenu")
    end if
    Menu.close
    set Menu = nothing
    cn.execute("DELETE * FROM Menu WHERE IDMenu = ") & valueID
    if loopFunction then deleteChilds cn, tempID
    end function

    id = request.form("id")
    set conn = cn.ConnectionString = "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("../Db/db_sinergico.mdb")
    conn.open

    if len(id) > 0 and isNumeric(id) then deleteChilds conn, id

    conn.close
    set conn = nothing

    :master:

    errore :
    Necessario oggetto: 'Falso'

  5. #5
    valueID = request.querystring ("IDMenu")

  6. #6
    Hai sballato tutto.

  7. #7
    azz e come posso risistemare?

  8. #8
    Allora, la funzione non la modificare!
    A questa pagina va passata via FORM con metodo POST l'ID della voce da eliminare. La funzione a quel punto elimina tutti figli, nipoti e pronipoti da quel livello in giù.
    codice:
    <%
    function deleteChilds(cn,valueID) 
    
    loopFunction = false 
    s = "SELECT IDMenu FROM Menu WHERE IDPadre = " & valueID 
    set r = cn.execute(s) 
    	if not r.eof then 
    	tempID = ""
    	loopFunction = true
    		do until r.eof
    		tempID = tempID & r("IDMenu") &","
    		r.moveNext
    		loop
    	end if 
    r.close 
    set r = nothing 
    
    cn.execute("DELETE * FROM Menu WHERE IDMenu = " & valueID)
    
    	if loopFunction then 
    	tempID = left(tempID,len(tempID)-1)
    	tempID = split(tempID,",")
    		for i = 0 to uBound(tempID)
    		deleteChilds cn, tempID(i)
    		next
    	end if
     
    end function 
    
    id = request.form("id") 
    set conn = server.createObject("ADODB.Connection") 
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(("../Db/db_sinergico.mdb") 
    
    if len(id) > 0 and isNumeric(id) then deleteChilds conn, id 
    
    conn.close 
    set conn = nothing 
    %>

  9. #9
    Perfetto Mems grazie

  10. #10
    Riprendo questo topic ho fatto la pagina del form:

    <form action="menu_del2.asp" name="form" method="post">
    <input name="id" type="hidden" value="<%=(id)%>">
    <input type="submit" value="Si">
    </form>


    al quale passo l'id da una pagina precedente : poi spedisco tutto a questa pagina :

    <%
    function deleteChilds(cn,valueID)

    loopFunction = false
    s = "SELECT IDMenu FROM Menu WHERE IDPadre = " & valueID
    set r = cn.execute(s)
    if not r.eof then
    tempID = ""
    loopFunction = true
    do until r.eof
    tempID = tempID & r("IDMenu") &","
    r.moveNext
    loop
    end if
    r.close
    set r = nothing

    cn.execute("DELETE * FROM Menu WHERE IDMenu = " & valueID)

    if loopFunction then
    tempID = left(tempID,len(tempID)-1)
    tempID = split(tempID,",")
    for i = 0 to uBound(tempID)
    deleteChilds cn, tempID(i)
    next
    end if

    end function

    id = request.form("id")
    set conn = server.createObject("ADODB.Connection")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(("../Db/db.mdb") )

    if len(id) > 0 and isNumeric(id) then deleteChilds conn, id

    conn.close
    set conn = nothing


    response.Redirect("pagina")
    %>


    la prima volta ha funzionato ora non funziona + mi fa il response.redirect corretto ma non camcella nulla e non mi da nessun errore

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.