PDA

Visualizza la versione completa : [DELPHI] Query parametrica con condizione LIKE su campo numerico


pegaso22
30-01-2007, 19:28
Ciao a tutti,
ho una query che fa riferimento ad alcuni campi numerici.
Vorrei selezionare ad esempio tutti quelli che hanno al loro interno il valore 8.
Con le stringhe faccio cosė:


DataModule1.Q_clienti.Params[0].AsString := ('%' + uppercase(Edit1.Text) + '%');


Come devo fare per un campo numerico?

Fatemi sapere.
Grazie mille.

pegaso22
31-01-2007, 10:42
:rollo:

Nikk11
31-01-2007, 11:38
Premetto che nn l'ho potuta provare e vado a memoria
Con sintassi Interbase / firebird cosė dovrebbe funzionare




Select <campi> from <tabella>
where <condizioni>
and
CAST(CAMPONUMERICO AS VARCHAR(12)) like "%8%"



ciao :ciauz:

pegaso22
31-01-2007, 12:10
Mi servirebbe la sintassi per passare il paramentro come in questo esempio per le stringhe:


DataModule1.Q_clienti.Params[0].AsString := ('%' + uppercase(Edit1.Text) + '%');





DataModule1.Q_clienti.Params[0].AsInteger := (... + numero + ...);

alka
31-01-2007, 14:37
Originariamente inviato da pegaso22
Come devo fare per un campo numerico?
Usa AsInteger o AsFloat o AsBoolean a seconda del tipo di file.

pegaso22
31-01-2007, 15:34
Ciao Alka,
non ho capito.
Il campo č integer quindi uso AsInteger.
Solo che facendo cosė ovviamente va in errore:


DataModule1.Q_clienti.Params[0].AsInteger := ('%' + uppercase(Edit1.Text) + '%');

Cosa devo utilizzare al posto di '%' per indicare tutto quello prima e tutto quello dopo?

Nikk11
31-01-2007, 17:30
Innanzitutto non hai ancora detto che Server SQL usi :madai!?:
Cmq l'operatore like funziona solo con stringhe.
E' per quello che nel mio post di prima ho convertito tramite il CAST la colonna numerica in VARCHAR e poi fatto il like. Il passaggio parametri va fatto in base al tipo di colonna / valore da passare... quindi se usi il like devi fare "AsString"

Ciao :ciauz:

pegaso22
31-01-2007, 17:36
Ok, nella query (visto che il valore č numerico) uso = e non like, giusto?

pegaso22
31-01-2007, 17:53
Ok, ho convertito in string (nella query) il valore intero.
Non capisco comunque come sia possibile che non esista un equivalente di quello che ho scritto sopra per le stringe valido per gli interi.

Comunque, grazie mille!

alka
01-02-2007, 01:45
Dal mio punto di vista, indipendentemente dal database server in uso, č errato l'uso che si fa dei parametri. Che senso ha usare un parametro per concatenare poi i valori inseriti?

I parametri si utilizzando quando si comparano campi con una variabile (che rappresenta il parametro) da inizializzare prima di eseguire la query.

Nel caso in esame, dovendo concatenare una istruzione LIKE nello statement SQL, non serve usare un parametro: basta concatenare il valore nella query (tanto il concatenamento lo fai comunque).

Inoltre, dovresti anche postare la query, oltre all'errore effettivo che non mi sembra sia stato specificato ancora nel corso della discussione.

Ciao! :ciauz:

Loading