Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585

    Delete file con if condition

    Ciao a Tutti,

    ho una pagina index.asp,
    con una form avente menu' a tendina (quindi delle Select)
    e 28 pulsanti Load File coi quali richiamare piu' files;
    c' e' poi un pulsante Save,
    che quando uno lo schiaccia fa eseguire la seguente pagina asp a cui passo i valori
    sia delle opzioni selezionate dai vari menu' a tendina,
    sia i files selezionati coi 28 pulsanti.

    Questo e' tutto il codice che funziona abbastanza bene, tranne che nel caso
    che spiego sotto ...




    <%
    Dim objFSO, objFolder, objStartFolder, colFiles, objFile, prefix
    Dim c_proj, c_rev
    Dim c_att(28), c_file(28), file(28), i
    '
    c_proj = Request("c_proj")
    ' il valore di c_proj che viene passato e' un numero, ad es. 2013043
    c_rev = Request("c_rev")
    ' il valore di c_rev che viene passato e' un numero, ad es. 00
    For i = 1 to 28
    c_att(i) = Request("c_att"&i)
    c_file(i) = Request("c_file"&i)
    Next
    '
    ' c_att(1) ad es., e' il valore passato dalla scelta di una option di select: puo' essere
    ' N/A, Error, Attach.
    '
    ' c_file(1) invece raccoglie il path fisico di un file generato dal pulsante Load file
    ' contenuto nella pagina index.asp
    '
    '
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    objStartFolder = "d:\qscan_docs\"&Left(c_proj, 4)&"\"&c_proj&"\"&c_proj&"_custom"
    Set objFolder = objFSO.GetFolder(objStartFolder)
    Set colFiles = objFolder.Files
    '
    '
    For i = 1 to 28
    '
    prefix = c_proj&"_r"&c_rev&"_"&i
    If Len(c_file(i))>0 And c_att(i)="Attach." Then
    Set file(i)=objFSO.GetFile(c_file(i))
    For Each objFile in colFiles
    if InStr(1, objFile.Name, prefix, 1) > 0 then objFile.Delete
    Next
    file(i).Copy "D:\qscan_docs\"&Left(c_proj, 4)&"\"&c_proj&"\"&c_proj&"_custom\"&c_proj&"_r"&c_ rev&"_"&i&"_"&file(i).ShortName, True
    Set file(i) = nothing

    '
    End If
    If Not (c_att(i)="Attach.") Then
    For Each objFile in colFiles
    if InStr(1, objFile.Name, prefix, 1) > 0 then objFile.Delete
    Next
    End If

    '
    Next
    Set colFiles = Nothing : Set objFolder = Nothing : Set objFSO = Nothing
    '
    %>


    Cosa succede:

    - se decido di caricare dei files, benissimo, tutto funziona bene !!

    - se decido in un secondo momento di sostituire i files precedentemente caricati,
    lo posso fare in quanto scelgo dalla pagina index.asp un nuovo percorso
    con il pulsante Load File e dal menu' a tendina l' opzione "Attach.";
    in questo modo, come si evince dal codice sopra ,
    i files vecchi vengono cancellati e copiati quelli nuovi.

    - il problema e' qui':

    se dalla pagina index.asp scelgo l' opzione Error, oppure l' opzione N/A, non mi vengono cancellati i files (vedi colore rosso) ; perche' ?? Ci ho sbattuto la capoccia ma non riesco a capire perche' non vengono cancellati ...

    Grazie mille in anticipo !!!

  2. #2
    per capire dove si ferma, metti qualche response write


    ...

    Response.Write c_att(i) ' <<<<<<<<<<<<<<<<<
    If Not (c_att(i)="Attach.") Then
    For Each objFile in colFiles
    Response.Write objFile.Name ' <<<<<<<<<<<<<<<<<
    Response.Write prefix ' <<<<<<<<<<<<<<<<<
    if InStr(1, objFile.Name, prefix, 1) > 0 then objFile.Delete
    Next
    End If



  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ciao Optime,

    ho seguito il tuo consiglio, ho capito il non-funzionamento ma mi sono accorto che il problema e' complesso ... spero di ricevere aiuto perche' non so piu' come muovermi ...

    Per cancellare i files ho messo il codice in una pagina.asp a parte che funziona ma non so come richiamarla ... spiego:

    Bisogna risalire alla pagina index.asp, in cui nella head ho definito 2 funzioni:

    <head>

    function up_delete() {
    document.FrontPage_Form_cu.action = "cu_delete.asp ?c_proj="+document.getElementById('rec_db').value+ "&c_rev="+document.getElementById('rev_db').va lue+
    "&c_att1="+document.getElementById('attach_1').opt ions[document.getElementById('attach_1').selectedIndex].value+
    "&c_att2="+document.getElementById('attach_2').opt ions[document.getElementById('attach_2').selectedIndex].value+
    ....... "&c_att28="+document.getElementById('attach_28').o ptions[document.getElementById('attach_28').selectedIndex].value+
    "&c_file1="+document.getElementById('file_1').valu e+
    "&c_file2="+document.getElementById('file_2').valu e+
    ..................
    "&c_file28="+document.getElementById('file_28').va lue
    document.FrontPage_Form_cu.submit(); return true;
    }

    function check_r() {
    document.FrontPage_Form_cu.encoding ="multipart/form-data ";
    document.FrontPage_Form_cu.action = "cu_upload.asp ?c_proj="+document.getElementById('rec_db').value+ "&c_rev="+document.getElementById('rev_db').va lue+
    "&c_att1="+document.getElementById('attach_1').opt ions[document.getElementById('attach_1').selectedIndex].value+
    "&c_att2="+document.getElementById('attach_2').opt ions[document.getElementById('attach_2').selectedIndex].value+
    ...... "&c_att28="+document.getElementById('attach_28').o ptions[document.getElementById('attach_28').selectedIndex].value+
    "&c_file1="+document.getElementById('file_1').valu e+
    "&c_file2="+document.getElementById('file_2').valu e+
    ................
    "&c_file28="+document.getElementById('file_28').va lue
    document.FrontPage_Form_cu.submit(); }
    }

    </head>

    <body>
    <form method="POST" name="FrontPage_Form_cu">
    .....
    <select size="1" name="attach_1" id="attach_1">
    <option value="<%=objRS("Status_1")%>" selected><%=objRS("Status_1")%></option>
    <option value=" "> </option>
    <option value="N/A">N/A</option>
    <option value="Error">Error</option>
    <option value="Attach.">Attach.</option>
    </select>


    di select ne ho 28


    <button onClick="check_r()">Save</button>

    <button onClick="up_delete()">Save 2</button>

    </form>

    Se schiaccio il pulsante "Save" posso aggiungere correttamente i files nella mia directory di lavoro ed eventualmente, in un secondo momento, rimpiazzarli con altri di nomi diversi.

    Al pulsante "Save" e' associata la stringa in rosso multipart-form data encoding che precede il lancio della pagina cu_upload.asp il cui codice e' stato postato all' inizio del topic. E fin qui tutto OK !!

    Se schiaccio il pulsante "Save 2" si esegue la pagina cu_delete.asp , ed avviene la cancellazione dei files nella cartella di lavoro a seconda dei valori scelti dall' utente dai 28 menu' a tendina, che sono diversi da "Attach.".
    Fin qui tutto OK !!

    Il problema e' che NON voglio 2 pulsanti per fare cio'; vorrei che con il pulsante "Save" venisse eseguita prima la pagina cu_upload.asp che ha l' encoding multipart e poi la pagina cu_delete.asp ... come fare ???

    Ho provato a mettere nel pulsante Save le 2 cose:

    <button onClick="check_r();up_delete()">Save</button> ma mi esegue solo l' up_delete()...


    Ho provato a mettere dentro la funzione up_delete() in fondo alla funzione check_r() ma non mi esegue up_delete() ...


    *****************

    cu_delete.asp

    <%
    Dim objFSO, objFolder, objStartFolder, colFiles, objFile, prefix
    Dim c_proj, c_rev
    Dim c_att(28), c_file(28), file(28), j
    '
    c_proj = Request("c_proj")
    c_rev = Request("c_rev")
    For j = 1 to 28
    c_att(j) = Request("c_att"&j)
    c_file(j) = Request("c_file"&j)
    Next
    '
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    objStartFolder = "d:\qscan_docs\"&Left(c_proj, 4)&"\"&c_proj&"\"&c_proj&"_custom"
    Set objFolder = objFSO.GetFolder(objStartFolder)
    Set colFiles = objFolder.Files
    '
    For j = 1 to 28
    prefix = c_proj&"_r"&c_rev&"_"&j
    If Not (c_att(j)="Attach.") Then
    For Each objFile in colFiles
    if InStr(1, objFile.Name, prefix, 1) > 0 then objFile.Delete
    Next
    End If
    Next
    Set colFiles = Nothing : Set objFolder = Nothing : Set objFSO = Nothing
    %>

    <html>
    <body background="../images/sfondo_drago.gif">
    <script type="text/javascript">
    window.alert("Record saved 2 !");
    self.close();
    window.close();
    </script>
    </body>
    </html>

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Sono riuscito a risolvere il problema

    nella pagina index.asp ho fatto eseguire, all' apertura della pagina, il codice ASP che corrisponde alla pagina cu_delete.asp che non serve piu' ...

    ******

    index.asp


    <%@ Language=VBScript %>
    <% Option Explicit
    '
    Dim arr_file, colFiles, filist, item, j, objFile, objFolder, objFSO, objStartFolder, prefix
    Dim objConn, objRS, strSQL
    Dim c_act, c_proj, c_rev
    '
    c_act = Request("c_act")
    c_proj = Request("c_proj")
    c_rev = Request("c_rev")
    '
    '
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.ConnectionString = "DSN=3_custom.dsn"
    objConn.Open
    strSQL = "SELECT * FROM t_mrg_cust WHERE Numero = " & c_proj & " AND Activity LIKE '" & c_act & "' AND Cu_Rev LIKE '" & c_rev & "'"
    Set objRS = objConn.Execute(strSQL)
    '
    '
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(Server.MapPath("/aesi_quality/schede_progetto/d_qscan/"&Left(c_proj, 4)&"/"&c_proj&"/"&c_proj&"_custom/")) Then
    objStartFolder = "d:\qscan_docs\"&Left(c_proj, 4)&"\"&c_proj&"\"&c_proj&"_custom"
    Set objFolder = objFSO.GetFolder(objStartFolder)
    Set colFiles = objFolder.Files
    '
    For j = 1 to 28
    prefix = c_proj&"_r"&c_rev&"_"&j&"_"
    If Not objRS("Status_"&j)="Attach." Then
    For Each objFile in colFiles
    if InStr(1, objFile.Name, prefix, 1) > 0 then objFile.Delete
    Next
    End If
    Next
    '
    For Each objFile in colFiles
    filist = filist & "|" & objFile.Name
    Next
    arr_file = split(mid(filist,2),"|")
    Set objFolder = Nothing : Set colFiles = Nothing
    ' For each item in arr_file
    ' Response.Write item & "
    "
    ' Next
    '
    End If
    Set objFSO = nothing
    '
    '
    %>

    <head>
    ...
    <body>

    Quindi, all' apertura della pagina index.asp vengono cancellati files eventuali a seconda dei valori di option selezionati in precedenza e salvati in db... perfetto !!!

  5. #5
    ottimo! grazie per aver condiviso la soluzione

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.