DSum e similari - Cercasi consiglio o aiuto

di il
16 risposte

DSum e similari - Cercasi consiglio o aiuto

So che forse non sono né il primo né il secondo a inserire una richiesta di chiarimento del genere.
Purtroppo, però, dovendo realizzare un Database gestionale, non riesco a superare lo scoglio dei subtotali.
Vengo subito al dunque.

Sto lavorando su un database dove devo inserire, in vari campi di una tabella, un totale di valori di altre colonne di un'altra tabella in submaschera.

Nello specifico, ho una tabella "Particelle Catastali", e una tabella "Contratti".
Entrambe le tabelle hanno, come chiave primaria, e come campo in comune per la relazione, un campo alfanumerito di (appena) 37 caratteri, denominato IDContratto.

Il problema sta nell'applicazione della formula DSum.

Partiamo da uno solo dei campi su cui lavorare (gli altri seguono lo stesso principio).

Parliamo di un campo denominato [Are_Cat] da sommare ed inserire il valore in un campo che si chiama [TotAreCat]

In primis, per evitare di lavorare su dati di maschera, ho dato la seguente definizione:

Dim Contratto As String
Contratto = me.IDContratto

Dopodiché ho scritto:

me.TotAreCat=DSum([AreCat],"ParticelleCatastali",Contratto=[IDContratto])

Se metto lo Stop, il campo Contratto è valorizzato bene, ed altrettanto anche il campo IDContratto, però non mi calcola la somma.
Dove sto sbagliando?

Help!

