- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Eliminare voce da db
-
Ciao t ringrazio x la tua risposta ma io nn devo cancellare il valore di un campo db access ma cancellare una voce presente in un campo. In un campo denominato NOME ci possono essere + voci che andrebbero successivamente splittate. Quindi intendo cancellare x esempio la terza voce d un campo tipo:
Campo:NOME
Valore:PAOLO, ANNA, MARCO
Campi:FORMATO
Valore:12, 14, 16
Ecco io dovrei eliminare per es: ANNA e il formato di rif cioè: 14.
Ecco, come si fa?
Grazie
G.
-
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?
-
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
-
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.
-
Grazie. Potresti farmi un esempio pratico? Non saprei come partire. Grazie
-
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
-
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.
-
Nessun aiuto?
-
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...
-
Allora i dati arrivano dal querystring e devo cancellarli dal db. Grazie
-
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?
-
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!
-
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...
-
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.
-
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.
-
Nessun aiuto???