Durante l'aggiornamento di un record con:
sql= "UPDATE ....

vorrei modificare il contenuto parziale di un campo formato da testo strutturato in questo modo:
parte1|parte2|parte3|etc...
cioè vorrei per esempio modificare il testo di una delle parti.
Avrei pensato a:
campo=Replace(campo,'"&parte2&"','"&nuova_parte2&"')

ma mi da errore:
Funzione 'Replace' non definita nell'espressione.


Complessivamente:
sql_ups     = "UPDATE collaboratori_articoli SET  articoli = Replace(articoli,'"& hidOrigCartella &"', '"& nuovoNomeTitolo &"')  WHERE nome = '" & nome & "' and cognome = '" & cognome & "'"

Faccio della mia ignoranza una virtù per stimolare il cervello con soluzioni alternative.
......LELO
3.122 messaggi dal 16 maggio 2002
Un approccio di questo tipo mi sembra abbastanza rischioso. Che succederebbe se parte2 fosse una sottostringa di un'altra parte? Verrebbe sostituita anche quella?
Ti consiglierei perciò di usare le regular expressions, lavorerai meglio. Per usarle devi poi fare riferimento alle funzioni messe a disposizione dal DBMS che stai utilizzando, che non è detto che si chiamino come e abbiano la stessa sintassi delle solite funzioni vbscript.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
Raynor ha scritto:
Un approccio di questo tipo mi sembra abbastanza rischioso. Che succederebbe se parte2 fosse una sottostringa di un'altra parte? Verrebbe sostituita anche quella?
Ti consiglierei perciò di usare le regular expressions, lavorerai meglio. Per usarle devi poi fare riferimento alle funzioni messe a disposizione dal DBMS che stai utilizzando, che non è detto che si chiamino come e abbiano la stessa sintassi delle solite funzioni vbscript.

PArte1|parte2|parte|etccc... sono titoli, e quando volgio sostituirli li richiamo per la loro interezza! Non ci sono sottostringhe ulteriori.

ma se volessi provare con una RegExp come dovrei impostare la cosa??? Dove posso trovare docuentazione a proposito???

Faccio della mia ignoranza una virtù per stimolare il cervello con soluzioni alternative.
......LELO
3.122 messaggi dal 16 maggio 2002
Dipende dal DBMS che utilizzi, per mysql ad esempio consulta la documentazione online su mysql.com. Per SQL Server vai sulla mdsn online o sulla documentazione del dbms...

Ma ora mi viene un dubbio: cosa devi fare esattamente? Stai per caso usando un campo di testo per memorizzare una sequenza di riferimenti a record di altre tabelle? Se è così ti SCONSIGLIO vivamente di seguire questa strada, ma di ricorrere a tabelle ausiliarie con le foreign key appropriate, riprogettando il database (e anche quella parte dell'applicazione, purtroppo) adattandolo alla situazione. Se poi si tratta di un'applicazione già avviata che non vuoi scasinare più di tanto ok, pietra sopra e procedi così (sebbene sia un metodo scorretto e poco performante), ma se è una nuova applicazione ti consiglio di rivedere questo punto, molto importante.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
Il campo contiene semplicemente dei titoli intervallati dal carattere "|", quando voglio sostituire una delle parti, dei titolo è possibile esattamente il vecchio testo ed ovviamente il nuovo!
CMQ uso mysql

Faccio della mia ignoranza una virtù per stimolare il cervello con soluzioni alternative.
......LELO
3.122 messaggi dal 16 maggio 2002
Non sarebbe meglio se usassi una tabella aggiuntiva dove memorizzare i vari titoli, invece di memorizzarli in quel modo? Sarebbe più ordinato, performante e soprattutto portabile.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
ti sono sincero...non sono capace!
C'è un altra tabella dove è segnato anche il resto dei dati che riguardano l'elemento modificato, ma è da altra parte che nn sono capace di collegare + tabelle!

In realta il discorso è questo:
in unico database ci sono due tabelle:
- Una di scrittori (con dati personale)
- l'altra con gli articoli scritti (quindi tutte le caratteristiche, tra i quali il nome dello scrittore).

Quando apro la tab degli scrittori vorrei che comparissero anche i titoli degli articoli che ha scritto, quindi sono costretto a realizzar un campo che contiene tutti i titoli (poi separati dal carattere "|".
So che ci sarebbe la possibilità in una unica sessione andare nell'altra tabella e estrarre altri record collegati a quel dato scrittorequindi indicare per ogni scrittore i suoi testi (estratti dall'altra tabella), ma nn sono capace!!!

Faccio della mia ignoranza una virtù per stimolare il cervello con soluzioni alternative.
......LELO
3.122 messaggi dal 16 maggio 2002
Ok, ora ho capito la situazione. Butta via il metodo dei titoli assieme, è il momento di usare le INNER JOIN

Allora, mettiamo che le tue tabelle abbiano questa struttura:

Scrittore
id - Numerico
Nome - Testo
Cognome - Testo
...

Articolo
numero - Numerico
Data - Data
Autore - Numerico (collegato all'id di Scrittore)
Titolo - Testo
Testo - Testo

I campi sottolineati sono chiavi. Sono costretto ad usare campi numerici per identificare scrittori e articoli, che, se può avere un senso per l'articolo (numero dell'articolo), non ne ha molto per lo scrittore (numero dello scrittore?!). Occorre però fare così per distinguere due scrittori che, ad esempio, potrebbero essere omonimi. Se però nella tabella includi anche dati più personali, come ad esempio il codice fiscale, puoi eventualmente usare quelli come chiavi, abbandonando l'id surrogato.
Allora, la query che ti estrae, per ogni articolo, anche il relativo scrittore è la seguente:
SELECT S.Nome, S.Cognome, A.Titolo
FROM Scrittore S INNER JOIN Articolo A ON S.id = A.Autore

S e A sono due alias per le tabelle Scrittore e Articolo, in modo da non riscrivere ogni volta l'intero nome. Se poi vuoi suddividere gli articoli in base agli autori, puoi ordinare in base all'autore e, con un ciclo, stampare tutti i risultati trovati.
Ti consiglio di prendere un buon libro sulle basi di dati, progettazione e interrogazione (quindi linguaggio sql, molto importante).

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.