16 Risposte

  • Re: DSum e similari - Cercasi consiglio o aiuto

    Perdon:
    Volevo dire che ho scritto me.TotAreCat=DSum([AreCat],[ParticelleCatastali],Contratto=[IDContratto])
  • Re: DSum e similari - Cercasi consiglio o aiuto

    HAi sbagliato la sintassi di tutto... passi non delle stringhe ma degli Oggetti e questo richiede un minimo di studio...
    
    me.TotAreCat=DSum("[AreCat]","[ParticelleCatastali]","Contratto=" & Me![IDContratto])
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Provo e ti faccio sapere
    Grazie
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Niente da fare.
    A parte che mi da errore e mi chiede il Debug, ma, analizzando i dati, mi da solo il valore di un solo campo (solitamente l'ultimo), invece di tutti i valori contrassegnati dalla chiave inserita.
  • Re: DSum e similari - Cercasi consiglio o aiuto

    carlo pots ha scritto:


    Niente da fare.
    A parte che mi da errore e mi chiede il Debug, ma, analizzando i dati, mi da solo il valore di un solo campo (solitamente l'ultimo), invece di tutti i valori contrassegnati dalla chiave inserita.
    Frena... analizza quello che hai fatto... è evidente trestituisca SOLO 1 valore... [IdContratto] ha un solo Valore quello del controllo attivo...!
    Se poi stai usando una Maschera continua... direi che sei completamente fuori strada.
    I Calcoli in caso di Maschere continue si fanno nella Query Origine, e non nella Form... perchè NON FUNZIONANO se non sul Record Corrente.
    Quindi inserisci il DSUM nella query poi associa il CampoCalcolato ad un controllo nella Maschera continua.
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Premetto che i dati li richiamo da una Tabella (alimentata dalla Form), e non dalla Form stessa; quindi, a conti fatti, mi consigli solo di "alimentare" la Query con i dati di tabella E POI di calcolare i totali DALLA QUERY (e non dalla Tabella), giusto?
  • Re: DSum e similari - Cercasi consiglio o aiuto

    carlo pots ha scritto:


    Premetto che i dati li richiamo da una Tabella (alimentata dalla Form), e non dalla Form stessa; quindi, a conti fatti, mi consigli solo di "alimentare" la Query con i dati di tabella E POI di calcolare i totali DALLA QUERY (e non dalla Tabella), giusto?
    I dati sono solo nelle Tabelle, le Form servono per Inserirli e Visualizzarli... quindi cerca di non uscire dalla Teoria con strane teorie...!
    Quello che ho cercato di farti capire è il concetto tra Tabella, Maschera(invisualizzazione Continua) e Query.
    Quindi se ti è chiaro come funziona una Form Continua... deve esserti chiaro che tutto ciò che deve essere frutto di Calcolo che deve essere visualizzato per tutti i Dati in lista, devi farlo in una query.
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Ok, inteso.
    Farotti sapere
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Dopo tanto smanettare, e controllare bene la sintassi, ho risolto.

    Mai visto un codice così complesso:

    
    Dim Contract as String
    
    Contract = Me.Contratto
    
    me.TotAreCat=DSum("[AreCat]","ParticelleCatastali","[Contratto]='" & [Contract] & "'")
    Praticamente, fino a quando inserivo il valore della casella di testo, avevo voglia di smadonnare.
    Portandolo in una stringa, invece, il problema si risolve...

    Funziona una bellezza
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Non è possibile... nemmeno se lo vedo, dipende come lo esegui.

    Questo DEVE FUNZIONARE.
    
    me.TotAreCat.Value=DSum("[AreCat]","ParticelleCatastali","[Contratto]='" & Me.Contratto.Value & "'")
    Detto questo, se il controllo TotAreCat è solo per visualizzare un dato e non devi memorizzarlo... il codice scritto quì è inutile, puoi comporre il predicato dal generatore di Espressioni nell'Origine Controllo.
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Guarda, con rispetto parlando, vengo dal morto; vuoi dirmi che è vivo?

    Ricapitoliamo un poco.

    Innanzi tutto, il risultato del DSum lo devo memorizzare in un campo di un'altra tabella.

    In tutto questo tempo in cui non ho dato più risposte al post, ho dovuto cambiare molte cose nelle tabelle, specialmente qualche nome.
    In primis, ho cambiato il nome della tabella, di riferimento, che adesso è tutta una parola sola.
    Poi, ho cambiato alcune variabili.
    Per es., "TotAreCat" è diventata "AreCatPart" e "Contratto" è diventato "IDCONT", facente anche funzione di chiave primaria in un altra tabella chiamata "Contrattazione"; lo stesso nome di variabile, però, si trova anche nella tabella "ParticelleCatastali" di cui stiamo parlando.

    Pertanto, per evitare problemi, ho dapprima creato una stringa momentanea dove far transitare i dati di una casella di testo, e quindi:
     Dim Ident as String
    dove "Ident" riporterà i dati della chiave IDCONT che è riportata in Tabella "ParticelleCatastali", e analogamente in "Contrattazione"

    Successivamente, quindi, ho assegnato alla variabile Ident, i dati contenuti nel campo della Maschera "IDCONT" relativo alla Tabella "ParticelleCatastali", e quindi:
    Ident=me.IDCONT
    Avrei potuto scrivere come hai indicato tu, ovvero:
    Ident=Me![IDCONT]
    ma credo che sarebbe stato pressocché lo stesso.

    Googlando un pò qui e là, sulla sintassi di un altro comando "D*" (nel caso specifico dLookUp), ho notato quella stringa messa così e mi sono detto "Proviamo; nella peggiore delle ipotesi mettiamo una Queryna e il problema è aggirato!".

    Ho provato e ho scritto:
    Me.txtAreCat = DSum("[AreCatPart]", "ParticelleCatastali", "[IDCONT]= '" & [Ident] & "')
    e mi ha dato subito errore.
    Ho aggiunto un altro paio di virgolette alla fine, e quindi:
    Me.txtAreCat = DSum("[AreCatPart]", "ParticelleCatastali", "[IDCONT]= '" & [Ident] & "'")
    e, per miracolo, non mi dà più errore e mi restituisce ciò che mi serve.

    Io ti credo sul fatto che non può essere così; d'altra parte, la stessa sintassi che il support di Office mi dà è coerente a quanto tu hai scritto, ma non ha mai funzionato.
    Solo facendo così non mi dà errori.

    E se serve fare così per avere ciò che mi serve, ... allora ben venga.
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Già memorizzare un campo calcolabile è una sorta di abominio tecnico... in ogni caso nessun miracolo, ma vedendo che non sei minimamente ricettivo agli aspetti tecnici, e ti accontenti solo del risultato finale facendo esperimenti che di tecnico non hanno nulla senza porti quesiti che pur ti sono stati fatti notare... come dici tu.... "ben venga".

    Spero che la prossima volta, magari con campi data, non dovrfarai ancora n mesi di tentativi...

    Buon lavoro.
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Guarda, ho riflettuto molto su cosa e come rispondere, perché, leggendo, non sai mai dove finisce un commento e dove comincia qualcosa di spiacevole.
    Mi limiterò solo a dirti che non è che non sono ricettivo; purtroppo ho dei target da rispettare e devo portarli a termine entro un determinato termine.

    Capisco e rispetto il tuo punto di vista, ma ti ricordo che io non esco da una scuola di informatica, tantomeno da un'università.
    Come scrissi nel mio messaggio di saluto al forum, io ho appreso quel poco di conoscenza massacrando un Commodore 64 e, più avanti, un PC con un linguaggio di programmazione che è stato dichiarato obsoleto, e pertanto non più sviluppabile, "solo" nel 2002.

    Io sono uno schifoso ragioniere, che da un po' di tempo lavora anche in una Pubblica Amministrazione, ma ho pur sempre dei clienti storici da mandare avanti, e non posso affidarmi più su un linguaggio e su un sistema operativo che giravano bene sono su processori Pentium e interfacce IDE, per cui, se so fare qualcosa (e preciso bene "qualcosa") è solo perché non mi sono mai posto dei limiti, cercando sempre nuove soluzioni, ed Access, al momento, mi è sembrata l'interfaccia migliore (per il momento) dove lavorare, augurandomi, nel futuro, di poter trasferire il tutto su una piattaforma più performante (tipo MySql e via discorrendo); è altrettanto vero che cerco sempre di migliorare, facendo tesoro anche dei consigli di chi ha buttato il sangue all'Università (che non mi sono mai potuto permettere di frequentare).

    Per il resto, come si dice: chi la dura la vince, anche se c'è bisogno di far passare tanto tempo.
  • Re: DSum e similari - Cercasi consiglio o aiuto

    Guarda, ti dico la mia ma poi chiudo...
    Questo è un forum Tecnico, e chi partecipa si aspetta un approccio Tecnico, oggettivo quanto più possibile e supportato da basi teoriche, con risposte giuste magari... purtroppo non tutti hanno tempi così comodi per risolvere.

    Questo significa che se la soluzione che esponi è considerabile dalla buona tecnica ERRATA, deve risultare chiaro a chi legge che non è un buon modo di affrontare il problema ed anche il motivo..., perchè i 3D come questo non servono solo a te che fai la domanda, ma soprattutto a chi ha un problema simile che cerca nel forum e si legge le risposte date, e magari vuole capire ed approfondire e non solo COPIA/INCOLLARE.

    Tutte le altre questioni di scolarità/conoscenza, o "io arrivo li", oppure "basta che funzioni" sono considerazioni che francamente non servono a nessuno se non a te per giustificare il tuo rapporto con il problema.
    Se TU ritieni di aver soddisfatto il tuo lavoro per noi va più che bene.
    Se, ti vengono evidenziati errori tecnici, e vuoi far passare che è ugualmente un modo giusto perchè il risultato torna, non va bene.

    Per il resto buon lavoro.
Devi accedere o registrarti per scrivere nel forum
16 risposte