20 messaggi dal 08 novembre 2008
Ho la necessità di importare dei campi da un DBV e fin qui nessun problema a farlo. Molti campi importati sono del tipo varchar(50) e quindi la sintassi utilizzati è la seguente
INSERT INTO miatabella (nome, cognome, etc.) VALUES('" & campo1 & "', '" & campo2 & "', '" & campo3 &"')"

fin qui tutto funziona bene se la stringa in ingresso non presenta accenti o apostrofi
se la citta è scritta :
Bogotà, tutto va bene, ma se invece viene utilizzata la seguente sintatti BOGOTA' allora vengono fuori i casini.
Come ovviare a tale problema??? Le ho provate di tutte ma non ci riesco proprio.
Certo, sarebbe possibile correggere BOGOTA' con l'opzione mostrata precedentemente ma la parola L'Aquila o ancora L'Ultima volta..... non saprei proprio come modificarle.
Grazie a tutti.
Enzo
301 messaggi dal 31 maggio 2006
Ciao

per risolvere il problema degli apici ti basta raddoppiarli

per esempio

1) BOGOTA'
2) L'Aquila

diventano

1) BOGOTA''
2) L''Aquila
20 messaggi dal 08 novembre 2008
Grazie, come pensavo, ovvero devo controllare tutte le stringhe prima di effettuare la query (AZZ.....)
301 messaggi dal 31 maggio 2006
ciao
puoi effettuare il replace su tutte le stringhe, se è presente l'apice sarà raddoppiato altrimenti non succede niente
20 messaggi dal 08 novembre 2008
gghi ha scritto:
ciao
puoi effettuare il replace su tutte le stringhe, se è presente l'apice sarà raddoppiato altrimenti non succede niente


Non va assolutamente bene. Se il campo del database in ingresso è vuoto (DBNULL o NOTHING) nel mio campo inserisce l'apice, se il campo non è vuoto ma contiene una stringa senza apice (accento) va in errore esempio

'''' va bene
''AIUTO'' non va bene da errore.
20 messaggi dal 08 novembre 2008
Risolto il problema con la funzione Replace di VB
controllo i 3 campi interessati (dove potrebbero esserci degli accenti) ed aggiunge un'apice

BOGOTA'
diventa
'BOGOTA''

Grazie a tutti.
25 messaggi dal 07 febbraio 2005
Se usi ASP classico ti consiglio di usare un adodb.command in modo da non preoccuparti di apici ed altro.
Nel testo della query inserisci i punti interrogativi e poi aggiungi i parametri alla collezione in maniera posizionale.

Ad esempio:

Set cmdObj = Server.CreateObject("ADODB.Command")
With cmdObj
.ActiveConnection= strConn
.CommandText = "UPDATE ACL SET ACLUserName=?, ACLPwd=? WHERE ACLID=?"

.CommandType = adCmdText

.Parameters(0) = left(request.Form("ACLUserName"),10)
.Parameters(1) = left(request.Form("ACLPwd"),10)
.Parameters(2) = request.Form("ACLID")

.Execute ,,adExecuteNoRecords

end with 'cmdObj
301 messaggi dal 31 maggio 2006
ciao
1) quando parlavo di replace era appunto la funzione REPLACE.
2) il metodo che ti ha suggerito sbenedetti è sicuramente il più giusto e corretto metodo di preparazione query, ti mette al riparo anche da eventuali attacchi di tipo sql-injection

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.