Newsgroup: it.comp.lang.delphi
Titolo: Quanti Indici?

Salve a tutti,
sono appena agli  inizi della programmazione con i database e mi trovo
davanti ad un dubbio amletico.
In una mia applicazione ho utilizzato un DB Paradox costituito da due
tabelle collegate in Master-Detail. La tabella Master contiene poche
decine di record, quella Detail poche centinaia (in tutto).
Ora vorrei visualizzare la tabella Detail in una DBGrid e vorrei che
fosse possibile ordinare i vari record in base ad ognuna delle colonne
che compaiono, sia in senso ascendente che in senso discendente
(cliccando sui titoli delle colonne).
Dato che per fare un ordinamento in una TTable devo avere un indice
appropriato, dovrei definire ben (5 campi * 2 versi di ordinamento)=10
indici che mi sembrano decisamente troppi (la tabella viene a
corrispondere a ben 22 file di piccole dimensioni). Quindi, secondo voi,
qual'e' la soluzione migliore?
Mi sono venute in mente le seguenti:
1) Definisco solo l'indice principale, poi creo i secondari a Run Time
solo se mi servono e li distruggo quando non mi servono piu' (mi sembra
una soluzione un po' pericolosa).
2) Uso una Query con un 'order by' per collegarmi alla tabella Detail.
Poi mi collego ad essa con la DBGrid (questo pero' mi impedisce di usare
la DBGrid per l'edit, se non sbaglio).
Ringrazio anticipatamente,
Giorgio

la DBGrid per l'edit, se non sbaglio).
la seconda che hai detto, poi imposti request live a true e puoi usare
dbgrid (e qualsiai altro componente data aware) per
l'edit/insert/delete
Ciao,
Alan Solo

Scusa, ma questo non risolve il problema iniziale, dato che dal manuale leggo
testualmente:
Restrictions on live queries
A live result set for a query against a single table or view is returned if
the query does not contain any of the following:
- DISTINCT in the SELECT clause
-  Joins (inner, outer, or UNION)
-  Aggregate functions with or without GROUP BY or HAVING clauses
-  Base tables or views that are not updatable
-  Subqueries
- ORDER BY clauses not based on an index
e io dovrei proprio usare una order by! Esistono metodi semplici per farla
funzionare ugualmente?
Ciao


funzionare ugualmente?
hai provato a farlo? Non te lo lascia effetivamente fare?
Ciao,
Alan Solo

funzionare ugualmente?
E' vero.
RequestLive a true ti consente di eseguire poche operazioni (normali
SELECT sui dati).  E' chiaro che non puoi modificare un dataset
ottenuto come risultato di una qualsivoglia aggregazione, perche' il
sistema non ha modo di risalire ai singoli record coinvolti in tale
elaborazione.  

elaborazione.  
beh, dipende dal RDMS (per un semplice order by con RDMS serio non si
hanno problemi... magari con delle join si hanno problemi,
scavalcabile (penso) con delle viste)
Ciao,
Alan Solo

 Io con BDE+InterBase non ho mai avuto probemi...
Non ho usato Interbase, lo ritengo superfluo per una semplice tabella locale.
Comunque grazie per la risposta.
Ciao,
Giorgio


Ciao!
Andrea

Io ti consiglio di usare un TClientDataset.
In questo modo puoi ordinare i dati dopo averli caricati dal db nel
modo che vuoi tu, puoi editarli ecc...
Inoltre questo modo di accesso alle basi dati è quello che diventerà
"standard" in Delhpi 6 con dbExpress  (anche se il BDE non verrà
cancellato ....)
Ciao, Rocco
Rocco Barbaresco:
Herrare Humanum Est,
Perseverare Ovest ....
(By Fichi D'India)


Si', con l'oggetto TUpdateSQL. L'help spiega bene a cosa serve. :)
Ciao
Daigo