Newsgroup: it.comp.lang.delphi
Titolo: Inserire variabile in una query....

Ragà non sono per niente un mago del delphi quindi spero di riuscire a
farmi capire....
Sto facendo un programma in delphi che usa i database. Questi ultimi li
ho già creati... adesso sto facendo un interfacci di ricerca con dei
combo box...
Allora... I campi del database sono : Categoria, Marca, Modello,
Cilindrata, ecc.
Nell'interfaccia di ricerca c'è per esempio un combobox con le cinque
categorie di automobili, scegliendone devo aggiungere nella proprietà
SQL della query cioè Query1.SQL questo: "where Categoria=<ciò che viene
selezionato nella combobox>...
Ecco il problema sta qui... al posto di =<ciò che viene selezionato
nella combobox> vorrei usare una variabile.
Vi riporto la parte del programma in questione:
procedure TForm_Cerca_Auto.Button3Click(Sender: TObject);
begin
Query1.SQL.Clear;
Query1.SQL.Add('SELECT DISTINCT CATEGORIA, MARCA, MODELLO, CILINDRATA,
COLORE, IMMATRICOL, COSTO');
Query1.SQL.Add('FROM "C:\Documenti\InterAuto\automobili.DBF"');
Query1.SQL.Add('WHERE COSTO>=0');
if ComboBox1.Items[ComboBox1.ItemIndex]<>''
 then
  begin
   if ComboBox1.Items[ComboBox1.ItemIndex]='UTILITARIA'
    then Query1.SQL.Add('AND CATEGORIA = "UTILITARIA"')
   else if ComboBox1.Items[ComboBox1.ItemIndex]='NORMALE'
    then Query1.SQL.Add('AND CATEGORIA = "NORMALE"')
   else if ComboBox1.Items[ComboBox1.ItemIndex]='LUSSO'
    then Query1.SQL.Add('AND CATEGORIA = "LUSSO"')
   else if ComboBox1.Items[ComboBox1.ItemIndex]='RAPPRESENTANZA'
    then Query1.SQL.Add('AND CATEGORIA = "RAPPRESENTANZA"')
   else if ComboBox1.Items[ComboBox1.ItemIndex]='SPORTIVA'
    then Query1.SQL.Add('AND CATEGORIA = "SPORTIVA"');
   end;
L'ho fatto per il momento così, caso per caso,  ma è un problema perchè
le marche sono 46 quindi capite che è pesante e poi... è un problema in
caso di una nuova marca da inserire in futuro.
A tal proposito vorrei sapere come prelevare gli Items della combobox
direttamente dalla colonna del database...Ho provato col
DBlookupCombobox ma mi ripete lo stesso Items per tutte le auto del DB
che sono per esempio della stessa categoria!!!
Ragà lo so che è lunga ma vi prego datemi una mano altrimenti non ne
esco più!!!
Grazie Per Eventuali risposte!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

nella combobox> vorrei usare una variabile.
Devi usare le query parametriche:
Query1.SQL.Clear;
Query1.SQL.Text := 'select * form miatabella '+
                   'where campo = :pcampo';
Query1.ParamByName('pcampo').AsString := MiaVariabile;
Query1.Open;
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 wrote in message
news:3c8205d8...@news.tin.it...
Grazie mille!!! Sei un grande!
Mi potresti aiutare anche per l'altro problema?
Vorrei che gli Items della combobox fossero in automatico i dati di una
determinata colonna (o campo) del mio DB in modo da non dover inserirli
tutti a mano e anche perchč se un domani dossesse esserci per esempio un
altra marca di auto, non si dovrebbe andare a modificare tutto il prog.
Io ho provato con la DBLookupComboBox ma mi ripete piů volte le stesse
cose... Cioč se due auto sono BMW nella lista mi ritrovo 2 volte BMW.
Hai un rimedio a questo?
Grazie fin da ora!!!
Marco


Hai un rimedio a questo?
Devi costruire una query con SELECT DISTINCT sul campo in
questione, ci leghi un DataSource e usi quest'ultimo come
ListSource della tua DBLookupCombobox.
Ma hai una tabella di decodifica con le marche delle auto o
riporti la marca delle auto in ogni record ?
p.s.: non postare due volte lo stesso messaggio.


 p.s.: non postare due volte lo stesso messaggio.
Scusami, pensavo li non lo leggessi più pensando che erano solo
ringraziamenti... ;-)
Ora provo subito ciò che hai detto! Grazie!


 riporti la marca delle auto in ogni record ?
riporto la categoria (o marca per esempio) in ogni record. 


sss


 Potresti accennare qualcosa?
E' semplice: basta costruire una tabella in cui ci sia un 
campo CODICE (numerico) e un campo DESCRIZIONE (stringa).
Nella tabella principale, non riporterai piu' l'intera
descrizione, ma avrai solo un campo CODICE_MARCA che
si lega alla tabella di decodifica (in realta' puoi creare
un campo di lookup, basandoti su questo codice, in modo
che a run-time, per ogni record, hai un campo fittizio
contenente la marca come stringa).
Ti ho scritto al volo un piccolo gestionale per un parco
auto di esempio, che puoi scaricare da:
http://www24.brinkster.com/walkietalkie/parco_auto.zip


 wrote in message
a36989d4788581ceb5c...@mygate.mailgate.org...


 
http://www24.brinkster.com/walkietalkie/parco_auto.zip
Grazie per il prog., ma c'è un problema, non me lo apre correttamente (tutte
le form sono vuote!) e poi non mi funziona...
Quando tento di avviarlo dal delphi mi da: "Error:(0):RLINK32: Unsupported
16bit resource in file "uparcoauto.dfm". Bo!
Io uso il delphi 3 può essere per questo?
OS: Windows98

 Ehi immaggino sei il moderatore del NG
No, non lo sono, questo ng non e' moderato :)


 Io uso il delphi 3 può essere per questo?
Si'.
Mi dispiace, il programma e' scritto in Delphi 5.


 wrote in message
5f75a6535271c261854...@mygate.mailgate.org...
