Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: ffabio - Gennaio 11, 2012, 12:46:31 pm
-
Ciao a tutti, qualcuno sa come si possono gestire tdbsimple combobox a cascata.
la classica regione - provincia - cittą ???
scelgo prima la regione poi da quella la provincia ecc ????
se scelgo subito la cittą vorrei recuperare subito regione - provincia .
qualcuno ha gią affrontato questo problema ???
grazie
-
Ciao, TDBSimpleCombobox e TDBSimpleListBox sono mie creature 8)
Per fare quello che dici tu devi usare 3 TDBSimpleCombobox e devi gestire l'evento sulla evento OnChange
-
carine :-)) quindi se ho problemi chiedo a te :-))))
-
Ok ;)
-
Ti dico la mia idea, non e' detto che sia la mgliore, ma funziona.
Perchč complicarsi la vita e complicarla a chi utilizza il software, con scelte multiple , basta creare nelle tabelle del DB dei campi ID che identificano in modo univoco una data citta'.
del resto una Cittą non puo' appartenere a piu' provincie o regioni:
es:
TB_REGIONI
ID_REGIONE: Integer
REGIONE:Varchar
...
TB_CITTA
ID_CITTA: integer
ID_REGIONE: integer
CITTA: Varchar
PROVINCIA: Varchar
... etc
cosi' per ogni citta' avrai anche ID_REGIONE
ti basta creare una Query che estragga anche REGIONE, cosi' per ogni citta' che
scorri/selezioni avrai la rispettiva appartenenza.
Fai visualizzare le Cittą, ed avrai le regioni di appartenenza (1 sola query)
Se invece Parti dalla Regione, devi fare 3 Query .
Ricorda di mettere il ProviderFlags dei campi in Join = False (se usi TSQLQuery), in caso
contrario durente le opeazioni di Inserimento/Variazione avrai errore quando esegui la Query.
SELECT TB_COMUNI.*,
USR.REGIONE AS NOMEREGIONE,
FROM TB_COMUNI LEFT OUTER JOIN TB_REGIONI AS USR ON TB_COMUNI.ID_REGIONE=USR.ID_REGIONE
WHERE TB_COMUNI.ID_COMUNE >= 1
con questa query estrai il nome regione dalla Tabella Regioni, e per ogni citta avrai sempre il nome regione nel
campo NOMEREGIONE
questo sistema di Query lo puoi estendere a piacimento, pensa ad un elenco clienti, dove ti possono servire anche le informazioni sulla Banca d'Appoggio, metti sempre in relazione le Tabelle che ti servono;
se devi interrogare piu' volte la stessa Tabelle (TB_COMUNI), non potrai usare lo stesso suffisso USR_COM
LEFT OUTER JOIN TB_COMUNI AS USR_COM ON TB_CLIENTI.ID_COMUNE=USR_COM.ID_COMUNE
ma ti basta cambiare nome USR_COM1, per non incorrere in errore eseguendo la query
LEFT OUTER JOIN TB_COMUNI AS USR_COM1 ON TB_CLIENTI.ID_CITTABANCA=USR_COM1.ID_COMUNE
SELECT TB_CLIENTI.*,
USR_COM.COMUNE AS NOMECITTA,
USR_COM.CAP AS CAPCITTA,
USR_COM.PROVINCIA AS PROVCITTA,
USR_BAN.BANCA AS RAGSOCBANCA,
USR_BAN.AGENZIA AS AGENZIABANCA,
USR_BAN.ABI AS ABIBANCA,
USR_BAN.CAB AS CABBANCA,
USR_PAG.DESCRIZIONE AS PAGAMENTO,
USR_COM1.COMUNE AS CITTABANCA
FROM TB_CLIENTI
LEFT OUTER JOIN TB_COMUNI AS USR_COM ON TB_CLIENTI.ID_COMUNE=USR_COM.ID_COMUNE
LEFT OUTER JOIN TB_BANCHE AS USR_BAN ON TB_CLIENTI.ID_BANCAAPPOGGIO=USR_BAN.ID_BANCA
LEFT OUTER JOIN TB_MODALITAPAGAMENTO AS USR_PAG ON TB_CLIENTI.ID_MODALITAPAGAMENTO=USR_PAG.ID_MODALITAPAGAMENTO
LEFT OUTER JOIN TB_COMUNI AS USR_COM1 ON TB_CLIENTI.ID_CITTABANCA=USR_COM1.ID_COMUNE