Εμφάνιση ενός μόνο μηνύματος
  #9  
Παλιά 10-03-11, 21:00
kapetang Ο χρήστης kapetang δεν είναι συνδεδεμένος
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Η ΒΔ που επισυνάπτω δίνει απάντηση στο ερώτημα:
Πώς θα φιλτράρουμε τις εγγραφές μιας ομαδοποιημένης έκθεσης, έτσι ώστε να εμφανίζονται μόνο οι ομάδες εγγραφών στις οποίες το άθροισμα των τιμών ενός πεδίου (για τις εγγραφές τις ομάδας) υπερβαίνει μία επιλεγμένη τιμή;
1) Η ΒΔ περιέχει τον πίνακα «tblValues», πεδία «fGroup» και «fValues». Οι τιμές του πεδίου «fGroup» χρησιμοποιούνται για την ομαδοποίηση των εγγραφών, και οι τιμές του «fValues» χρησιμοποιούνται για τη δημιουργία των αθροισμάτων.
2) Η έκθεση «rptTable» βασίζεται στον πίνακα «tblValues». Το φιλτράρισμα γίνεται με κατάλληλη αλλαγή της προέλευσης εγγραφών της έκθεσης, όπως φαίνεται στον παρακάτω κώδικα:
Κώδικας:
Private Sub Report_Open(Cancel As Integer)
    Dim strSQL As String
    Dim m As Double
    m = 20                          'μεταβλητή που καθορίζει το όριο του αθροίσματος
    strSQL = "SELECT tblValues.* FROM tblValues" & _
    " WHERE DSum(""fValue"",""tblValues"",""fGroup='"" & [fGroup] & ""'"")>" & m & ";"
    Me.RecordSource = strSQL
End Sub
3) Η Η έκθεση «rptQuery» βασίζεται στον ερώτημα «qryValues». Το φιλτράρισμα γίνεται με την εφαρμογή φίλτρου σε ένα βοηθητικό πεδίο «fSum» που έχει προστεθεί στο ερώτημα, όπως φαίνεται στον παρακάτω κώδικα:
Κώδικας:
Private Sub Report_Open(Cancel As Integer)
    Dim m As Double
    m = 20
    Me.Filter = "[fSum]>" & m
    Me.FilterOn = True
End Sub
Δεν είμαι σίγουρος ότι τα παραπάνω θα βοηθήσουν στην υλοποίηση του ζητούμενου. Ανεβάζω κυρίως τη βάση επειδή έχει γενικότερο ενδιαφέρον και πιθανόν θα μπορούσε να φανεί χρήσιμη σε κάποια μέλη του φόρουμ.

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb FilterGoupReport.mdb (288,0 KB, 33 εμφανίσεις)
Απάντηση με παράθεση