PDA

Visualizza la versione completa : [delphi] proprieta sql di query


niquesca
13-02-2003, 18:45
Ho un campo che si chiama Codice Cliente (string)....

quando scrivo da object inspector nella proprietà sql la sintassi seguente:

select * from pazienti where Codice Cliente =: IDClienti

non funge, e secondo me non funziona perchè c'è lo spazio.....


grazie

alka
13-02-2003, 21:20
Quale formato di database stai utilizzando?
Probabilmente Access...

Non sono sicuro che sia colpa dello spazio...ti sei ricordata di specificare anche il valore del parametro che hai inserito all'interno della query, vero? ;)

Ciao! :ciauz:

niquesca
13-02-2003, 22:19
Ma ciaooooo
allora..
Database PARADOX (vers 5)
ho fatto una prova se io scrivo ...
select * from pazienti where Codice Cliente ="1" non funziona
invece se tolgo lo spazio:
select * from pazienti where CodiceCliente ="1" funziona !
se metto i parametri, cioè:
select * from pazienti where CodiceCliente = : CodiceCliente

mi va in errore....il valore del parametro COdice Cliente ancora devo passarlo da codice....quando imposto la proprietà della query active= true
va in errore e mi dice.....token not found.....cliccando infatti sulla proprietà Params della query non è impostato nulla! c'è qualcosa che mi manca...e non ricordo cosa..è un pò che non metto mani in delphi ....!

GRAZIES

alka
14-02-2003, 00:46
Come impostazione generale, ti suggerirei di evitare spazi nei nomi dei campi, in modo da risparmiarti l'uso di virgolette e altri caratteri speciali nella costruzione di statement SQL.

Per quanto riguarda i parametri, il segno dei due punti (:) deve essere "appiccicato" alla sinistra del nome del parametro.

Quando hai inserito la query nella proprietà SQL del componente TQuery, imposta i singoli parametri usando la funzione ParamByName.

Ti riporto un esempio:



...
Qry.SQL.Text = 'SELECT * FROM CLIENTI WHERE IDCLIENTE = :ID';
Qry.ParamByName('ID').AsInteger := 1;
Qry.Active = True;
...


Buonanotte signorina! ;)

niquesca
14-02-2003, 00:58
Grazie signorino....


Ma......vorrei aggiungere una cosa.....io so come fare ad impostare
il tutto da codice.....però io volevo impostare il parametro
dalla proprietà sql della table....DALL'OBJECT iNSPECTOR
e poi passare da codice solo il valore del parametro...!
Mi sembra di aver già fatto cosi se non mi confondo...
Il nome del campo purtroppo ha lo spazio, non posso cambiarlo
non l'ho fatto io....! HE HE HE



grazies signorino

:smack:

alka
14-02-2003, 01:10
Hai provato a racchiudere il nome del campo tra parentesi quadre?

niquesca
14-02-2003, 01:16
si ...ho provato......ma niente.....lo spazio proprio non gli piace...!


SIGH!:bhò:


ma non vai a dormire?

bDaniele
14-02-2003, 09:16
ehi non mescoliamo il tecnico e il sentimentale!!!!

MAAAAAAAAARCO cosa dici!!!!!

scherzo ovviamente, anche io ho avuto problemi con i nomi di campi con lo spazio e la soluzione migliore è come ha suggerito alka levare gli spazi, se non ricordo male ero riuscito a farlo funzionare, ma non accenno la soluzione perchè non la ricordo bene e non volgio dire stupidagini.

Signorini.... :smack: :smack:

Ciao Marco :ciauz:

alka
14-02-2003, 09:50
Sorry, ogni tanto mi faccio prendere la mano.... :)

Credo di aver risolto il problema. Devi usare le virgolette (") per racchiudere i nomi di campi e tabelle che includono degli spazi.

Ti riporto un esempio di statement SQL testato su un database esistente tramite il componente BDE TQuery:


SELECT * FROM "Indirizzi dipendenti"
WHERE "ID dipendente" = 2


Questa query permette di estrarre dalla tabella Indirizzi dipendenti tutti i record che contengono il valore 2 all'interno del campo ID dipendente.

Adattalo al tuo caso (inserendo anche il parametro di cui fai giustamente uso) e tutto dovrebbe funzionare a meraviglia.

Ciao! :ciauz:

niquesca
14-02-2003, 11:51
Ciao Marco e grazie, infatti con le virgolette ho risolto.....


PS.. bDaniele è geloso.....!



:smack: :ciauz: ;)

Loading