Salve a tutti e ringraziamenti anticipati a chi mi risponderà ;-)..
Sto lavorando con FIREBIRD e DELPHI utilizzando i componenti DBEXPRESS, DATACCESS E DATACONTROL.
Ho visualizzato dei dati presenti nel CLIENTDATASET in una DBGRID e fin qui tutto ok.
Il problema è che devo visualizzare i dati nell’ordine di inserimento non in ordine alfabetico o di chiave.
All’inizio avevo pensato di utilizzare come campo di ordinamento la chiave primaria ma questo non andava bene siccome se si desiderava inserire un nuovo record, per esempio, in mezzo alla tabella l’ordinamento saltava (la chiave primaria è intera e si incrementa ad ogni inserimento).
Avevo allora pensato di inserire nella succitata tabella un ulteriore campo POS; in pratica dopo aver inserito tutti i record che mi servivano, all’interno di un ciclo prendevo il singolo dataset ed inserivo il corrispondente valore di POS così da avere l’ordine di inserimento voluto.
Per capirci:
For Pos:=0 to MioClientDATASET.RecordCount do begin
MioClientDATASET.Edit;
MioClientDATASET.FieldByName('POS').AsInteger:=Pos ;
MioClientDATASET.Post;
MioClientDATASET.Next;
End;
Mi sono creato un INDICE nel CLIENTDATASET così da avere l’ordinamento in riferimento al campo POS.
La cosa effettivamente funziona (non so se esiste un altro metodo piu veloce che a me sfugge), ma il problema è un altro:
Se in un secondo momento riprendo quella data tabella e la modifico, succede che i miei dati da inserire seguono l’ordine dell’ INDICE e vanno ad inserirsi in testa alla tabella (Il ciclo FOR lo utilizzo dopo aver effettuato tutti gli inserimenti e le modifiche, per cui all’inizio il campo POS ha valore nullo).
Se nel momento dell’inserimento tolgo l’indice dichiarando:
MioClientDATASET.IndexName:=’’;
Allora la tabella cambia l’ordinamento visualizzandomi i dati secondo la chiave primaria e tutto mi sballa.
Quello che vorrei è avere sempre la tabella nell’ordine di inserimento, modificarla come voglio (Inserendo i dati dove voglio, in coda, in testa o in qualsiasi posizione della tabella) e mantenere l’ordinamento voluto.
Potete aiutarmi? Se sono fuori strada ed ho scritto codice inutile correggetemi….
Vi ringrazio per la risposta
Buona giornata![]()