DSUM con 2 criteri

di il
17 risposte

DSUM con 2 criteri

Salve, in rete ho trovato un esempio che ho cercato di adattare al mio caso ma ci sono riuscita in parte, ho una tabella con campo Data, ID, campo1.
Il campo1 accoglie dati numerici che vorrei sommare in maniera incrementale in base alla data, l'esempio funzionava con incremento in funzione dell'ID, ma a me occorre avere una somma incrementale in funzione della Data e come secondo criterio l'ID.
Ho cercato di creare una query ma con scarso risultato, invece provando direttamente con un campo dentro una maschera ci sono riuscita in parte, nel senso che riesco ad avere una somma incrementale per data ma non riesco ad inserire il secondo criterio.
Nell'esempio ho inserito due date uguali per far notare che viene riportato lo stesso importo in entrambi i record, a me occorrerebbe invece avere due importi distinti ecco perchè vorrei inserire un secondo criterio che dovrebbe essere l'ID.
Volevo allegare un file ma mi dice estensione .mdb non valida

Questa è il codice con il solo criterio data che ho inserito nel campo( funziona)
=DSum("[campo1]";"tabella1";"[Data]<=" & CLng([Data]))

Questa è la funzione che ho inserito per avere i due criteri ma non funziona
=dsum("[campo1]";"tabella1";"[Data]<=" & clng([data]) & "And [ID]<=" & [id])

17 Risposte

  • Re: DSUM con 2 criteri

    Aggiungi uno spazio prima.di "And...."
  • Re: DSUM con 2 criteri

    Provato, continua a non funzionare provo ad allegare immagine
    Ho cambiato in questo modo
    =DSum("[campo1]";"tabella1";"[Data]<=" & CLng([Data]) & " And [ID]<= [id]")
    Il risultato dovrebbe essere 30 - 35 - 135 - 150- 170
    Allegati:
    28625_5d2187251bda9f2fa5d1716f99fe1b10.png
    28625_5d2187251bda9f2fa5d1716f99fe1b10.png
  • Re: DSUM con 2 criteri

    Secondo me la formula funziona... nel senso che fa quello che gli hai detto di fare:D.... bisogna ragionare bene su quello che le hai detto di fare ---

    fra l'altro il dominio della funzione fa riferimento a una tabella1 invece della 2 che mostri in foto....non si vede l'ID del primo record ma potrebbe essere un 2 ...non ho modo di provarlo ora...sto solo guardando quello che hai scritto... anche id minuscolo potrebbe essere un problema visto che il campo in tabella(dominio) e ID maiuscolo....

    fai queste sostituzioni... e prova...
  • Re: DSUM con 2 criteri

    Si si avevo provato con ID maiuscolo ma ottengo lo stesso risultato, Tabella2 è il nome della maschera, la tabella è Tabella1, ho fatto un sacco di prove ma niente.... è come se leggesse soltanto il primo criterio.
    Purtroppo il file non posso allegarlo ma se si ha la possibilità ci vuole un minuto a crearlo.

    CicciusPrime ha scritto:


    ...non si vede l'ID del primo record ma potrebbe essere un 2 ...non ho modo di provarlo ora...sto solo guardando quello che hai scritto...
    Riallego nuova immagine, oltretutto vorrei non mostrasse l'errore in fondo

    Grazie per le risposte
    Allegati:
    28625_706410fcc77595f70e45ead6e274674c.png
    28625_706410fcc77595f70e45ead6e274674c.png
  • Re: DSUM con 2 criteri

    Ma se devi fare un RunningSum non è corretto usare 2 criteri... basta ordinare per data ed usare quella come criterio.
  • Re: DSUM con 2 criteri

    Per adesso faccio così, però nei record con data uguale naturalmente esce fuori lo stesso importo, invece mi occorrerebbe una somma progressiva
  • Re: DSUM con 2 criteri

    Bisognerebbe avere un campo con i numeri di riga ordinati per Data e ID quindi 1 2 3 4 5 6 7 ect e usare questi come criterio..
  • Re: DSUM con 2 criteri

    Certo allora devi portare fuori dalla stringa il valore... come hai fatto per la data...
  • Re: DSUM con 2 criteri

    Credo di non aver capito, puoi modificare il mio esempio?
  • Re: DSUM con 2 criteri

    
    =DSum("[campo1]";"tabella1";"[Data]<=" & CLng([Data]) & " And [ID]<= " & [id])
    
  • Re: DSUM con 2 criteri

    Pure così avevo provato, come specificato prima ma restituisce dati errati, nel frattepo ho provato a creare un campo con contatore righe tramite questa funzione
    Public Function GetRecNum() As Long
        '============================================================
        'Name : GetRecNum()
        'Purpose :
        'Author : Maurizio Borrelli
        'Date : 01 febbraio 2002
        'Called by :
        'Calls :
        'Inputs :
        'Output : Posizione assoluta del record corrente+1
        '============================================================
    
        On Error GoTo erh
        With CodeContextObject.RecordsetClone
            If Not (.BOF And .EOF) Then
                .Bookmark = CodeContextObject.Bookmark
                GetRecNum = .AbsolutePosition + 1
            End If
        End With
    
    ext:
        Exit Function
    
    erh:
        GetRecNum = 0
    End Function
    Il campo viene aggiornato regolarmente, ma la funzione dsum non funziona usando questo campo come criterio
    Allegati:
    28625_8de120d2e2f85de0cbd3890f14d5542d.png
    28625_8de120d2e2f85de0cbd3890f14d5542d.png
  • Re: DSUM con 2 criteri

    Lo puoi usare solo da una maschera quel codice... e mi pare tu faccia una confusione imperiale tra la query e la maschera...
    Non sparare idee a caso con 2 ss... prova a riflettere meglio
  • Re: DSUM con 2 criteri

    Chi ha parlato di query?
  • Re: DSUM con 2 criteri

    Ma non dire che fai tutto nella maschera...? Meglio non dirlo forte...
    Mi fermo qui... fallo nella query... se i records diventeranno qualche centinaio sarà un disastro, ad ogni record così facendo obblighi il ricalcolo ed il refeesh dell'interfaccia rendendo inefficiente al massimo il metodo.
    Facendolo nella queey l'interfaccia non viene massacrata di richieste solo 1.
Devi accedere o registrarti per scrivere nel forum
17 risposte