Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

Πρόβλημα με dsum συνάρτηση

Συζητήσεις για την τοπική βάση δεδομένων Access της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
theokoletsis
Δημοσιεύσεις: 12
Εγγραφή: 21 Νοέμ 2007 03:38

Πρόβλημα με dsum συνάρτηση

Δημοσίευση από theokoletsis » 06 Φεβ 2009 22:52

Εχω τον εξής πίνακα

code Ποσο
001 10
001 15
001 20
002 5
002 20
002 10

Και θέλω προοδευτικά σύνολα ανα code:

code Ποσό
001 10
001 25
001 45
002 5
002 25
002 35

Πώς μπορεί να γίνει χρησιμοποιώντας την dsum σε access query?

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πρόβλημα με dsum συνάρτηση

Δημοσίευση από dva_dev » 07 Φεβ 2009 00:51

Με τα πεδία που έχεις (και το παράδειγμα που δίνεις) δεν μπορεί να γίνει με την dsum (χωρίς κώδικα), αλλά μπορεί να γίνει με κώδικα (χωρίς την dsum). Το πιο απλό που έχω να προτείνω είναι το εξής:

Φτιάξε ένα module και βάλε:

Κώδικας: Επιλογή όλων

Option Explicit

Private tempStr As String
Private tempValue As Long

Public Function RunningSum(ByVal pStr As String, pValue As Long) As Long
    If (pStr = tempStr) Then
        tempValue = tempValue + pValue
    Else
        tempStr = pStr
        tempValue = pValue
    End If
    RunningSum = tempValue
End Function
και μετά φτιάξε ένα query (που να χρησιμοποιεί τον προηγούμενο κώδικα) του στύλ:

Κώδικας: Επιλογή όλων

SELECT code, poso, RunningSum(code ,poso) FROM myTable
Αν τα δεδομένα σου έρχονται ταξινομημένα ως προς code αυτό που έχεις είναι αρκετό, αλλιώς θα πρέπει πριν τρέξεις το query να αρχικοποιήσεις τις μεταβλητές που χρησιμοποιούνται από τον κώδικα. Bάζεις δηλαδή επιπλέον στο module το

Κώδικας: Επιλογή όλων

Public Sub ResetRunningSum()
    tempStr = ""
    tempValue = 0
End Sub
και καλείς την ResetRunningSum()

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

Πρόβλημα με dsum συνάρτηση

Δημοσίευση από kon73 » 07 Φεβ 2009 10:56

Αγαπητέ Φίλε theokoletsis,

H λύση που δίνει ο DVA_DEV είναι μέσω VBA με την οποία ως λύση πάντα προτιμώ όμως εδώ για διευκόλυνση σου αν υπάρχει UNIQUEID (Μοναδικό κλειδί στην βάση σου και υπάρχει ταξινόμηση πρώτα με το CODE και μετά με το UNIQUEID) μπορείς να χρησιμοποιήσεις και υποερωτήματα. Σου παραθέτω το λοιπόν την βάση η οποία έχει ένα ερώτημα RunSum και τον πίνακα TblCodes με τα δεδομένα του παραδείγματος σου.

Στο RunSum θα δεις είτε σε προβολή σχεδίασης είτε σε SQL VIEW ένα υποερώτημα μέσα στο ερώτημα σου το οποίο πιστεύω ότι δίνει λύση στο πρόβλημά σου.

Το λοιπόν τρέχεις το RunSum και βλέπεις τα αποτελέσματα που πιστεύω ότι θέλεις.

Φιλικά

kon73
Συνημμένα
RunningSUm.zip
Τρέχουσα Άθροιση.
(13.18 KiB) Μεταφορτώθηκε 388 φορές
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Απάντηση

Επιστροφή στο “MS Access”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης