Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Aiuto:Problema in SQL

30 views
Skip to first unread message

Andrea Sevieri

unread,
May 22, 2000, 3:00:00 AM5/22/00
to
Ciao
ho una casella di testo che con il tasto invio devo ricercare una stringa
all'interno di una
tabella di access 7.0, ma se l'utente mi digita una stringa del genere
"DELL'AMICO" (una parola con l'apostrofo),
visual basic visualizza l'errore di run-time 3075 errore di sintassi
(operatore mancante)
nell'espressione query (((Clienti.cognome) like 'DELL'AMICO*')) .......

questa e' l'espressione SQL che Eseguo:

Set RecTabella = DbData.OpenRecordset("Select * from Clienti " _
& "Where (((Clienti.cognome) Like '"
& TxtCognome & "*" & "')) " _
& "Order By Clienti.cognome")

Vi Ringrazio in anticipo dell'aiuto ricevuto

Andrea d'Errico

unread,
May 23, 2000, 3:00:00 AM5/23/00
to

Andrea Sevieri <star...@floating.net> wrote in message
news:95898862...@sat.floating.net...

Capita più spesso di quanto non si creda. L'espressione SQL dell'esempio che
hai postato risulta essere:
"Select * from Clienti Where (((Clienti.cognome) Like 'DELL'AMICO*'))
Order By Clienti.cognome"

Io mi sono scritto una funzione che sostituisce l'apice singolo con il
carattere jolly (valido per tutti i DB)
Function getStringOk(MyString As String) As String
Dim iPos As Integer
iPos = InStr(MyString, "'")
While iPos > 0
Mid(MyString, iPos, 1) = "?"
iPos = InStr(MyString, "'")
Wend
getStrinOk = MyString
End Function

Potresti usare la funzione in questo modo:


Set RecTabella = DbData.OpenRecordset("Select * from Clienti " _
& "Where (((Clienti.cognome) Like '"

& getStringOk(TxtCognome.Text) & "*" & "')) " _


& "Order By Clienti.cognome")

L'espressione SQL in questo caso diverrebbe:
"Select * from Clienti Where (((Clienti.cognome) Like 'DELL?AMICO*'))
Order By Clienti.cognome"
perfettamente valida.
Una sola aggiunta, relativamente all'uso dell'operatore LIKE.
Attenzione all'asterisco che deve essere sostituito con il simbolo
percentuale anche per i database Access se connessi tramite ADO.
Ciao, Andrea d'Errico.

Giovanni Perdicaro

unread,
May 23, 2000, 3:00:00 AM5/23/00
to
It was Mon, 22 May 2000 11:43:42 +0200 when "Andrea Sevieri"
<star...@floating.net> said:

>tabella di access 7.0, ma se l'utente mi digita una stringa del genere
>"DELL'AMICO" (una parola con l'apostrofo),

Innanzitutti questo: devi raddoppiare l'apice, visto che per SQL il
simbolo _'_ delimita una stringa.
Raddoppiandolo lo "trasforma" in un'apice normale ^__^

>nell'espressione query (((Clienti.cognome) like 'DELL'AMICO*')) .......

Secondo (anche se non sono certo al 100%): usi l'asterisco come
carattere Jolly, ma se lanci la query da Visual Basic devi sostituirla
con un _%_ che è il jolly di SQL...

--
Giovanni "Gyo" Perdicaro
E-Mail: gperd...@sicilyonline.it

0 new messages