Newsgroup: it.comp.appl.access
Titolo: Conteggio campi maschera con stesso valore

Salve,
ho una query costruita su 13 tabelle e una query. In ogni record, tra gli altri campi, c'è un campo con il nome di un animale (sono insetti). 
 
Nella maschera che ho creato su questa query ho già una casella di testo che mi dice quanti animali ho per ogni specie per cui, ad es., quando sono sul record dell'insetto ape, la casella di testo mi dice quante api ho in totale e e mi dà questo dato ogni volta che sono su un record ape (posso avere in collezione molte api). Ho fatto questo con una query di raggruppamento/conteggio.
 
Vorrei che nella maschera ci fossero due altre caselle testo - una "maschi" e una "femmine" - che mi conteggino, per ogni specie/record, appunto quanti maschi e quante femmine ho in collezione.
Ho provato per 3 ore con le query raggruppamento/conteggio come avevo fatto per il totale numero specie, ma non ci sono riuscito peechè, ho poi dedotto, non è la stessa cosa.
 
Grazie per un eventuale aiuto.
 
Daniele


Ciao,
che significa non è la stessa cosa?
 
In tabella inserisci un campo magari visualizzando il controllo come casella combinata in modo da non commettere errori di scrittura durante la digitazione.
 
In "Tipo origine riga" andrai a sceglierti "Elenco valori" ed in "Origine riga" andrai a scrivere Maschi;Femmine (con il punto e virgola come sta scritto).
 
In raggruppamento query andrai a scegliere Conteggio in modo da contare quanti maschi e quante femmine sono state inserite.
Vladimiro


Avevo già fatto esattamente come hai detto tu, compresa la query di raggruppamento. La query infatti raggruppa, sul totale animali, quanti maschi e femmine ho ma io lo voglio sapere per ogni record (per ogni animale) e non in totale. 
Daniele

 Vladimiro
 
Grazie Vladimiro,
ho cercato di seguire il tuo ragionamento circa il primo metodo ma la mia struttura non è come ne tuo esempio. Io ho una tabella soltanto che ha solo la specie (non so che intendi per tipo razza) ed il sesso. Potrei spiegarti com'è strutturato il mio progetto ma forse capiresti meglio se te lo inviassi, che ne pensi ? pesa circa 27 MB.
 
Circa il secondo metodo, il DCount mi ha dato uno spunto di ricerca. Il primo argomento è il campo dove devo conteggiare ed il secondo è il dominio. Sul terzo posso mettere dei criteri di ricerca tipo "like". Devo però mettere in relazione due campi che ho nella maschera mentre il primo argomento ne contempla uno solo (si potrà mettere in relazione anche il secondo con qualcosa come IIF ?).
 
Dimmi tu..
 
Grazie.


Ciao, 
intanto 15 tabelle  più una query mi pare un tantino esagerato in quanto Access ha la possibilità di fare molte cose solo con due o al massimo tre tabelle... ma non voglio entrare nel merito della tua scelta. 
 
Veniamo a noi con un esempio: 
 
Tabella1 
Id(chiave primaria) 
Razza 
 
Id chiave primaria relazionata 1 -> molti con la chiave esterna di Tabella2 
Id(chiave primaria) 
Id_Tabella1 (chiave esterna) 
Tipo_Razza 
Genere_Tipo_Razza 
 
Nel momento in cui ti costruisci una query con totali: 
1)volendo vedere quante razze hai, devi lasciare in raggruppamento record solo il campo Razza più un nuovo campo dove ci sarà il conteggio del campo Razza. 
 
2)volendo vedere oltre alle razze, anche tutti coloro che appartengono alle diverse razze, devi raggruppare il campo razza, il campo Tipo_Razza ed un nuovo campo dove ci sarà il conteggio del Tipo_Razza. 
 
3)infine, se vuoi vedere il genere appartenente ad ogni Tipo_Razza, devi raggruppare Razza, Tipo_Razza, Genere_Razza ed un nuovo campo dove andrai a conteggiarti il Genere_Tipo_Razza. 
 
Detto ciò, hai un'altra possibilità, cioè mettere mano alla funzione DCount. 
 
