• Moderatore

    Scusa ma mi sono perso...

    Non stiamo parlando di un db ma di un testo? La provenienza di questo testo non è quindi oggetto della domanda?

    Allora il testo che hai a disposizione è contenuto in una variabile che si chiama NOME, visto che il contenuto è separato da virgola (,) puoi fare una split del testo ottenendo così un array, rimuovere l'elemento interessato, tenendo presente che l'array ha base 0 normalmente, ed infine eseguire una join dei valori restanti nella variabile di partenza o altra variabile dichiarata all'occorrenza...

    E' questo che devi fare?


  • User

    Si si è questo quello che devo fare! Pero il testo da eliminare può variare, diciamo che lo recupero da una request.querystring e devo cancellare contemporaneamente da 2 campi allo stesso punto. Tipo la terza voce separata da virgola!
    Grazie


  • Moderatore

    Allora ti consiglio di usare la Split, funzione descritta in questa pagina: Split
    Mentre scorri l'array ricostruisci il testo aggiungendo la virgola (,) e conti le ricorsioni, quando arrivi alla terza la salti e prosegui con il resto.

    Lo stesso fai con l'altro parametro. Magari puoi costruire una funzione che lo fa prendendo in carico il parametro da scorrere e l'indice da saltare.


  • User

    Grazie. Potresti farmi un esempio pratico? Non saprei come partire. Grazie


  • Moderatore

    Dovrebbe essere qualcosa di simile

    
    Function DeleteFromArray(text,index)
    Dim r As String
    Dim i As Int[INDENT]a=Split(text, ",")
    i=0
    for each x in a
    [/INDENT]
    [INDENT=2]If i <> index Then[/INDENT]
    [INDENT=3]r = r & x & ","
    [/INDENT]
    [INDENT=2]End If
    i = i + 1[/INDENT]
    [INDENT]next
    DeleteFromArray = r[/INDENT]
    End Function
    
    

    Non ho controllato la sintassi, vbScript non lo uso più da anni :bho: e non me lo ricordo più, faccio anche un po' confusione con VB

    Spero possa aiutarti comunque


  • User

    Grazie lo proverò anche sono ho capito bene come posso eliminare da 2 o più campi contemporaneamente il valore (diciamo il terzo per esempio) e implementarlo al mio db access. Grazie e scusami ma non mi + chiara proprio questa parte.
    G.


  • User

    Nessun aiuto?


  • Moderatore

    Scusa ma non ti seguo nuovamente, i dati arrivano dal DB o dal QueryString? Se arrivano dal DB come mai hai elementi separati da virgola?

    Comunque per eseguire l'operazione di cancellazione dell'elemento dall'elenco devi "chiamare" due volte DeleteFromArray passando prima i nomi e l'indice da eliminare e subito dopo i numeri e l'indice, indice che dovrà essere lo stesso di prima...


  • User

    Allora i dati arrivano dal querystring e devo cancellarli dal db. Grazie


  • Moderatore

    Continua a non essermi chiaro, che relazione c'è tra i dati del QueryString e quelli nel DB, come fai ad essere sicuro che il dato in una determinata posizione corrisponda a quella del DB?


  • User

    La relazione che cè è il NOME che è univoco pertanto recuperando dal querystring il NOME di conseguenza in base alla posizione del nome si trova la posizione del formato! Ed effettuare la cancellazione d entrambi!


  • Moderatore

    Quindi fammi capire se ho capito:

    Nel QueryString hai un elenco di nomi separato da virgola!
    Sai anche in quale posizione si trova il nome da eliminare, ma non qual'è e devi quindi trovarlo!

    Ecco come:

    
    Function SearchFromArray(text,index)
    Dim i As Int
    [INDENT]a=Split(text, ",")[/INDENT]
    [INDENT]i=0[/INDENT]
    [INDENT]for each x in a[/INDENT]
    [INDENT=2]If i = index Then[/INDENT]
    [INDENT=3]SearchFromArray = x[/INDENT]
    [INDENT=2]End If[/INDENT]
    [INDENT=2]i = i + 1[/INDENT]
    [INDENT]next[/INDENT]
    End Function
    
    

    Con la stessa funzione puoi anche trovare il FORMATO, passando il testo contenente i formati separati da virgola.

    A questo punto però devi eliminarli dal DB e per questo devi utilizzare SQL come nella mia prima risposta...


  • User

    In pratica ricevo un solo valore, dovrei fare tipo così per cancellare i 2 valori presenti alla stessa posizione nel campo db, non mi è chiaro questo passaggio:

    
    **nome = request.querystring("file")
    formato = request.querystring("formato")
    
    Function SearchFromArray(nome,index)
    Dim i As Int
    a=Split(nome, ",")
    i=0
    for each x in a
    If i = index Then
    SearchFromArray = x
    End If
    i = i + 1
    next
    End Function
    ****
    Function SearchFromArray(formato,index)
    Dim i As Int
    a=Split(formato, ",")
    i=0
    for each x in a
    If i = index Then
    SearchFromArray = x
    End If
    i = i + 1
    next
    End Function**
    
    

    Poi come faccio ad eliminarlo dalla query sql?
    Ho db access?
    Grazie 1000 per l'aiuto che mi stai dando.
    G.


  • User

    Ho provato a fare questo!

    
    nome = request.querystring("file")
    
    function SearchFromArray(nome,index)
    
    a=Split(nome, ",")
    i=0
    for each x in a
    If i = index Then
    SearchFromArray = x
    End If
    i = i + 1
    
    sql = "DELETE * FROM ordini WHERE foto = " & x(i)
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    
    next
    End Function
    
    
    

    Almeno per eliminare un solo valore, ma io devo eliminare + valori collegati tra loro (il NOME e il FORMATO di riferimento)
    Ma non elimina nulla.
    Dove sbaglio?
    Aiutatemi, grazie
    G.


  • User

    Nessun aiuto???