Vai al contenuto
PLC Forum


Sql In Vb - non accetta apostrofo


JumpMan

Messaggi consigliati

Ho un problema con le SQL sotto VB, se faccio una stringa SQL tipo questa: “SELECT * FROM [Articoli] WHERE Descrizione = 'RELE' TERMICO'” il programma mi dà errore perchè non posso mettere l’apostrofo dopo la scritta RELE in quanto esso è usato per delimitare una stringa nella proposizione WERE…… In sostanza non posso cercare nel database nessun termine che contenga l’apostrofo (che in questo caso viene usato come accento).

Esiste un modo per aggirare il problema? Come posso inserire l’apostrofo dentro l’espressione criteri della proposizione WHERE ?

Ringrazio anticipatamente per le risposte eventuali.

Link al commento
Condividi su altri siti


Ciao,

io ho usato parecchio tempo Delphi e non Visual Basic.

Ho usato pochissimo SQL, giusto per farci un po' d'esperienza, ma mai in ambito pratico.

Il problema dell'apostrofo nei linguaggi di programmazione, non si fa sentire solo nel caso dell'SQL, ma in tutti i casi dove c'è di mezzo una stringa.

In Delphi, per utilizzare l'apostrofo in una stringa si scrive 2 volte l'apostrofo.

In pratica la tua stringa SQL diventa così :

“SELECT * FROM [Articoli] WHERE Descrizione = 'RELE'' TERMICO'”

prova e fammi sapere.

Ciao

Link al commento
Condividi su altri siti

Quando memorizzi quella stringa nel database devi sostituire l'apostrofo (') con un carattere che non useresti mai (§ ad esempio) e poiquando lo rileggi e magari lo visulizzi in una listview o qualsiasi altro controllo lo risostituisci con l'apostrofo.

In questo modo non ti segnalerà alcun errore.

Ciao

Link al commento
Condividi su altri siti

SQL è un linguaggio semplice per poter interfacciare con database diversi, per cui non ammette l'uso di caratteri e parole chiave che utilizza per dialogare col database. L'ostacolo può essere aggirato col parser, inserendo l'apice nel codice del programma che scrive la stringa HTML (es. con JSP, PHP, o XML), tramite il codice corrispondente.

Questo se non puoi sostituire l'apice direttamente nel nome del campo.

Altrimenti puoi cambiare l'apice con il carattere ANSI international "apostrofo" ( ’ ) che corrisponde al codice 146 (es.: in HTML scriverai " & # 1 4 6 ; ")

Modificato: da nll
Link al commento
Condividi su altri siti

Dimenticavo, in HTML l'apice corrisponde al codice " & # 3 9 ; " ovviamente gli spazi intermedi sono da eliminare in quanto li ho dovuti inserire per consentirne la visualizzazione su questa pagina.

Link al commento
Condividi su altri siti

Per bcbel: non posso mettere un carattere strano in quanto il database viene editato anche da altri utenti con Access.

Per nll: il carattere 146 l’avevo pensato anch’io e funzionava, ma solo fino a quando qualcuno non editava il database con Access introducendomi ancora apostrofi (39). Per quanto riguarda “& # 3 9” non funziona perché se cerco “RELE& # 3 9 TERMICO” (senza spazi) non mi trova niente, mi sa che vale solo per HTML.

Per Aladino: Hai fatto centro al primo colpo !

“SELECT * FROM [Articoli] WHERE Descrizione = 'RELE'' TERMICO'” funziona !

Non ho risposto prima perché non ho potuto provare subito.

Grazie 1000000000000000 comunque a tutti e 3, mi avete tolto uno di quei grattacapi che quando non hai la soluzione non ci dormi di notte, ma quando ce l’hai dici: ma che stupidata!

(ho perso ore sugli . in linea e MSDN senza trovare informazione alcuna)

Link al commento
Condividi su altri siti

ifachsoftware

Per correggere tale problema in Visual Basic mi sono fatto questa funzione

' Funzione per correggere errore doppio apice in stringa SQL

Public Function CorreggiApiciSQL(sQuery As String) As String

CorreggiApiciSQL = Replace(Trim(sQuery), "'", "''")

End Function

Che in pratica corregge la stringa da ricercare nella query sostituendo l'apice con il doppio apice ' -> '' in questo modo funziona.

Ciao :)

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...