Newsgroup: it.comp.lang.visual-basic
Titolo: Sintassi esatta delle  query SQL

Prima di tutto un saluto agli amici del forum.
Non riesco ad andare avanti nell'apprendimento del VB ed ora mi sono
incagliato con le query SQL. Volevo chiedere se mi fate degli esempi pratici
su come progettare una ricerca che devo fare su una tabella di un database
"Libreria" fatta con VisData.
Il database ha un campo chiamato Numero che mi ordina numericamente i
libri..
Non riesco ad usare la funzione LIKE e concatenare la stringaSQL da passare
al codice come ricerca perchè nei vari documenti che ho non ho capito niente
tra virgolette singole, doppi apici e quan'altro. E' per esempio correto
scrivete questo codice?
stringaSQL = "SELECT * FROM Pubblicazioni "
If txtNumero.Text <> "" Then stringaSQL = stringaSQL + " WHERE Numero LIKE
'9'  "
Data1.RecordSource = stringaSQL
Data1.Refresh
oppure
stringaSQL = "SELECT * FROM Pubblicazioni "
If txtNumero.Text <> "" Then stringaSQL = stringaSQL + " WHERE Numero LIKE &
'txtNumero.text'&  "
Data1.RecordSource = stringaSQL
Data1.Refresh
Lo stesso codice dovrei usarlo anche per il titolo, l'editore ecc.

 'txtNumero.text'&  "
Come teoria questa mi sembra più logica, ma come ti dicevo sopra:
"SELECT * FROM Pubblicazioni WHERE CStr(Numero) = '" & txtNymero.Text & "'"
Ciao
-- 
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 Prima di tutto un saluto agli amici del forum.
Ciao.
Aggiusta la data del computer, per favore.
Bye, G.

"SELECT * FROM tabella WHERE nome = '" & Replace(strCodice, "'", "''") & "'"
Solo per fare un piccolo appunto, il tuo modulo "è bucato" sul doppio
apice come ad esempio: ristorante "ai due ladroni"
In questo caso (e anche in quello di un singolo apice) ti conviene
svilupparti una funzione che su TUTTE le stringhe che usi per ricerca
siano raddoppiati i famigerati caratteri apice e doppio apice
=======================================================================
Se mi vuoi scrivere togli le maiuscole
Sveltolampo 
cteniza...@hotmail.com
=======================================================================

 siano raddoppiati i famigerati caratteri apice e doppio apice
Ciao Sveltolampo,
nella sintassi proposta da Lupo
-----------
"SELECT * FROM tabella WHERE nome = '" & Replace(strCodice, "'", "''") & "'"
------------
il doppio apice non va raddoppiato, altrimenti non troveresti ciò che
cerchi.
La sintassi SQL prevede il singolo apice come delimitatore di testo quindi
la Query
------------------------------
SELECT *
FROM Tabella
Where Nome='ristorante "ai due ladroni'
------------------------------
funzionerebbe perfettamente.
E' anche vero che nei databnase di Access si può passare come delimitatore
di testo il doppio apice e solo in questo caso (molto scomodo in VB)
dovresti raddoppiare il doppio apice e NON raddoppiare un eventuale singolo
apice.
------------------------------
SELECT *
FROM Tabella
Where Nome="ristorante ""ai due ladroni"
------------------------------
Ciao Giorgio

 nella sintassi proposta da Lupo
ops scusate, era Zanna, non Lupo.
Ciao Giorgio

apice.
Ciao Giorgio, 
Avevo solo ricordato che nel caso nella nostra stringa di ricerca sia
presente il doppio apice come per la ricerca di un nome del tipo:
ristorante "alla posta".
Di campi ragione sociale/nome che contengono come valore il doppio
apice chr(34) ti assicuro, io che gioco con le PU se ne trovano molti.
Anche in questo caso č necessario raddoppiare il doppio apice per cui
consigliavo di fare una funzione "standalone" che servisse proprio al
raddoppio dei caratteri apice singolo e doppio apice prima della
trasmissione al comando sql.


 ristorante "alla posta".
Non è vero, perchè se come delimitatore di stringa SQL usi l'apice singolo
lui le virgolette le tratta come un normale carattere.
Diverso è se invecie usi le virgolette come delimitatore di stringa SQL, ma
in questo caso ti vuoi fare del male, perchè in VB diventa impossibile
scrivere una stringa corretta :)


Prima di tutto volevo ringraziarvi per le risposte. Però mi sono rimasti dei
dubbi.
Ciedo cortesemente a Zanna ed agli altri amici se potreste farmi gli esempi
inserendo (anche so non corretto) degli spazi dove i doppi apici e i singoli
apici sono vicini.
Per esempio nella comando SQL
 "SELECT * FROM tabella WHERE nome = '" & Replace(strCodice, "'", "''") &
"'"
 non riesco a capire la differenza. Vi ringrazio ancora e scusate ancora ma
vorrei superare questo scoglio che mi consentirebbe mi affrontare meglio SQL

 "'"
Non è + sempliec aprire VB, dichiarare qualcosa come:
Dim S As String
e fare un copia e incolla dal messaggio del NG verso VB?
S = "SELECT * FROM tabella WHERE nome = '" & Replace(strCodice, "'", 
"''") & "'"
Così dall'editor di VB dovrebbe esserti tutto più chiaro (anche se in 
realtà è già tutto chiaro come il sole del mattino).
-- 
Quando noi ignoranti eravamo di più,
tutto era più bello...
(A. Celentano)

 vorrei superare questo scoglio che mi consentirebbe mi affrontare meglio
SQL
Qui mi pare non sia tanto un problema di SQL quanto di "aritmetica" delle
stringhe.
