Per prima cosa, butta via il with che è dannoso e lassativo, ma se è nidificato è da malati di mente.
Inoltre, mettere i campi senza il qualificatore di tabella non va bene.
Non ricordo le sintassi di Access, ma invece di SUM(Valore) andrebbe scritto SUM(Entrate.Valore) etc etc...
Quindi:
var
sqlstatement: string;
...
if RadioButton1.Checked then
sqlstatement := 'Select Sum(Entrate.Valore) As Somma, Entrate.Data From Entrate Where Entrate.DaElaborare=True Group ByEntrate.Data')
else
sqlstatement := 'Select Sum(Entrate.Valore) As Somma, Entrate.Data From Entrate Group ByEntrate.Data';
// FANCULO IL WITH: ESPLICITA L'OGGETTO ADOQUERY!
adoquery.close;
adoquery.Sql.Clear;
adoquery.Sql.Add(sqlstatement);
adoquery.Open;
Questa cosa qua sotto per me non ha alcun senso:
Open;
//
Close;
Filtered:=False;
Filter:='Data>='+QuotedStr(Ini)+' And '+'Data<='+QuotedStr(Fine);
Filtered:=True;
Open;
Prima apri (latenza...).
Poi chiudi.
Poi metti il filtro.
Poi riapri (latenza).
Non so come Access FINGE di funzionare, ma credo tu possa impostare il filtro (puah!) senza chiudere la query.
A.