1)per vedere solo il conteggio di Razza, nell'origine controllo di una casella di testo della MASCHERA andrai ad inserire: 
=Dcount("Razza";""Tabella1";) 
 
2)per vedere il Genere_Tipo_Razza appartenente al Tipo_Razza di ogni singola Razza, nell'origine controllo di una casella di testo questa volta della SOTTOMASCHERA andrai ad inserire: 
=DCount("Genere_Tipo_Razza";"Tabella2";"Id_Esterno=" & [Parent]![Id] & " And Tipo_Razza='" & Replace([Tipo_Razza];"'";"''") & "'") 
 
Da notare che essendo il campo Id di tipo numerico non ha bisogno delle doppie virgolette come un campo di tipo testo. 
 
A questo punto scegli tu come è meglio fare, è ovvio che se vai a sceglierti il Genere_Tipo_Razza solo con Razza scarterai a priori di che tipo sono le razze e ti ritroverai punto e a capo.
Vladimiro 


Non so se questa correzione l'hai fatta prima o dopo il mio ultimo post.. Il quale vale ancora :)
Ciao.


Ho provato con DCount e sono giunto ad avere il risultato di quanti maschi e quante femmine ho, però in totale e non per ogni specie. La formula che funziona in tal senso è questa: 
 
PER IL TOTALE MASCHI
=DCount("Subspecies";"010_Esemplare";"[Sesso] = 'M' ")
 
PER IL TOTALE FEMMINE
=DCount("Subspecies";"010_Esemplare";"[Sesso] = 'F' ")
 
 
Il passo successivo è sapere, per ogni subspecies, ossia per ogni record, quanti maschi e quante femmine ho.
 
Credi che si possa continuare con DCount o meglio con VBA ?
 
Grazie.

 Circa il secondo metodo, il DCount mi ha dato uno spunto di ricerca. Il primo argomento è il campo dove devo conteggiare ed il secondo è il dominio. Sul terzo posso mettere dei criteri di ricerca tipo "like". Devo però mettere in relazione due campi che ho nella maschera mentre il primo argomento ne contempla uno solo (si potrà mettere in relazione anche il secondo con qualcosa come IIF ?).
 
Non credo di aver capito quello che chiedi, forse faccio prima a spiegarti il codice:
=DCount("Genere_Tipo_Razza";"Tabella2";"Id_Esterno=" & [Parent]![Id] & " And Tipo_Razza='" & Replace([Tipo_Razza];"'";"''") & "'")
 
In Tabella2 mi devi conteggiare il Genere_Tipo_Razza che ha l'Id_Esterno relazionato (cioè uguale) a questo Id che si trova nella maschera principale e il Tipo_Razza uguale a questo Tipo_Razza che si trova in questo stesso record della sottomaschera 
 
Vladimiro


Non siamo sincronizzati :-)
Rispondi prima all'altro post.
Vladimiro


Vladimiro,
non credo di poter seguire il tuo codice perchè tu presupponi 2 tabelle mentre io ho una sola tabella dove c'è sia la specie (o tipo_Razza credo) sia il sesso (che tu chiami genere).
 
Circa i file da inviarti, intendevo anch'io un file in condivisione. Il link che mi hai segnalato mi rimanda a onedrive della MIcrosoft, va bene lo stesso? Se si domani ti invio il DB con l'essenziale.
 
Grazie.

 Grazie.
 
Prego
Vladimiro


Capisco che avere una tabella o due non cambia nulla ma - per me - il problema è adattare il tuo codice che presume due tabelle con il mio caso ad una tabella. Me lo potresti adattare ?
Domani ti invio il DB.
Ciao.


Ciao,
puoi farmi subito subito un esempio concreto di nome di tabella, nomi di campi coinvolti e qualche dato inserito?
Vladimiro


