Newsgroup: it.comp.appl.access
Titolo: da Stringa a SQl e viceversa

Salve a tutti
ho la necessit� di inserire in un capo di testo delle stringhe contenenti 
caratteri speciali (apostrofi) e per fare ci� ho trovato una funzione che mi 
converte la stringa in un formato adatto ad essere inserito nel database. La 
funzione � la seguente:
Function String2Sql( ByVal s As String, _
Optional Byval PerLike As Boolean = False) As String
s=Replace$(s, "'", "''", 1&, -1&, vbBinaryCompare)
If PerLike Then
s=Replace$(s, "[", "[[]", 1&, -1&, vbBinaryCompare)
s=Replace$(s, "_", "[_]", 1&, -1&, vbBinaryCompare)
s=Replace$(s, "%", "[%]", 1&, -1&, vbBinaryCompare)
End If
String2Sql=s
End Function
Fin qui tutto bene.
Ora per� ho la necessit� di trasformare in stringa il valore presente nel 
database creato con questa funzione, (esempio: il doppio apostrofo in un 
apostrofo solo).
Mi potete aiutare?
Grazie 1000 

 ha scritto nel messaggio 
news:4af5a825$1...@news.x-privat.org...

Pi� o meno � l'inverso della tua funzione e ammesso che parliamo di doppi 
apici.
Per esempio questa funzione potrebbe andare bene:
Public Function Rimpiazza(ss As String) As String
Rimpiazza = Replace(ss, "''", "'")
End Function
Ciao, Carlo 


Carl� ma lui parla di valore... per cui, o nel record c'� registrato una 
stringa SQL, o non mi spiego sta cosa. 

 stringa SQL, o non mi spiego sta cosa.
Nemmeno io; qualche dubbio l'ho avuto.
Si tratta d'interpretare cosa vuol dire: "esempio: il doppio apostrofo in un
apostrofo solo".
Vediamo cosa risponde.
Ciao, Carlo 


Mi spiego con un esempio:
Stringa originale:
"L'albero in via dei tigli si trova all'interno del viale"
Valore inserito nel database:
"L''albero in via dei tigli si trova all''interno del viale"
Ora io vorrei mostrare nuovamente in visualizzazione la stringa originale, 
ed eventualmente (ma non indispensabile) utilizzare anche il LIKE per le 
ricerche (ad esempio trovare "albero" all'interno di una query sulla 
tabella.
Spero di essermi spiegato.
Grazie

 Grazie
Si, ma non mi � chiaro perch� nel DB passi la stringa stravolta... 

 Si, ma non mi � chiaro perch� nel DB passi la stringa stravolta...
...a lui piace cos�...stravolto.
Ciao, Carlo


:)
gi�... per� � peccato... deve fare due lavori di parse, quando ne serve 
zero... com'era la cosa? tutto � inutile tranne il superfluo? :D 

 Si, ma non mi ï¿œ chiaro perchï¿œ nel DB passi la stringa stravolta... 
perche' non gli e' chiaro  il perche' del doppio apice.
-
ac

 Si, ma non mi � chiaro perch� nel DB passi la stringa stravolta...
perche se io eseguo "Update nometabella set nomecampo = '" & stringa & "'"
senza string2sql mi genera un errore. Avevo risolto con la funzione che ho 
descritto ma se avete suggerimenti ben vengano, ho postato sul ng proprio 
per questo.
Grazie 

 Grazie
Cio� tu mi vorresti dire che se da codice esegui :
Dim str As String
str = "L'isola dei famosi"
DoCmd.RunSQL "UPDATE TuaTabella SET TuaTabella.TuoCampo= " & Chr(34) & 
"L'isola dei famosi" & Chr(34)
non ti funzia?... impossibile... ci sar� dell'altro, perch� questo � un 
codice che passa tranquillamente...

 "L'isola dei famosi" & Chr(34)
ops... ovviamente
DoCmd.RunSQL "UPDATE TuaTabella SET TuaTabella.TuoCampo= " & Chr(34) & str & 



scusa l'ignoranza, ma mi spieghi la differenza tra
DoCmd.RunSQL "UPDATE TuaTabella SET TuaTabella.TuoCampo= '" & str & "'"
e
DoCmd.RunSQL "UPDATE TuaTabella SET TuaTabella.TuoCampo= " & Chr(34) & str & 
Chr(34)
e perch� una va e l'altra no?
Grazie per la pazienza

 Grazie per la pazienza
perchè la prima ti restituisce :
UPDATE TuaTabella SET TuaTabella.TuoCampo= 'L'isola dei famosi'
mentre la seconda ti restituisce :
UPDATE TuaTabella SET TuaTabella.TuoCampo= "L'isola dei famosi"
come vedi, il risultato del primo SQL, dopo l'uguale ( = ) ha l'apice
( ' ) poi la elle ( L ) poi dinuovo l'apice ( ' )... a questo secondo
apice, il codice si blocca, perchè "avverte" che la stringa è
terminata (mentre non è così), e quindi non riesce a tradurre i
caratteri che vengono dopo denerando un errore...
chiaro?
chr(34) invece è il codice per farti restituire correttamente le due
virgolette, che rendono il contenuto al loro interno un corpo unico
(ammenochè in "str", non vi sia un contenuto con altre virgolette...
in quel caso ricorreresti in un errore analogo a quello già
riscontrato. Es. Ciao "MATTEO"... non passerebbe.

 Grazie per la pazienza
perch� la prima ti restituisce :
UPDATE TuaTabella SET TuaTabella.TuoCampo= 'L'isola dei famosi'
mentre la seconda ti restituisce :
UPDATE TuaTabella SET TuaTabella.TuoCampo= "L'isola dei famosi"
come vedi, il risultato del primo SQL, dopo l'uguale ( = ) ha l'apice
( ' ) poi la elle ( L ) poi dinuovo l'apice ( ' )... a questo secondo
apice, il codice si blocca, perch� "avverte" che la stringa �
terminata (mentre non � cos�), e quindi non riesce a tradurre i
caratteri che vengono dopo denerando un errore...
chiaro?
chr(34) invece � il codice per farti restituire correttamente le due
virgolette, che rendono il contenuto al loro interno un corpo unico
(ammenoch� in "str", non vi sia un contenuto con altre virgolette...
in quel caso ricorreresti in un errore analogo a quello gi�
riscontrato. Es. Ciao "MATTEO"... non passerebbe.
Grazie 1000