Dcount() o altro?

di il
8 risposte

Dcount() o altro?

Buongiorno a tutti questo e' il mio primo msg
Non programmo piu' da oltre 20 anni... vengo dalla preistoria.. solo DOS usavo CLIPPER e DBIII
Ho finalmente messo mano ad Access e voglio realizzare un applicativo per la mia azienda
Due tabelle relazionate: ANAGRAFICHE e GUIDE (piu' altre tabelle ma ora non interessa)
nella maschera di gestione anagrafiche visualizzo un totalizzatore che conta le guide per quel cliente e puo' anche essere 0 nessuna guida
uso una casella di testo non editabile con la funzione:

=DCount("*";"Guide";"[GUIDE]![COD_ANAGRAFE]=[ANAGRAFICHE]![ID]")

c'e' di meglio? si puo' ottimizzare? quando entro sulla maschera ci mette un attimino... quando il DB si ingrossera' magari ci mette troppo
Grazie

8 Risposte

  • Re: Dcount() o altro?

    Il terzo argomento di DCount io lo scriverei così:
    "[COD_ANAGRAFE] = " & [Maschere]![ANAGRAFICHE]![ID]
    ma si tratta solo di una scrittura più standard...non credo che cambino le prestazioni.
  • Re: Dcount() o altro?

    La sintassi giusta per il criterio è questo:
    
    "[COD_ANAGRAFE] = " & Me!ID.value
    
    E contrariamente a quanto ti è stato detto la differenza è concettualmente importante perché inserita nella stringa si impone al motore JET di interpretarla, mentre passandogli già il valore l'interpretazione non serve... la risoluzione è esplicita.
    Se vuoi ulteriormente velocizzare invece di usare [*] usa la PK della tabella.

    Ora non è tuttavia che hai una maschera continua...?
    In questo caso ti basta mettere nella textbox il conteggio...
  • Re: Dcount() o altro?

    @Alex ha scritto:


    E contrariamente a quanto ti è stato detto la differenza è concettualmente importante perché inserita nella stringa si impone al motore JET di interpretarla, mentre passandogli già il valore l'interpretazione non serve... la risoluzione è esplicita.
    Grazie. Non lo sapevo.

    Però lui ha scritto una sintassi dentro una casella di testo (quindi con i punto-virgola). Accetta lo stesso Me? Io sapevo che Me va bene sono in VBA.
  • Re: Dcount() o altro?

    Se l'ha scritta dal generatore di espressioni nell'origine controllo è ancora più semplificabile in quanto basta mettere :

    "[COD_ANAGRAFE] = " & [ID]
  • Re: Dcount() o altro?

    @Alex ha scritto:



    Se vuoi ulteriormente velocizzare invece di usare [*] usa la PK della tabella.

    Ora non è tuttavia che hai una maschera continua...?
    In questo caso ti basta mettere nella textbox il conteggio...
    Grazie infinite, intanto ho gia' corretto la funzione
    =DCount("*";"Guide";"[GUIDE]![COD_ANAGRAFE]=" & [ID])
    cosa e' la PK dela tabella?
    e la la maschera continua?
    Come vedi sono all'inizio
  • Re: Dcount() o altro?

    Bene allora direi che prima di pensare di ottimizzare una funzione meglio partire da qualche.cosa di più concreto... non credi...?
    Inizia con il leggere qualche buon libro ed apprendere le basi minime, altrimenti le domande banali si sprecano.
  • Re: Dcount() o altro?

    Grazie Alex gentilissimo
    scusa per le domande apparentemente banali ma come ti ho detto sono abbastanza all'inizio con access e con le sue definizioni e sintassi ma non con i concetti di programmazione professionale seppure di 20 anni fa...
    per PK credo intendessi chiave primaria, con le maschere continue ho approfondito e fatto qualche prova
    Nel progetto che sviluppo ho una maschera ANAGRAFICHE e una sottomaschera GUIDE che ho visto puo' anche essere una maschera continua
    seppure in visualizzazione foglio dati non mi delude, in fondo devo solo consultarle
    nella maschera principale ci sono i dati di tabella ANAGRAFE piu' il famoso contatore di records della tabella GUIDE
    che vengono elencate nella sottomaschera, ovviamente relazione uno a molti tra ANAGRAFE e GUIDE
    Quindi c'e' una altro metodo oltre il Dcount()? cosa intendi con "mettere nel texbox il conteggio" se uso la maschera continua ?
    Ho la versione 2010 e sto studiando il Piriou - Triponini di Apogeo e in attesa di iniziare il "Applicazioni con..." di Mike Davis
    Visto il tuo sito con molto materiale, e' libera la consultazione?
    Grazie
  • Re: Dcount() o altro?

    Ripeto, che prima di ottimizzare le cose, serve avere più solidità sugli strumenti che stai usando, a partire dallo sviluppo o ingegneria del Database, per passare alla conoscenza dell'oggetto di Access.
    Non serve semplicemente capire che PK=Chiave Primaria... ma serve conoscere con chiarezza il Concetto che sta dietro alla definizione di PK... e di FK... di conseguenza avere come base i concetti solidi di Normalizzazione.

    Per le maschere poi non è che una Maschera Continua ed una Foglio dati sono la stessa cosa perchè tanto a te basta consultarle... sono 2 opzioni estremamente differenti come concetto di Utilizzo...

    Conteggio poi è una opzione di inserire un calcolo in una Casella di testo... in un libro BASE le trovi queste cose, e, ovviamente il suggerimento è di farti una cultura minima.

    Si può fare di meglio del DCOUNT... SI, intanto già il fatto che tu non abbia seguito il suggerimento di usare la PK al posto del [*] è indicativo..., ma non sei ancora in gradi di capire di cosa si parla, perchè il DCOUNT funziona più che bene, io che sono 25 anni che uso Access uso tranquillamente DCOUNT quando posso... tu devi farti una tua competenza per capire se è meglio il Dcount o se altri metodi, più complessi ma non sempre opportuni.
    Le situazioni vanno sempre contestualizzate, ed in questo caso non si può contestualizzare nulla... usa DCOUNT che va bene.
Devi accedere o registrarti per scrivere nel forum
8 risposte