Newsgroup: it.comp.lang.visual-basic
Titolo: SQL: Confronto con una stringa costituita da DUE O PIU' APOSTROFI

Salve a tutti
Ho costruito un'istruzione SQL di questo tipo:
    strSQL = "SELECT * FROM  Comuni WHERE Comune LIKE '" & strTemp & "'
ORDER BY Comune"
dove strTemp può essere la seguente stringa: "CA' D'ANDREA" (con DOPPIO
APOSTROFO!!!), che naturalmente genera una errore.
Da quanto ho constatato, l'istruzione Replace(strTemp, "'", "''") elimina in
parte il problema, in quanto risolve solamente il caso del SINGOLO
APOSTROFO.
Conoscete un modo per costruire opportunamente la suddetta query?
Ringrazio anticipatamente tutti coloro risponderanno.
Roberto

 APOSTROFO.
?
Ma che errore ti genera?
Perchè secondo me dovrebbe funzionare...
Ciao
Alberto

sě, infatti, dovrebbe funzionare......son d'accordo con Albe V°....
Cioč, se nell'sql tu hai una stringa "CA' D'ANDREA", usando la replace
dovresti ottenere una cosa del tipo:
strTemp="CA' D'ANDREA"
strTemp=Replace(strTemp,"'","''")
msgbox strTemp
strSQL = "SELECT * FROM  Comuni WHERE Comune LIKE '" & strTemp & "' ORDER BY
Comune"
la msgbox dovrebbe visualizzarti CA'' D''ANDREA
quindi nell'SQL non ci sono piů apici singoli, ma raddoppiati e il tutto
dovrebbe andare.....
good coding!!!
--
Igor Damiani
ig...@igordamiani.it
http://www.igordamiani.it
ICQ : 11847262

 APOSTROFO.
[SNIP]
Sei sicuro di aver provato l'istruzione corretta?
se provi a eseguire
strTemp = Replace("CA' D'ANDREA", "'", "''")
il risultato e' "CA'' D''ANDREA", ovvero esattamente il formato corretto per
la tua query...
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 wrote in message
pFXm9.43431$Eu.9...@twister1.libero.it...


 sottostringhe...
Non è che fai:
Call Replace(strTemp, "'", "''")
oppure
stringa_pippo=Replace(strTemp, "'", "''")
?
A proposito, Ca' D'Andrea ... di che provincia?

 wrote in message
anhge7$grl$1...@fe1.cs.interbusiness.it...


     consentito o sono in conflitto.
Eccolo "the bastard"
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q202955&
Leggi bene tutto (sconfortante ADO!) e anche il link all'interno:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q245408
PS: Chiedevo la provincia perchè sono nato a 8 Km da quel paesello.

 All'esecuzione dell'ultima istruzione si genera l'errore:
[SNIP]
Come ricordato ancora oggi, in un altro messaggio, il carattere jolly * e'
supportato solo da DAO; lo standard SQL, utilizzato anche da ADO, prevede
invece il carattere %


 invece il carattere %
No, Luca, vedi il mio post sopra. Per grande coerenza, la Find vuole  *

A dir il vero sono appena-appena sconcertato:
Qui si dice una cosa:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q226119&
Questo è invece quanto è scritto in ADO260.CHM (Metodo Find):
Remarks
Only a single-column name may be specified in criteria. This method does not
support multi-column searches.
The comparison operator in Criteria may be ">" (greater than), "<" (less
than), "=" (equal), ">=" (greater than or equal), "<=" (less than or equal),
"<>" (not equal), or "like" (pattern matching).
The value in Criteria may be a string, floating-point number, or date.
String values are delimited with single quotes or "#" (number sign) marks
(for example, "state = 'WA'" or "state = #WA#"). Date values are delimited
with "#" (number sign) marks (for example, "start_date > #7/22/97#").
If the comparison operator is "like", the string value may contain an
asterisk (*) to find one or more occurrences of any character or substring.
For example, "state like 'M*'" matches Maine and Massachusetts. You can also
use leading and trailing asterisks to find a substring contained within the
values. For example, "state like '*as*'" matches Alaska, Arkansas, and
Massachusetts.
Asterisks can be used only at the end of a criteria string, or together at
both the beginning and end of a criteria string, as shown above. You cannot
use the asterisk as a leading wildcard ('*str'), or embedded wildcard
('s*r'). This will cause an error.

stavo giusto leggendo i links che hai segnalato prima, giusto per curiosità,
dato che io il metodo .Find lo uso veramente poco, se non addirittura
mai.....
comunque è veramente triste, poi ci "lamentiamo" del fatto che ci sono
utenti che usano l'* invece del %
persino in MS non si capisce più nulla.....
e, a parte questo, non sapevo che nei pattern non posso mettere una cosa
tipo "*fine stringa", ma può essere messo solo all'inizio......vi risulta?


 tipo "*fine stringa", ma può essere messo solo all'inizio......vi risulta?
Beh, quando si legge (nel secondo link) una frase del genere:
"These limitations are due to the ADO Client Cursor Engine not containing a
full expression parser."
Cosa pensare se non al mal di gomito?

soluzione alternativa (forse)
funziona per la SELECT in Access e DAO (non so in ADO)
prova a costruire la stringa SQL  in questo modo:
strSQL = "SELECT * FROM  Comuni WHERE Comune LIKE " & Chr$(34) & strTemp &
Chr$(34) & "ORDER BY Comune"
dovrebbe funzionare.
Ciao, Giorgio

 wrote:
usa "#" & StrCriterio & "#"
(sperando di non imbattersi in una stringa che contiene cancelletti!)
Ciao
@Pino

 (sperando di non imbattersi in una stringa che contiene cancelletti!)
Che c'azzecca, scusa. Non capisco. :-(



Getz e a. "Access 2000 manuale di programmazione"
la "vende" come soluzione non documentata.
Il problema posto sembra corrispondere all'esempio del libro.
L'ho provata e funzia.
Ciao
@Pino

Grazie mille!! Una soluzione semplice ed efficace
Saluti,
Roberto