Ho una query costruita su 13 tabelle e 2 query. Su questa query ho costruito la maschera finale sulla quale visualizzo la mia collezione entomologica di coleotteri.
Ogni record ha tanti dati tra cui, quelli imputati, sesso e subspecie (ossia la specie dell'insetto). Io devo avere per ogni record, ossia per ogni specie il numero di maschi e femmine (quindi 2 caselle di testo) e possono esserci più record aventi la stessa specie.
Quindi la query e di conseguenza la maschera ha (ti metto solo i dati interessati):
record--specie-sesso
record1-zebra--maschio
record2-zebra--maschio
record3-zebra--femmina
record4-leone--maschio
record5-leone--femmina
record6-leone--femmina
record7-tigre--maschio
record8-tigre--femmina
 
Quindi per ogni record devo avere 2 caselle di testo nella maschera che mi dicano: su record1: 2 maschi / 1 femmine - su record2 2 maschi / 1 femmine - su record3 2 maschi / 1 femmine - su record4 1 maschio / 2 femmine e così via.
 
Ho fatto veloce e spero di aver spiegato bene..
 
Ciao.


Scusami, vedendo il prospetto rispetto a quello che chiedi di ottenere, ad esempio su record1:  2 maschi / 1 femmine
come faccio a capire?
Non è il caso che vicino ai record ci metti le due caselle di testo con il risultato che vorresti ottenere?
Vladimiro


Scusa se non riesco a spiegarmi meglio :(
Quel prospetto sono i campi della query. E' nella maschera che voglio 2 caselle di testo che mi dicano quanti maschi e quante femmine ho in maniera automatica.
Tu dici di metterli nella query? e come faccio a farglieli calcolare ?
Daniele


Ciao,
penso di aver capito.
Per il momento mi viene in mente solo questo.
Hai bisogno di due query, una che ti conteggi i maschi e una che ti conteggi le femmine naturalmente rispetto alla specie.
 
I° query chiamata Maschi_Query
SELECT Tabella1.Specie, Tabella1.Sesso, Count(Tabella1.Sesso) AS M
FROM Tabella1
GROUP BY Tabella1.Specie, Tabella1.Sesso
HAVING (((Tabella1.Sesso)="Maschio"));
 
II° query chiamata Femmine_Query:
SELECT Tabella1.Specie, Tabella1.Sesso, Count(Tabella1.Sesso) AS F
FROM Tabella1
GROUP BY Tabella1.Specie, Tabella1.Sesso
HAVING (((Tabella1.Sesso)="Femmina"));
 
a questo punto nell'origine controllo delle due caselle di testo inserisci:
1)=DLookUp("M";"Maschi_Query";"Specie='" & Replace([Specie];"'";"''") & "'")
 
2)=DLookUp("F";"Femmine_Query";"Specie='" & Replace([Specie];"'";"''") & "'")
 
Vladimiro


Grazie Vladimiro, super veloce..
Domani provo. Ma con del codice da inserire nella maschera non credi si possa far qualcosa?
Daniele


Ciao,
le due funzioni Dlookup vanno inserite sempre nella struttura query della maschera poi richiamate nell'origine controllo delle caselle di testo della maschera stessa, in modo che la loro visualizzazione sia istantanea.
Buonanotte
Vladimiro


Vladimiro,
questo è il link per scaricare il mio DB: 
 
https://drive.google.com/file/d/0B7bmgzPm7t9YV1ZpZUQ3NmVaM1k/view?usp=sharing
 
 
Ho cercato di riudurlo al minimo.
 
Ho provato tutto il giorno ma a parte le 2 query "Femmine_query" e "Maschi_query" che mi identificano per ogni record quante specie ho, non sono riuscito a far altro. 
Inserendole nella query7 che è la query riassuntiva di tutte le maschere, o mi vengono zero record oppure si moltiplicano.
Ho provato con vari escamotage ma non sono giunto a nulla.
 
Se hai voglia di guardarlo devo dirti un paio di cose.
Come vedrai, Family, Subfamily etc. sono una scala gerarchica tassonomica.
L'ultima è la subspecie ma non sempre questa ha un nome e spesso quindi il relativo campo è vuoto ma ha un numero contatore legato alla sua gerarchia appena superiore che è la specie. Quest'ultima ha sempre un nome.
 
