Newsgroup: it.comp.appl.access
Titolo: problema apostrofo in una stringa

Ciao belli, bravi ed intellignte (O violinoooooooooo
zigaaaaaaanoooooooooooo).
Ho utilizzato VBA per riconoscere se un dato immesso era già presente
nel DB. Il codice è il seguente:
    Dim strWhere As String, strMsg As String
    strWhere = "TitoloFilmOriginale = '" & txtTitoloFilmOriginale & "'"
    Me.RecordsetClone.MoveFirst
    Me.RecordsetClone.FindFirst strWhere
    If RecordsetClone.NoMatch = False Then
        strMsg = "Il titolo originale '" &
UCase(txtTitoloFilmOriginale) & "' è già presente nel DB" & ACapo &
ACapo
        strMsg = strMsg & "Titolo: " & Me.RecordsetClone.TitoloFilm &
ACapo
        If IsNull(Me.RecordsetClone.IMDb) Then
            strMsg = strMsg & "ID IMDb: Non presente"
        Else
            strMsg = strMsg & "ID IMDb: " & Me.RecordsetClone.IMDb
        End If
        strMsg = strMsg & ACapo & ACapo & "Premere ESC per annullare
l'operazione."
        MsgBox strMsg, vbInformation, "Controllo titoli identici"
    End If
Il mio problema è che in txtTitoloFilmOriginale i dati vengono immessi
automaticamente da altro codice, che lo preleva da una pagina web.
Quando nel titolo c'è un apostrofo si crea l'intoppo e genera errore.
Cosa mi consigliate?
Grazie, come sempre!
leev (WXP/AC00)

 Grazie, come sempre!
Ciao,
Max

 Cosa mi consigliate?
leev ci sono un miliardo di post sull'argomento
txt= replace(txt,"'","''")
--
ac

 io sono PiùBello
ma va? ;<)
--
ac


ehhh che ci vuoi fare ;-)

 leev ci sono un miliardo di post sull'argomento
Scusa Alessandro ma, sarà per poco tempo, sarà per non so cosa,  non
sono riuscito a cavarci un ragno. Anche ora ho ancora dei dubbi,
comunque non ho ancora provato. Stasera ci do' un'occhiata, ma se non
ho capito male dovrei applicare la funzione replace alla stringa
txtTitoloFilmOriginale in
    strWhere = "TitoloFilmOriginale = '" & txtTitoloFilmOriginale & "'"
Ma così facendo sostituisco l'apostrofo con le virgolette????
ma poi non mi trova più l'occorrenza uguale, nel caso ci fosse,
perchè lì è scritta con l'apostrofo!
Non credo questo sia il metodo giusto di procedere, io ho bisogno che
l'apostrofo resti tale; cosa non ho capito?
PS: siete dei gran fighi tutti e due, ok?!!! (Infestatori di Post)


 l'apostrofo resti tale; cosa non ho capito?
in questo caso prima fallo (nel senso di "facere") e poi discutiamo
Tu hai bisogno che la condizione funzioni.
[cut]
-- 
ac
email: w+1=x


Ci sono comunque altri metodi
1) strWhere = "TitoloFilmOriginale = """ & txtTitoloFilmOriginale & """
2) strWhere = "TitoloFilmOriginale = " & chr(34) & 
txtTitoloFilmOriginale & chr(34) & "
3) strWhere = 'TitoloFilmOriginale = "' & txtTitoloFilmOriginale & '"'
fanno tutti piu' o meno la stessa cosa. Fanno si che l'apice (o 
apostrofo che dir si voglia) non sia delimitatore di stringa.
Io preferisco quello con la replace perche' e' buono per tutti i dbms.
Visto che vuoi le spiegazioni: Non tutti i dbms accettano le virgolette 
come delimitatore di stringa. Nel nostro caso i tre esempi precedenti 
fanno proprio questo, usano le virgolette come delimitatore di stringa.
-- 
ac
email: w+1=x

 3) strWhere = 'TitoloFilmOriginale = "' & txtTitoloFilmOriginale & '"'
Questa e' una stupidaggine. Va bene per un altro linguaggio ma non per vba.
-- 
ac
email: w+1=x

 Tu hai bisogno che la condizione funzioni.
Si si, giusto. Ma visti come due apostrofi, cmabiano tutto. ^_^


 email: w+1=x

Alessandro Cara ha scritto:

OK, ma credo che userò proprio il replace.
Cercandolo velocemente ieri sera sulla guida di access mi sono usciti
RIMPIAZZA e SOSTITUISCI.
Il primo gli assomiglia molto foneticamente, ma dagli argomenti, se non
ho visto male, REPLACE dovrebbe corrispondere a sostituisci, giusto?!
Ok grazie di tutto, spero di provarlo quanto prima, compatibilmente col
lavoro di questo periodo (puff).
Non mancherò comunque di farti sapere.
Grazie ancora!!!
^__^
leev

 RIMPIAZZA e SOSTITUISCI.
ma come "diablo" la usi la guida? Vai su un qualsiasi modulo scrivi 
"replace" lo selezioni e fai F1
-- 
ac
email: w+1=x

 email: w+1=x

 fanno proprio questo, usano le virgolette come delimitatore di stringa.
Non avevo dubbi e difatti funziona egregiamente.
Ma , per la serie "e se non son rompi'glioni, e 'un li si vole",
perchè se metto due apici (o apostrofi che dir si voglia) non lo
interpreta come delimitatore di stringa? O meglio, perchè ce ne
vogliono due per far si che ne interpreti correttamente uno solo come
apostrofo?
ehm,  ....   grazie....


La risposta e':
Ce ne  vogliono due per far si che ne interpreti correttamente uno solo!
anche per le virgolette e' la stessa cosa: osservare attentamente:
strWhere = "TitoloFilmOriginale = """ & txtTitoloFilmOriginale & """
anzi forse le ultime tre virgolette dovrebbero essere quattro poiche' 
dovrebbero essere sempre pari. Non uso la forma con le vigolette perche' 
fa sempre una gran confusione. In quel caso preferisco chr(34).
-- 
ac
email: w+1=x

 Ce ne  vogliono due per far si che ne interpreti correttamente uno solo!
Capito, se non c'è ragionamento per arrivarci seignifica che...è una
convenzione!
GRACIAAAAAAASSSSS!!!!!
