Metodo x elaborare statistiche

di il
13 risposte

Metodo x elaborare statistiche

Realizzo una videata con circa 200 dati interrogando una tabella anagrafica
Utilizzo il comando DCOUNT memorizzando ogni risultato in caselle di testo
Ma l'interrogazione effettuata in rete locale e' piuttosto lenta...
evidentemente perche' per ogni dato utilizzo il conteggio
Private Sub CalcolAttivi()

' TEORIE
' conta AM e AMA
Me.txtFro0104 = DCount("*", "Anagrafe", "CORSO = 'AM' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0105 = DCount("*", "Anagrafe", "CORSO = 'AM' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0106 = Me.txtFro0104 + Me.txtFro0105
Me.txtFro0107 = DCount("*", "Anagrafe", "CORSO = 'AM' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0108 = DCount("*", "Anagrafe", "CORSO = 'AM' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0109 = Me.txtFro0107 + Me.txtFro0108

Me.txtFro0204 = DCount("*", "Anagrafe", "CORSO = 'AMA' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0205 = DCount("*", "Anagrafe", "CORSO = 'AMA' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0206 = Me.txtFro0204 + Me.txtFro0205
Me.txtFro0207 = DCount("*", "Anagrafe", "CORSO = 'AMA' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0208 = DCount("*", "Anagrafe", "CORSO = 'AMA' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0209 = Me.txtFro0207 + Me.txtFro0208

Me.txtFro0304 = DCount("*", "Anagrafe", "CORSO LIKE '*AM*' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0305 = DCount("*", "Anagrafe", "CORSO LIKE '*AM*' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0306 = Me.txtFro0304 + Me.txtFro0305
Me.txtFro0307 = DCount("*", "Anagrafe", "CORSO LIKE '*AM*' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0308 = DCount("*", "Anagrafe", "CORSO LIKE '*AM*' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0309 = Me.txtFro0307 + Me.txtFro0308

' conta A1 e A1A
Me.txtFro0404 = DCount("*", "Anagrafe", "CORSO = 'A1' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0405 = DCount("*", "Anagrafe", "CORSO = 'A1' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0406 = Me.txtFro0404 + Me.txtFro0405
Me.txtFro0407 = DCount("*", "Anagrafe", "CORSO = 'A1' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0408 = DCount("*", "Anagrafe", "CORSO = 'A1' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0409 = Me.txtFro0407 + Me.txtFro0408

Me.txtFro0504 = DCount("*", "Anagrafe", "CORSO = 'A1A' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0505 = DCount("*", "Anagrafe", "CORSO = 'A1A' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0506 = Me.txtFro0504 + Me.txtFro0505
Me.txtFro0507 = DCount("*", "Anagrafe", "CORSO = 'A1A' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0508 = DCount("*", "Anagrafe", "CORSO = 'A1A' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0509 = Me.txtFro0507 + Me.txtFro0508

Me.txtFro0604 = DCount("*", "Anagrafe", "CORSO LIKE '*A1*' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0605 = DCount("*", "Anagrafe", "CORSO LIKE '*A1*' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0606 = Me.txtFro0604 + Me.txtFro0605
Me.txtFro0607 = DCount("*", "Anagrafe", "CORSO LIKE '*A1*' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0608 = DCount("*", "Anagrafe", "CORSO LIKE '*A1*' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0609 = Me.txtFro0607 + Me.txtFro0608

' conta A2 e A2A
Me.txtFro1104 = DCount("*", "Anagrafe", "CORSO = 'A2' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro1105 = DCount("*", "Anagrafe", "CORSO = 'A2' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro1106 = Me.txtFro1104 + Me.txtFro1105

Me.txtFro1204 = DCount("*", "Anagrafe", "CORSO = 'A2A' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro1205 = DCount("*", "Anagrafe", "CORSO = 'A2A' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro1206 = Me.txtFro1204 + Me.txtFro1205

Me.txtFro1304 = DCount("*", "Anagrafe", "CORSO LIKE '*A2*' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro1305 = DCount("*", "Anagrafe", "CORSO LIKE '*A2*' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro1306 = Me.txtFro1304 + Me.txtFro1305

' conta A
Me.txtFro1404 = DCount("*", "Anagrafe", "CORSO = 'A' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro1405 = DCount("*", "Anagrafe", "CORSO = 'A' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro1406 = Me.txtFro1404 + Me.txtFro1405

' conta tot A
Me.txtFro1504 = Me.txtFro1304 + Me.txtFro1405
Me.txtFro1505 = Me.txtFro1305 + Me.txtFro1405
Me.txtFro1506 = Me.txtFro1306 + Me.txtFro1406

' conta B conseguimenti
Me.txtFro0704 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND ESTENSIONE = False AND SEX = 'M'")
Me.txtFro0705 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND ESTENSIONE = False AND SEX = 'F'")
Me.txtFro0706 = Me.txtFro0704 + Me.txtFro0705
Me.txtFro0707 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND ESTENSIONE = False AND SEX = 'M'")
Me.txtFro0708 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND ESTENSIONE = False AND SEX = 'F'")
Me.txtFro0709 = Me.txtFro0707 + Me.txtFro0708

' conta B estensioni
Me.txtFro1604 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND ESTENSIONE = True AND SEX = 'M'")
Me.txtFro1605 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND ESTENSIONE = True AND SEX = 'F'")
Me.txtFro1606 = Me.txtFro1604 + Me.txtFro1605

' conta REV
Me.txtFro0804 = DCount("*", "Anagrafe", "CORSO = 'REV' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0805 = DCount("*", "Anagrafe", "CORSO = 'REV' AND FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0806 = Me.txtFro0804 + Me.txtFro0805
Me.txtFro0807 = DCount("*", "Anagrafe", "CORSO = 'REV' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0808 = DCount("*", "Anagrafe", "CORSO = 'REV' AND FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0809 = Me.txtFro0807 + Me.txtFro0807

' conta B totali
Me.txtFro1704 = Me.txtFro0704 + Me.txtFro1604
Me.txtFro1705 = Me.txtFro0705 + Me.txtFro1605
Me.txtFro1706 = Me.txtFro0706 + Me.txtFro1606

' conta TUTTO
Me.txtFro0904 = DCount("*", "Anagrafe", "FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0905 = DCount("*", "Anagrafe", "FASE_CORSO = 'ISCRIZIONE' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0906 = Me.txtFro0904 + Me.txtFro0905
Me.txtFro0907 = DCount("*", "Anagrafe", "FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtFro0908 = DCount("*", "Anagrafe", "FASE_CORSO = 'TEORIA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtFro0909 = Me.txtFro0907 + Me.txtFro0908


' GUIDE
' conta guide AM e AMA
Me.txtPat0104 = DCount("*", "Anagrafe", "CORSO = 'AM' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat0105 = DCount("*", "Anagrafe", "CORSO = 'AM' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat0106 = Me.txtPat0104 + Me.txtPat0105

Me.txtPat0204 = DCount("*", "Anagrafe", "CORSO = 'AMA' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat0205 = DCount("*", "Anagrafe", "CORSO = 'AMA' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat0206 = Me.txtPat0204 + Me.txtPat0205

Me.txtPat0304 = DCount("*", "Anagrafe", "CORSO LIKE '*AM*' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat0305 = DCount("*", "Anagrafe", "CORSO LIKE '*AM*' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat0306 = Me.txtPat0304 + Me.txtPat0305

' conta guide A1 e A1A
Me.txtPat0404 = DCount("*", "Anagrafe", "CORSO = 'A1' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat0405 = DCount("*", "Anagrafe", "CORSO = 'A1' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat0406 = Me.txtPat0404 + Me.txtPat0405

Me.txtPat0504 = DCount("*", "Anagrafe", "CORSO = 'A1A' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat0505 = DCount("*", "Anagrafe", "CORSO = 'A1A' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat0506 = Me.txtPat0504 + Me.txtPat0505

Me.txtPat0604 = DCount("*", "Anagrafe", "CORSO LIKE '*A1*' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat0605 = DCount("*", "Anagrafe", "CORSO LIKE '*A1*' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat0606 = Me.txtPat0604 + Me.txtPat0605

' conta guide A2 e A2A
Me.txtPat1004 = DCount("*", "Anagrafe", "CORSO = 'A2' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat1005 = DCount("*", "Anagrafe", "CORSO = 'A2' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat1006 = Me.txtPat1004 + Me.txtPat1005

Me.txtPat1104 = DCount("*", "Anagrafe", "CORSO = 'A2A' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat1105 = DCount("*", "Anagrafe", "CORSO = 'A2A' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat1106 = Me.txtPat1104 + Me.txtPat1105

Me.txtPat1204 = DCount("*", "Anagrafe", "CORSO LIKE '*A2*' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat1205 = DCount("*", "Anagrafe", "CORSO LIKE '*A2*' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat1206 = Me.txtPat1204 + Me.txtPat1205

' conta guide A
Me.txtPat1304 = DCount("*", "Anagrafe", "CORSO = 'A' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat1305 = DCount("*", "Anagrafe", "CORSO = 'A' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat1306 = Me.txtPat1304 + Me.txtPat1305

' conta guide tot A (estensioni escluse A1 e AM)
Me.txtPat1404 = Me.txtPat1204 + Me.txtPat1304
Me.txtPat1405 = Me.txtPat1205 + Me.txtPat1305
Me.txtPat1406 = Me.txtPat1206 + Me.txtPat1306

' conta guide estensioni B
Me.txtPat1504 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND ESTENSIONE = True AND SEX = 'M'")
Me.txtPat1505 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND ESTENSIONE = True AND SEX = 'F'")
Me.txtPat1506 = Me.txtPat1504 + Me.txtPat1505

' conta guide B
Me.txtPat0704 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND ESTENSIONE = False AND SEX = 'M'")
Me.txtPat0705 = DCount("*", "Anagrafe", "CORSO = 'B' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND ESTENSIONE = False AND SEX = 'F'")
Me.txtPat0706 = Me.txtPat0704 + Me.txtPat0705

' conta B totali
Me.txtPat1604 = Me.txtPat0704 + Me.txtPat1504
Me.txtPat1605 = Me.txtPat0705 + Me.txtPat1505
Me.txtPat1606 = Me.txtPat0706 + Me.txtPat1506

' conta guide REV
Me.txtPat0804 = DCount("*", "Anagrafe", "CORSO = 'REV' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat0805 = DCount("*", "Anagrafe", "CORSO = 'REV' AND FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat0806 = Me.txtPat0804 + Me.txtPat0805

' conta guide TUTTO
Me.txtPat0904 = DCount("*", "Anagrafe", "FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'M'")
Me.txtPat0905 = DCount("*", "Anagrafe", "FASE_CORSO = 'GUIDA IN CORSO' AND ATTIVO = True AND SEX = 'F'")
Me.txtPat0906 = Me.txtPat0904 + Me.txtPat0905
End Sub
Non credo che questa sia la scelta migliore ne' tantomeno la piu' veloce, che metodo sarebbe meglio usare?

13 Risposte

  • Re: Metodo x elaborare statistiche

    Ovviamente non lo è, anzi è la cosa più assurda che abbia mai sentito.
    Crea una query raggruppata con criteri ed ottieni i conteggi che ti servono... poi puoi verificare se usare una maschera continua o se aprire un recordset e popolare i controlli non associati ciclando i fields del recordset.
  • Re: Metodo x elaborare statistiche

    Infatti come temevo e' la soluzione peggiore
    Memorizzo tutti i risultati in modo da ottenere questo
    <img src="https://i.ibb.co/5v7RvwS/Immagine9809.jp" alt="Immagine9809" border="0"></a>
    ma Alex faccio fatica a seguirti
    se creo una query come faccio a farla lavorare con tutti i parametri sopra
    alcuni sono corrispondenze dirette e alcuni a volte sono LIKE
    e tenendo presente che sono circa 200 interrogazioni con parametri diversi dove trovo i risultati?
  • Re: Metodo x elaborare statistiche

    Dovrei entrare nel dettaglio cosa che con quanto hai esposto è francamente impossibile.
    Tuttavia prova a fare un passo per volta.
    Bella query devi assicurarti di avere i dati coerenti.
    Poi devi implementare un ciclo che scorre il recordset ottenuto e qualche riga di codice per ricavare i valori specifici dei 200 controlli.
    Meglio il ciclo che 200 accessi alla tabella credimi.
  • Re: Metodo x elaborare statistiche

    Credo o almeno spero di aver capito Alex
    Predispongo una semplice query con i campi che mi serviranno per le selezioni
    SELECT Anagrafe.CORSO, Anagrafe.ATTIVO, Anagrafe.SEX, Anagrafe.ESTENSIONE, Anagrafe.FASE_CORSO, Count(Anagrafe.NOME) AS ConteggioDiNOME
    FROM Anagrafe
    GROUP BY Anagrafe.CORSO, Anagrafe.ATTIVO, Anagrafe.SEX, Anagrafe.ESTENSIONE, Anagrafe.FASE_CORSO;
    ma a questo punto correggimi
    faccio partire i circa 200 cicli utilizzando DLOOKUP
    caselladitesto = DLookup("ConteggioDiNOME", nomequery, criteri)
    e dovrei avere il numero di allievi che corrispondono alle varie selezioni
    E' corretto?
  • Re: Metodo x elaborare statistiche

    No assolutamente altrimenti...
    Apri un recordset e ricavi i vari dati.
  • Re: Metodo x elaborare statistiche

    Apri un recordset e ricavi i vari dati
    Non ho idea di come farlo
    I dati sono tutti disponibili nella query e li vedo aprendola
    ma non so come fare a interrogarla e ricavarne i dati che mi servono
    Ora che il mio progetto e' quasi concluso e operativo
    devo pero' cominciare a estrarre dati per fare delle statistiche
    e questa e' solo una delle interrogazioni che ho in mente.
    Ma non so come fare
    E' forse questo il modo (da un tuo post su masterdrive) ?
    Dim rs as DAO.Recordset
    Dim fld As DAO.Fields
    Set rs=DbEngine(0)(0).OpenRecordset(NomeQuery)
    ' ora in RS hai i dati della Query...
    ' per ciclarli e leggere
    For each fld in rs.Fields
       Debug.Print fld.Value
    Next
    rs.Close
    Set rs=nothing
  • Re: Metodo x elaborare statistiche

    No frena... devi fare un passo di apprendimento.
    Apero il recordset hai a disposizione tutti i campi restituiti.
    A seconda di quanto sei smaliziato e pertanto adde tro al VBA ci sono strategie di ottimizzazione che uno applica.
    Ad esempio dovresti costruire una query con i campi nominati con Alias ed attribuire ai controlli della maschera il medesimo nome.
    In questo modo potresti popolare i controlli della maschera con un ciclo simile a quello che hai esposto:
    
    Dim rs as DAO.Recordset
    Dim fld As DAO.Fields
    Set rs=DbEngine(0)(0).OpenRecordset(NomeQuery)
    ' ora in RS hai i dati della Query...
    ' per ciclarli e leggere
    For each fld in rs.Fields
       Me.controls(fld.name).value= fld.Value
    Next
    rs.Close
    Set rs=nothing
    
    Ti manca sicuramenteun po di pratica...
  • Re: Metodo x elaborare statistiche

    Ti manca sicuramenteun po di pratica...
    ma questo e' piu' che certo
    oltre a questo non e' per niente facile trovare documentazione di un certo livello

    Comunque questa sub mi da' errore gia' in compilazione
    su fld.Value impossibile trovare il metodo o il membro dei dati
    non so se dipende dalla versione io uso la 2010
    Private Sub CalcolAttivi()
    
    Dim rs As DAO.Recordset
    Dim fld As DAO.Fields
    Dim my1
    Set rs = DBEngine(0)(0).OpenRecordset("qryTotaleAllievi")
    ' ora in RS hai i dati della Query...
    ' per ciclarli e leggere
    For Each fld In rs.Fields
       'Me.Controls(fld.Name).Value = fld.Value
       my1 = fld.Value
    Next
    rs.Close
    Set rs = Nothing
    End Sub
  • Re: Metodo x elaborare statistiche

    Fld non mi ero accorto è dichiarato male ce collection... togli la S . ..deve essere field
  • Re: Metodo x elaborare statistiche

    Ecco fatto la routine funziona
    Private Sub CalcolAttivi()
    
    Dim rs As DAO.Recordset
    Dim fld As DAO.Field
    Dim myValore
    Dim myCampo
    Dim myX
    Dim myRecord(6, 2)
    ' 1 CORSO
    ' 2 ATTIVO
    ' 3 SEX
    ' 4 ESTENSIONE
    ' 5 FASE
    ' 6 CONTEGGIO
    Set rs = DBEngine(0)(0).OpenRecordset("qryTotaleAllievi")
    ' ora in RS hai i dati della Query...
    ' per ciclarli e leggere
    myX = 0
    Do While Not rs.EOF
        For Each fld In rs.Fields
            'Me.Controls(fld.Name).Value = fld.Value
            myX = myX + 1
            myCampo = fld.Name
            myValore = fld.Value
            myRecord(myX, 1) = myCampo
            myRecord(myX, 2) = myValore
        Next
        rs.MoveNext
        
        'qui si lavorano le informazioni del record e si assegna il valore alla casella di testo corrispondente
        
        myX = 0
    Loop
    rs.Close
    Set rs = Nothing
    End Sub
    poi aggiungo la parte che manca
    per elaborare ogni record della query
    Ovviamente, come sempre, il codice e' un po' rozzo e ridondante perche' procedo sempre a piccoli passi...
    Grazie come sempre Alex
  • Re: Metodo x elaborare statistiche

    Mi pare sia un buon punto di partenza... fai un buon debug passo passo perché rappresenta il modo per imparare bene.
    Prova a co frontale il codice con il modello oggetti DAO per renderti conto dove stai operando...
    http://allenbrowne.com/ser-04.htm
  • Re: Metodo x elaborare statistiche

    Mi pare sia un buon punto di partenza..
    infatti
    volendo cambiare al volo il codice SQL della query in questione e' possibile passarlo come parametro e scrivere una cosa del genere oppure e' formalmente scorretto?
    Private Sub CalcolAttivi(stringa)
    DbEngine(0)(0).QueryDefs("qryTotaleAllievi").SQL=stringa
    Set rs = DBEngine(0)(0).OpenRecordset("qryTotaleAllievi")
  • Re: Metodo x elaborare statistiche

    Fai anche a meno di usare la query... usando semplicemente il predicato SQL.
    
    Dim sSQL As String
    sSQL="SELECT....."
    Set rs = DBEngine(0)(0).OpenRecordset(sSQL, DBreadOnly)
    ecc...
    
Devi accedere o registrarti per scrivere nel forum
13 risposte