Nelle maschere la form "010_Esemplare" è quella che serve per l'inserimento degli esemplari. La form "Query7" è la visualizzazione finale in bella della collezione.
Nella form "010_Esemplare" il campo subspecies l'ho collegato cal campo IDSpecies (vedi origine controllo dei campi nella maschera) che non ha corrispondenza nella tabella, dagli un'occhiata, capirai subito. Ho fato ciò perchè altrimenti non avrei saputo associare species e subspecies.
 
Dai un'occhiata se vuoi, ovviamente sono a disposizione.
Grazie.
DAniele

 DAniele
 
Vladimiro


Scusa,
ho dimenticato di dirti quello che in realtà ti avevo già consigliato e cioè che la funzione Dlookup conviene inserirla in struttura query, per cui, sempre nella query dell'ultima maschera inserisci i seguenti campi:
M: DLookUp("M";"Maschi_Query";"IDSubspecies=" & [010_Esemplare].[IDSubspecies])
 
F: DLookUp("F";"Femmine_Query";"IDSubspecies=" & [010_Esemplare].[IDSubspecies])
 
e nell'origine controllo delle caselle di testo le richiami con M e F
Di nuovo
Vladimiro


Grazie Vladimiro.
1) hai quindi modificato il DataBase ma il google drive c'è sempre quello vecchio?!
2) Non capisco che hai dovuto aggiungere un ulteriore campo IDSubspecies alla query7 (?) .. e come fai a relazionare un campo con le 2 query Maschi_query e Femmine_query ? - se potresti ricondividere il Db su google drive forse capirei meglio.
 
Daniele.


Scusa la mia ignoranza.. circa la funzione DLookUp dove la devo mettere precisamente in struttura query? immagino creando due nuove colonne nella query?
Daniele


 
Scusami Vladimiro tu non sei nuovo del NG...dovresti ricordarti
quanto, anticamente, si parlava del quoting ....
:D
 
buona domenica
ciao
Daniele
 
 
--- news://
freenews.netfront.net/
 - complaints: 
ne...@netfront.net
 ---

 quanto, anticamente, si parlava del quoting ....
 
Ciao Daniele,
posso anche accettare le critiche, però le dovrei anche capire :-)
 
Se ti riferisci all'ultimo post, secondo te la correzione su un MIO consiglio dove l'avrei dovuta scrivere?
Guarda un po' e poi se ti va spiegami:
 
https://onedrive.live.com/?id=DFDFB766AA86F9D8%21304&cid=DFDFB766AA86F9D8&group=0
 
 
Vladimiro



Vladimiro,
non vorrei ti riferissi a me per il discorso del quoting - io sono BRA - sempre Daniele ma un altro..  ;)
Tornando al DB, nel link che hai messo dice che l'elemento non esiste più o non è disponibile, non so se era il mio DB rivisto o qualcosa che riguardava il quoting boh..
Daniele BRA (e non CIDI)

 Daniele.
 
L'origine record della maschera query7 è una query chiamata query7
(vedi perché è importante dare i nomi giusti agli oggetti ed agli eventi?... pensa, ti sei confuso pure tu!!!)
 
Piccolo consiglio:
riguardo le query, ci sono due possibilità, costruirla direttamente in origine record della maschera o del report, oppure crearla direttamente nell'oggetto query e richiamarla in origine record sia nella maschera che nel report. In questo caso però, un'eventuale modifica si rifletterà contemporaneamente sia sulla maschera che sul report.
 
Allora,
hai creato le due query:
Maschi_Query
Femmine_Query
 
Siccome il campo IDSubspecies proviene dalla tabella 010_Esemplare e non è altro che una casella combinata con tipo dati numerico e siccome nella query7 formata anche dalla tabella 010_Esemplare mancava lo stesso campo IDSubspecies, non ho fatto altro che aggiungerlo.
 
In più ho aggiunto ulteriori due campi in modo che, tramite la funzione Dlookup, mi richiamassero i due campi M e F delle due query sopra citate (Maschi_Query e Femmine_Query).
I due campi sono:
 
M: DLookUp("M";"Maschi_Query";"IDSubspecies=" & [010_Esemplare].[IDSubspecies]) 
 
