Newsgroup: it.comp.appl.access
Titolo: Totali parziali a pie' di pagina maschera.

Con A2010.
In una maschera impostata a 'maschere continue' mi è facile mettere un conteggio di tutti i record: identificato un [campo] nell'elenco, nel pie' di pagina metto una casella di testo che ha origine controllo =Conteggio([campo]).
 
Vorrei però contare anche quanti record hanno un [campo] pieno, perché in alcuni è null, oppure che contiene un determinato valore.
Come posso fare?
 
Grazie a tutti
Riccardo Baldinotti

Salve Riccardo,
 
Barimoste ha scritto:

Conteggio già dà il numero di record dove il valore del campo non è Null.
 
Per il resto prova p.e.
 
=Abs(Sum(IsNull([campo])))
 
=Abs(Sum([campo]="pippo"))
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
Access Lobby: 
http://www.AccessDevelopers.org
 


Grazie, naturalmente funziona!
Riccardo Baldinotti

Il giorno martedì 7 luglio 2015 18:49:15 UTC+2, Karl Donaubauer ha scritto:

Per la serie: "Sempre più difficile"...
L'esempio =Abs(Sum([campo]="pippo")) me ne ha fatta venire in mente un'altra: una casella combinata [chiVoglio] in cui selezionare da una serie di nomi, e poi una casella con una formula tipo: =Abs(Conteggio([campo]=[chiVoglio])).
Peccato che non mi funzioni né il Conteggio né la Somma.
Come fare?
Grazie
Riccardo Baldinotti


Chiedo scusa se rilancio.
Mi sono ricordato che tempo fa avevo una maschera in cui un campo aveva nomi ripetuti; io volevo sapere, oltre al numero di record, quanti nomi diversi c'erano, ma non ci ero riuscito. Puoi darmi una dritta anche su questo?
Ancora grazie 
Riccardo Baldinotti

 Come fare?
 
Forse puoi usare DCount(). È più lenta ma acceta valori da controlli 
ecc. nel suo argomento WHERE. Cioè:
 
=DCount("*";"Tabella_o_Query";"Qui il filtro per considerare solo i 
record della maschera AND [campo]='" [chiVoglio] & "'")


 Mi sono ricordato che tempo fa avevo una maschera in cui un campo aveva nomi ripetuti; io volevo sapere, oltre al numero di record, quanti nomi diversi c'erano, ma non ci ero riuscito.
 
Non è facile perché un COUNT DISTINCT o DCount(Distinct...) non esiste 
in Access. Dovresti p.e. creare una query con DISTINCT o raggruppamento 
e poi effettuare un COUNT o forse ti aiuti 
http://allenbrowne.com/ser-66.html
.



Grazie di tutto.
Se DonKarl dice DCount, allora non c'è proprio di meglio! :-)
L'alternativa di usare query aggiuntive l'avevo considerata, ma dalla mia posizione di ignoranza volevo prima accertarmi che l'esperienza altrui non suggerisse altro.
Ottimo il collegamento indicato, a pelle suppongo che mi piacerà usare quel metodo. Anch'io ho provato in altre circostanze a fabbricare query al volo e mi conforta vedere che l'idea di base funziona.
Grazie ancora.
Riccardo Baldinotti


Ahimè ho una complicazione usando ECount(): il Domain è una query parametrica e da tempo sapevo che passare da codice una query del genere produce errore "Parametri insufficienti: necessario n".
 
Mi vengono due possibilità:
1) trasformare la query in q. di accodamento e così usare la tabella risultante come origine dati, sia della maschera che di ECount();
2) creare qualche Recordset da passare come parametro, ma veramente non so come fare.
 
Hai qualche suggerimento?
Grazie
Riccardo Baldinotti

 ...
 
Dipende qual'è il parametro ovvero da dove viene, da mano, da codice, da 
una maschera...?
 
Se lo puoi fornire da codice un metodo sarebbe p.e. di usare 2 query: 
Una "normale" come modello con il parametro, un'altra come "Dummy" nella 
quale scrivi il valore attuale del parametro (con un Replace() al 
Queydef.SQL), questa query usa per ECount.



Sono valori scelti in caselle combinate nell'intestazione maschera. Nella query ho cose tipo:
WHERE ((([qTutte le strutture].codice) Like [forms]![mElenco]![strRich] Or ...
 
Scusa, ma questa cosa del Replace non mi è chiara: vuoi dire, mettere in una variabile ValstrRich il valore, per esempio, di [forms]![mElenco]![strRich] e poi costruire la query con un replace del nome campo col valore della variabile?
 
Grazie

 Scusa, ma questa cosa del Replace non mi è chiara: vuoi dire, mettere in una variabile ValstrRich il valore, per esempio, di [forms]![mElenco]![strRich] e poi costruire la query con un replace del nome campo col valore della variabile?
 
Intendo ca. (air code = senza prova):
 
Dim db As DAO.Database
Dim strSQL As String
 
Set db = Currentdb
 
strSQL = db.QueryDefs("MiaBellaQuery").SQL
 
strSQL = Replace(strSQL,"[forms]![mElenco]![strRich]","PippoPallino")
 
db.QueryDefs("qryDummy").SQL = strSQL
 
?ECount("*", "qryDummy")
 
Dove qryDummy è una query salvata "di lavoro" che puoi usare per 
qualunque scopo.



Sì, ora ci sono. Intanto ho fatto delle prove e vedo la luce in fondo al tunnel.
Grazie, sempre e ripetutamente.