Problema con Funzione Dcount

di il
4 risposte

Problema con Funzione Dcount

Buongiorno a tutti!
Nella creazione di un database, sto incontrando delle difficoltà con la funzione Dcount.
Il database è sempre quello per uno Studio legale, sono alle prese con le notifiche degli atti.
Ho creato una tabella notifiche (TblNot), di quest'ultima ho creato una Query (QryNot) il cui campo oggetto della funzione DCount è Stato (lo stato dell'atto che può essere: 1-notificare ; 2-notificato/ritirare ; 3-ritirato/depositare)
in seguito ho inserito la maschera della QryNot (FrmQryNot) come sottomaschera della FrmPrt (tale maschera è quella principale dove c'è la singola pratica con tutte le singole sezioni [sottomaschere] tra cui le notifiche che riguardano la singola pratica).
inserendo la FrmQryNot come sottomaschera della FrmPrt ho impostato il filtro e quindi visualizzo, nella sezione delle notifiche della FrmPrt solo le notifiche della pratica che sto visualizzando, pur se nella Query di origine (QryNot) ci sono tutte le notifiche fatte!
Il problema è nato quando ho voluto inserire nell'intestazione della FrmPrt 3 caselle di testo che mi dessero evidenza del numero di record il cui campo Stato fosse:
- 1-notificare
- 2-notificato/ritirare
- 3-ritirato/depositare
per fare questo ho utilizzato il seguente codice:
=DCount("[Stato]";"[QryNot]";"[Stato]='1-notificare'")
=DCount("[Stato]";"[QryNot]";"[Stato]='2-notificato/ritirare’")
=DCount("[Stato]";"[QryNot]";"[Stato]='3-ritirato/depositare’")
Nella mia inesperienza, credevo che mi avrebbe dato i risultati filtrati delle sole notifiche che visualizzo nella FrmPrt; tuttavia ciò non è avvenuto, infatti il risultato di DCount è che mi ritorna sempre il conteggio di tutte le notifiche che si trovano in QryNot.
Leggendo in internet e facendo delle prove, mi sono imbattuto nel comando "Current View", mi chiedo se sia possibile usarlo nel mio caso, cioè se è possibile dire ad access di conteggiare ad esempio solo il campo "[Stato]='1-notificare'", prendendo come dominio la QryNot non nella sua totalità, ma solo i campi della QryNot che in quel momento sono filtrati dalla maschera principale FrmPrt.
Prima di aprire questa discussione, ne ho lette altre ma non sono riuscito a venirne a capo, avete qualche consiglio da darmi?

4 Risposte

  • Re: Problema con Funzione Dcount

    Mi pare evidente che, oltre al Criterio [Stato], se non passi anche la Chiave Primaria, l'estrazione dei dati avviene su tutti i Records...!
    QUindi avrai un Criterio WHERE in cui avrai lo STATO="....." AND Chiave=TuoValore

    Ci sono altre osservazioni da fare, del tipo che forse eseguire 3 Dcount non è l'idea migliore possa venire... basta aprire un Recordset con una Query Raggruppata per Stato con Campo in Conteggio... ed ottieni i 3 valori che poi puoi assegnare alle 3 Caselle di Testo...
    Ci sarebbe da capire anche perchè tu abbia come [Stato] dei valori poco Funzionali dal punto di vista del Database... normalmente chi è meno esperto struttura i Campi ChiaveEsterna come Campi INdice Numerico in quanto la TAbella lato (1) ha sempre una PK(Counter) ed un Campo Descrittivo...
    Tu hai mischiato un Numero ed il Testo come Campo.

    Valuta tu se e come usarer quello che ti ho detto...
  • Re: Problema con Funzione Dcount

    @Alex ha scritto:


    Mi pare evidente che, oltre al Criterio [Stato], se non passi anche la Chiave Primaria, l'estrazione dei dati avviene su tutti i Records...!
    QUindi avrai un Criterio WHERE in cui avrai lo STATO="....." AND Chiave=TuoValore

    Ci sono altre osservazioni da fare, del tipo che forse eseguire 3 Dcount non è l'idea migliore possa venire... basta aprire un Recordset con una Query Raggruppata per Stato con Campo in Conteggio... ed ottieni i 3 valori che poi puoi assegnare alle 3 Caselle di Testo...
    grazie Alex per i consigli, non ho mai creato delle query di raggruppamento, prima studierò come sono strutturate, così da poter risolvere questo problema.
    Ci sarebbe da capire anche perchè tu abbia come [Stato] dei valori poco Funzionali dal punto di vista del Database... normalmente chi è meno esperto struttura i Campi ChiaveEsterna come Campi INdice Numerico in quanto la TAbella lato (1) ha sempre una PK(Counter) ed un Campo Descrittivo...
    Tu hai mischiato un Numero ed il Testo come Campo.
    purtroppo questa decisione poco funzionale, neanche a me piaceva molto (infatti, dopo il tuo messaggio di risposta, mi sono convinto a modificare lo stato togliendo i numeri), in principio, tale scelta era stata fatta per dare chiarezza della successione temporale dei vari stati della notifica anche a persone non esperte di diritto.
  • Re: Problema con Funzione Dcount

    marcios ha scritto:


    ....
    purtroppo questa decisione poco funzionale, neanche a me piaceva molto (infatti, dopo il tuo messaggio di risposta, mi sono convinto a modificare lo stato togliendo i numeri), in principio, tale scelta era stata fatta per dare chiarezza della successione temporale dei vari stati della notifica anche a persone non esperte di diritto.
    Attenzione a non confondere aspetti di Funzionalità con Aspetti di Visualizzazione.

    Se avessi una tabella così
    
    IdStato
    Stato
    Contenente i dati
    
    Id=1   Stato=notificare
    Id=2   Stato=notificato/ritirare
    Id=3   Stato=ritirato/depositare
    Potresti in ogni caso usare una ComboBox per visualizzare la selezione realizzando un Campo Concatenato...
    
    SELECT IdSato, ([IdStato] & " - " & [Stato]) As NweStato FROM TblStato Order By IdStato
    Ovviamente nella logica delle Relazioni, il campo PK sarbbe il Counter... ed andresti ad usarlo come CHiave esterna della Tabella lato Molti...

    Buon lavoro.
  • Re: Problema con Funzione Dcount

    @Alex ha scritto:


    Attenzione a non confondere aspetti di Funzionalità con Aspetti di Visualizzazione.

    Se avessi una tabella così
    
    IdStato
    Stato
    Contenente i dati
    
    Id=1   Stato=notificare
    Id=2   Stato=notificato/ritirare
    Id=3   Stato=ritirato/depositare
    un attimo, io ho fatto una tabella proprio così come tu la descrivi. Chiedo scusa per la spiegazione iniziale non completa, per rendere il discorso più semplice ho finito per omettere un dato fondamentale.
    il mio scrivere "1-notificare" era solo per agevolare le persone inesperte di diritto (anche se non mi piace lo stesso come soluzione, infatti l'ho tolta!), ma il campo ID era già presente nella tabella.
    al fine di chiarire, preciso che il campo Stato della TblNot è un campo ricerca guidata la cui origine è la TblStatoNot.
    errore mio nel non essermi spiegato chiaramente, scusate, la prossima volta starò più attento.
    Allegati:
    17677_424059a168b3c94a024fa7c9f2d15490.png
    17677_424059a168b3c94a024fa7c9f2d15490.png
Devi accedere o registrarti per scrivere nel forum
4 risposte