Newsgroup: it.comp.programmare.win32
Titolo: Query parametrizzate con c++ builder

Salve a tutti, ho da proporvi un problemino che fara ridere gli esperti c++
builder.
Uso da pochissimo il Borland C++ BUILDER 4.0 PRO, e sto cercando di
realizzare un semplicissimo database. Usando il componente Tquery ho
aggiunto il codice sql nella proprieta(SQL)  presente (dall 'Object
Inspector), ho settato la proprieta PARAMS e come dall' esempio della guida
ho creato un parametro al quale passare la clausola where.
SELECT  *  from Mia_tabella WHERE =: Mio_parametro
Fin qua' tutto OK. !!
Ma quando ho provato a creare un parametro da passare al operatore LIKE mi
sono imbattuto in una serie di prove senza riuscire.
SELECT * from Mia_tabella WHERE  LIKE '%MIA_CHIAVE%'
Cosě funziona, ma non riesco a creare il parametro che sostituisca
"Mia_chiave" per passargli  il contenuto di una dbtext da codice.
COME SI FA??
GRAZIE A TUTTI QUELLI CHE MI RISPONDERANNO
Nicola.

>SELECT * from Mia_tabella WHERE  LIKE '%MIA_CHIAVE%'
Secondo me qui c'è un errore! Dovrebbe essere:
SELECT * from Mia_tabella WHERE  NomeCampo LIKE '%MIA_CHIAVE%'
Poi, se vuoi utilizzare le query parametrizzate, allora la riga sql diventa:
SELECT * from Mia_tabella WHERE  NomeCampo LIKE :MiaChiave
(notare i due punti davanti a MiaChiave)
e poi, nel codice, passi il valore di un campo di edit:
Query->ParamByName("MiaChiave")->AsString = Edit1->Text;
Query->Open();
Spero sia questo quello che stai cercando. Ciao
--
Stefano Tempesta
ste...@tempesta.org
http://www.tempesta.org

 wrote in message 8ldj89$nu9$1...@nslave2.tin.it...
Ti ringrazio tanto per avermi risposto, ma purtroppo non ho risolto il
problema, perchè nel mio post c'è un errore che tu hai giustamente rilevato,
e quindi non ho fatto ben capire il vero problema.
Nelle prove che ho effetuato la sintassi che ho utilizzato è
SELECT * from Mia_tabella WHERE  NomeCampo LIKE :MiaChiave         (Quindi
con 'NOMECAMPO' DOPO where)
ma il problema è che l' operatore LIKE usato in questo modo (cioe con il
parametro) non fa il suo lavoro inquanto non so come aggiungere il segno %
(Jolly) perchè e visto dall' IDE come parte del parametro e quindi non come
Jolly
ES.
SELECT * from Mia_tabella WHERE  NomeCampo LIKE : %MiaChiave    (IL
PARAMETRO DIVENTA %MiaChiave)
Ho anche provato senza il parametro e va tutto OK
SELECT * from Mia_tabella WHERE  NomeCampo LIKE  '%MiaChiave'        (Tutto
OK)
Grazie e ciao
Nicola

OK)
Non vorrei dire una stupidaggine (non conosco c++b), ma perche' non
provi a passare il parametro gia' con gli apici singoli? (ad es.
'%MiaChiave') Potrebbe considerarlo completo all'atto della
risoluzione del parametro.
Gielle

COME SI FA??
SELECT * FROM MIA_TABELLA WHERE NOME_CAMPO LIKE :MIO_PARAM
Query->ParamByName( "MIO_PARAM")->AsString = "%MiaChiave%" ;
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------
#exclude <windows.h>

 wrote in message
3980f4fa...@news.tin.it...

Purtroppo non era questo il metodo giusto, ma ho raggirato il problema
risolvendolo in un modo poco pulito :-((  ma funzionale ;-) Pertanto mi
sembra doveroso e corretto indicare la soluzione adottata:
SELECT * from Mia_tabella WHERE  NomeCampo LIKE  : Mio_parametro(questo per
quanto riguarda il codice SQL)
Query1->ParamByName("Mio_parametro")->AsString=Edit1->Text +"%" ;
In pratica il segno % non lo metto nel codice SQL ma lo addiziono alla
stringa che esce fuori dalla textbox.
Forse non č molto pulito ma funziona !!
Grazie a tutti quelli che hanno partecipato alla risoluzione del problema.
Ciao
Nicola