Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Database Access 2000

22 views
Skip to first unread message

Giorgio

unread,
Nov 28, 2022, 9:34:17 PM11/28/22
to
Ho una TAdoquery che uso una prima volta col la sua SQL, normale e
collaudato codice peraltro riportato da borland stessa.
Sempre la stessa TAdoQuery la chiudo (Q.Close). Reinserisco una nuova
SQL apro la TAdoQuery e ritrovo i dati della prima SQL, visualizzati in
una tabella.
Pensavo che il Q.Close la reinizializzasse per permettere di inserire
una nuova SQL? Non e' cosi'?

Giorgio

Alberto Salvati

unread,
Nov 29, 2022, 3:47:46 AM11/29/22
to
Access...puah!
Posta il codice.

A.

Giorgio

unread,
Nov 29, 2022, 4:24:12 AM11/29/22
to
Questa e' la prima Sql:

with DBase.AdoQueryEntrate, DBase do
begin
Close;
Sql.Clear;
if RadioButton1.Checked=True then
Sql.Add('Select Sum(Valore) As Somma, Data From Entrate Where
DaElaborare=True Group By Data')
else
Sql.Add('Select Sum(Valore) As Somma, Data From Entrate '+
'Group By Data');
Open;
//
Close;
Filtered:=False;
Filter:='Data>='+QuotedStr(Ini)+' And '+'Data<='+QuotedStr(Fine);
Filtered:=True;
Open;

Poi c'e sostanzialmente ripetuto il medesimo codice ma con l'Sql diversa
ma stessa AdoQueryEntrate. Va' in errore!

Giorgio

Giorgio

unread,
Nov 29, 2022, 4:25:21 AM11/29/22
to
Il 29/11/2022 09:47, Alberto Salvati ha scritto:
Pardon non va' in errore ma non si aggiorna l'SQL e vedo in tabella i
dati della prima.

Alberto Salvati

unread,
Nov 29, 2022, 4:55:58 AM11/29/22
to
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.
0 new messages