Domanda

Ho una semplice Delphi (2007) procedura che dato un TDataSet ed una (sotto) elenco dei campi restituisce un nuovo TClientDataSet con Valori distinti dalla data TDataSet.

Questo funziona abbastanza bene.

Nel mio proc ho usato l'indice TClientDataSet per popolare i valori distinti. E 'stato facile e veloce.

Il problema è che il supporto indice TClientDataSet a massimo 16 i campi. Se si aggiungono più di loro che sarà silenziosamente ignorati.

ho bisogno di più di 16 campi nel set di dati (e quindi nell'indice).

C'è qualche soluzione? Qualche trucco? Forse qualche libreria open source da utilizzare come soluzione alternativa?

Sono offline lavorando quindi devo farlo in memoria. La dimensione del set di dati non è enorme

È stato utile?

Soluzione

Se si ha bisogno di ottenere le occorrenze distinte di record in più di 16 campi e si desidera utilizzare un indice per mantenere le cose velocemente si avrà bisogno di prendere in considerazione concatenazione di alcuni di questi campi. Ad esempio:

Prova Campo Campo 1 Campo 2 Campo 3 Campo 4 Mela ~ Banana ~ ~ Carota ciambella Mela Banana Carota ciambella

Create voi indice sul campo di prova.

Potrebbe essere necessario per creare più campi di prova se la lunghezza totale delle vostre altri campi supera la lunghezza massima di un campo di testo.

Altri suggerimenti

Si potrebbe scambiare la TClientDataSet per un TjvCsvDataset da JVCL. Può essere usato come un puro "in memoria di dati" di sostituzione per i set di dati del cliente, senza la necessità di leggere o scrivere qualsiasi file CSV sul disco.

Non è abbastanza come client set di dati nel design. Non sono sicuro di quello che beneficiare tutti questi "indici" in un client di set di dati offerta, diverso da quello che non si può avere un campo senza una definizione di indice, ma nel caso che questo è tutto ciò che serve, è possibile impostare il TJvCsvDataSet proprietà .FieldDef = 'Field1, Campo2, ..... campoN' e quindi aprire il set di dati e aggiungere tante righe che desideri per il set di dati. Si è praticamente limitato alla quantità di memoria che è possibile affrontare in un processo a 32 bit.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top