F: DLookUp("F";"Femmine_Query";"IDSubspecies=" & [010_Esemplare].
[IDSubspecies]) 
 
Ho salvato la query, ho aggiunto due caselle di testo alla maschera query7 con origine controllo M e F
Vladimiro


Ciao,
non preoccuparti, lo so che non sei Daniele (CIDI)
:-)
Vladimiro


Caro conte Vlad (permettimi questa confidenza :), finalmente funzionaaaaaaaa !!
Grazie davvero tanto della tua pazienza e competenza.
 
Circa il tuo consiglio di scaricarmi il tuo esempio "Sincronizza tre combo associate", l'ho fatto ed ho ricalcato esattamente il tuo esempio sulla mia maschera 010_esemplare per sincronizzare le caselle di testo "IDSpecies" e IDSubspecies" ma non ci sono riuscito. Come posso fare per adattare il tuo esempio alla mia maschera?
 
Ho ancora un altro quesito ed aprirò presto un altro thread.
 
Grazie, grazie ancora.
 
Daniele

 
https://onedrive.live.com/?id=DFDFB766AA86F9D8%21304&cid=DFDFB766AA86F9D8&group=0
 
Elemento non esiste o non è disponibile
 
ciao Vladimiro
 
buona domenica


 Daniele
 
buona domenica anche a te
Vladimiro

 Circa il tuo consiglio di scaricarmi il tuo esempio "Sincronizza tre combo associate", l'ho fatto ed ho ricalcato esattamente il tuo esempio sulla mia maschera 010_esemplare per sincronizzare le caselle di testo "IDSpecies" e IDSubspecies" ma non ci sono riuscito. Come posso fare per adattare il tuo esempio alla mia maschera?
 
Ciao,
anche se ti servirà a poco in quanto la casella combinata IDSubspecies è già sincronizzata con la casella combinata IDSpecies e non può accettare manualmente inserimenti alfanumerici.
 
Fai così, giusto per capire il funzionamento; dalla combo IDSubspecies elimina quello che sta scritto in origine controllo e in origine riga e sempre nella stessa combo, sul formato porta a 1 il numero colonne e la sua larghezza a 4.
 
Fatto ciò, su dopo aggiornamento della combo IDSpecies inserisci la seguente routine:
Me!IDSubspecies.RowSource = "SELECT Subspecies,IDSpecies FROM 007_Subspecies WHERE IDSpecies = " _
& Me!IDSpecies & " GROUP BY Subspecies, IDSpecies" & " ORDER BY Subspecies;"
Me!IDSubspecies.SetFocus
Me!IDSubspecies.Dropdown
 
Vladimiro
 
 


Scusa dimenticavo di dirti che l'esempio che ti ho fatto ha più efficacia se inserisci qualche altro dato.
 
Apri la tabella 006_Species, e fai clic sulla crocetta a sinistra del primo record dove c'è la specie aedilis aggiungendo tre o quattro nomi di sub-specie, così per la specie del secondo record e così via.
 
A questo punto puoi aprire la maschera con le combo associate e scegliendo le specie suddette vedrai sincronizzate anche le sub-specie inserite.
Di nuovo
Vladimiro

Il giorno domenica 8 novembre 2015 12:04:11 UTC+1, 
vlad...@libero.it
 ha scritto:

Ciao,
ho provato a fare come mi hai detto. Funziona anche così. Ad ogni species scelta mi propone il campo della subspecies relativa ed univoca.
Nella tabella 010_Esemplare però non mi scrive il nome nel campo specie. io mi preoccupavo di questo nella mia soluzione. Non so se la mia preoccupazione era fondata o va bene lo stesso come avevo fatto io o se comunque è più esatto come hai fatto tu nell'esempio.
Daniele

 Daniele
Ciao,
come ti ripeto, la combo della Subspecies non mantiene il dato in quanto non è associata a nessuna tabella.
 
Purtroppo il campo della Subspecies che si trova in tabella è una combo con tipo dati numerico per cui non saprei come aiutarti se non andando a modificare il suddetto campo.
Vladimiro
 


Ok lascerò tutto com'è tanto l'importante è che il valore di species venga riportato nella maschera finale.
Daniele