PDA

Visualizza la versione completa : Access 2000 e contare i record


fidello
12-10-2002, 14:58
Una piccola premessa sul db che ho creato per meglio farmi capire su dove son bloccato. La tabella1 contine tra i vari campi uno per la data, inserita automaticamente, e uno che contine il corso al quale la persona si iscrive( 1°-5°anno). Ho bisogno di sapere il n. degli iscritti al 1, al 2 e così via ed eventualmente scrivere questi risultati in una tabella. Questo è per fini statistici. Ho creato una query che prende solo il corso e dal campo data l'anno e lanciandola mi mostra ciò che voglio, ma non nessuna idea su come poter avanti. Count restituisce il totale dei record della tabella e non credo possa avere dei criteri.
Idee?

Grazie a rutti

fred
12-10-2002, 18:27
Non so se ho capito bene, ma mi sebra che da una tabella vuoi crearne altre rispettivamente una per ogni corso???

Comunque, mi cimento:
Crea cinque tabelle uguali a quella che già hai (gli stessi campi con le stesse proprietà), una per ogni anno. Poi crei cinque query di accodamento per inserire i dati nelle rispettive tabelle. Le query di accodamento sono simili a quelle di selezione dove oltre a specificare un criterio puoi specificare la tabella di destinazione.
Per lanciare le cinque query puoi creare una semplice macro.
A questo punto avrai diviso i campi.

Spero di eserti stato di aiuto.

fidello
12-10-2002, 22:16
Non mi sarò espresso bene,
io vorrei saper quanti sono quelli del 1 anno, quanti del 2,etc, prendendo questi dati dalla mia tabella principale. Usando =count(*) ottengo il totale dei record in una tabella, ma ciò non mi serve

Bye

fred
13-10-2002, 02:13
Dovresti creare un modulo e contare manualmente i campi.
Ex:


Public Sub Conta()

Dim rst As ADODB.Recordset
Dim Corso1, Corso2, Corso3, Corso4, Corso5 As Integer

'Inizializza le variabili
Corso1 = 0
Corso2 = 0
Corso3 = 0
Corso4 = 0
Corso5 = 0

Set rst = New ADODB.Recordset
rst.Open "nometabella", Application.CurrentProject.Connection, adOpenKeyset, adLockPessimistic
rst.MoveFirst

With rst
Do While Not .EOF
If rst(indicedelcampocorso) = 1 Then Corso1 = Corso1 + 1
If rst(indicedelcampocorso) = 2 Then Corso1 = Corso2 + 1
If rst(indicedelcampocorso) = 3 Then Corso1 = Corso3 + 1
If rst(indicedelcampocorso) = 4 Then Corso1 = Corso4 + 1
If rst(indicedelcampocorso) = 5 Then Corso1 = Corso5 + 1
.MoveNext
Loop
End With

End Sub


nometabella==> la tabella a cui fai riferimento
indicedelcampocorso==> deve essere la posizione del campo nella tabella. Ricorada che il primo campo ha indice zero.

Il codice non è dei migliori in quanto è buttato lì in questo momento.Alla fine le variabili Corsox conterranno il numero di iscritti al rispettivo corso.

ladyBlu
13-10-2002, 18:50
Originariamente inviato da fidello
Non mi sarò espresso bene,
io vorrei saper quanti sono quelli del 1 anno, quanti del 2,etc, prendendo questi dati dalla mia tabella principale. Usando =count(*) ottengo il totale dei record in una tabella, ma ciò non mi serve

Bye
Ciao.
Dunque io ho fatto una prova su un mio db. Ho una tabella in cui è presente un campo di testo Anno che può avere ovviamente valori diversi (ad es. 2000,2003,2001,2002,ecc...).
Ho provato a fare una query che mi CONTASSE tutti i record corrispondenti all'anno 2001 e il filtro sul Count() non l'ho potuto fare.
Così ho fatto una prova, che ha dato risultati positivi.
Ho inserito un secondo campo nella mia query che ho chiamato Num e qui ho inserito il Count, mentre nel campo Anno, con filtro applicato, ho lasciato Raggruppamento. Ha funzionato.
Ecco la stringa sql di select:


SELECT Anno, Count(Anno) AS Num
FROM TBProva
GROUP BY Anno
HAVING (((Anno)="2001"))
ORDER BY Anno


spero che questa soluzione sia utile per le tue esigenze.

:ciauz: :ciauz: :ciauz:

Loading