Domanda

Sto usando XE6 con FireDac.Ho un fdmemtable con itemvals come campo ftfloat.Vorrei usare la funzione Aggregati della somma (articoli articoli) ma vorrei solo ItemVals con un valore> 0 da aggiungere. Itemvals è un ftfloat ma per quanto posso trovare, non posso assegnare un valore nullo a un galleggiante.Quindi sto usando un valore di -1 per indicare (a me) un valore nullo.Ho provato Sum (ItemVals)> 0 Ma restituisce solo un vero.Qualcuno può indicarmi nella giusta direzione?Grazie.

È stato utile?

Soluzione

È possibile utilizzare extended expression syntax e scrivi per la tua condizione di espressione SUM Con IIF e restituire il valore del campo quando è maggiore di 0 e 0 quando è inferiore o uguale a 0. Come in questo modo:

Aggregate.Expression := 'SUM(IIF(ItemVals > 0, ItemVals, 0))';
.

Ma torna alla radice della tua domanda. Hai detto, che non puoi trovare un modo per assegnare un valore nullo a un campo di tipo di dati ftFloat. La mia ipotesi è che stai assegnando valori in questo modo:

FDMemTable.FieldByName('ItemVals').AsFloat := 1.23;
.

Sì, in questo modo non puoi davvero assegnare un valore nullo, ma puoi farlo attraverso il Value Proprietà del campo, ad esempio:

FDMemTable.FieldByName('ItemVals').Value := NULL;
.

Assegnazione del valore nullo anziché -1 descriverà molto meglio l'intenzione di nessun valore e semplifica la tua espressione aggregata Torna a SUM(ItemVals).

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