PDA

Visualizza la versione completa : [VB]Sintassi SQL


new
26-09-2002, 21:44
ciao a tutti vi espongo il mio problema-....

ho tanti nomi su un db con l'apostrofo
quando faccio una query per cercare ad esempio W L'Italia
e la faccio cosi
Sql = "select * from Titoli Where Titolo = '" & variabile & "'"
dove variabile = "W L'Italia"
Visual basic mi da errore mi dice operatore mancante, perche nella variabile c'è l'apostrofo; come posso risolvere?
qualche idea?


grazie a tutti

elevation
26-09-2002, 22:07
bhe...dovresti fare un "Replace" del carattere ' con il suo corrispondente "& # 039;" (senza spazi..). Con l'ASP funziona...in visual basic non so...

ciao!

jhonny
26-09-2002, 22:15
PROVA COSì

"Select from ordini where prodotto = '" & Replace(text1.text, "'", "''") & "'"



:adhone:

Laufer
27-09-2002, 08:58
Vi sono vari modi per risolvere il problema:
Innanzitutto bisogna vedere se puoi immettere i dati sul tuo DB con il doppio apice agendo cosi prima di costruire la query al DB:

Dim VarTemp As String

VarTemp = Variabile
Variabile= Replace(VarTemp, "'", "''")

Ovviamente se tale solution e' fattibile quando vai a pescare il record fai il replace inverso.

SE non ti e' possibile modificare il DB potresti effettuare la query aggirando il problema con il like:
I vai a prendere i caratteri prima o dopo l'apice e la stringa SQL la puoi fare cosi:
Sql = "select * from Titoli Where Titolo like '%" & variabile & "%'"


No e' bello fare in questo modo, cmq oggi vedo se esiste una sintassi SQL per l'apice.
NOn ti posso garantire nulla, ma visto che pure io ho il medesimo problema vediamo se si riesce a risolvere



:)))))))


Laufer

new
27-09-2002, 09:13
ok innanzitutto grazie a tutti per le risposte....

1) il replace funziona ovviamente e quindi per un programma ho risolto cosi..........il problema mi sorge perche poi devo fare il confronto dei nomi dei file in una cartella con i nomi in un database, (ovviamente i nomi dei file nn li posso cambiare, e file come "l'anno 1978 attività...... .doc" mi danno errore proprio per l'apice....:dhò:

2) con la like avevo gia provato ma nn andava..........:bhò:

se trovate qualcosa fate sapere grazie!

Laufer
27-09-2002, 09:49
Per far eseguire la stringa Sql basta raddoppiargli l'apice.

Esempio banale
select * from pippo where = "w L'Italia"

da errore

mentre
select * from pippo where = "w L''Italia"

restituisce il risultato della query

:)

Per il tuo problema tempo di nn aver capito


Laufer

new
27-09-2002, 12:21
scusami mi spiego meglio

su una cartellina ho tanti file .doc
io li prendo uno per uno e li confronto su di un database con un ciclo

mi chiedevo se passando ogni volta il file alla select; e facendo il replace dell'apice sulla query, nel database avrebbe corrisposto il nome

ho fatto la prova e funziona
grazie a tutti

Loading