Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Προοδευτικό σύνολο σε φόρμα (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/974-proodeytiko-sinolo-se-forma.html)

ΤΖΙΜΗΣ 14-02-11 18:16

Προοδευτικό σύνολο σε φόρμα
 
Καλησπέρα σε όλους.Είμαι νέοσ στο Forum
Θα ήθελα να μου πείτε πως μπορώ σε μια φόρμα να κατασκευάσω ένα πεδίο με τίτλο [προοδευτικό σύνολο] όπου θα μου αθροίζει όλα τα ποσά για κάθε μία εγγραφή που κάνω , από το πεδίο [Ποσό]

Meteora 14-02-11 21:23

Καλησπέρα...

Ρίξε μια ματιά εδώ, υπάρχουν πολλές πληροφορίες. Καλό διάβασμα...

Νίκος Δ.

Tasos 15-02-11 06:56

1 Συνημμένο(α)
Καλημέρα!
Αν πρόκειται για απλό ΠΡΟΟΔΕΥΤΙΚΟ ΣΥΝΟΛΟ ενός πεδίου χωρίς επιπλέον υπολογισμούς , θα πρότεινα το παρακάτω παράδειγμα στο συνημμένο.

Φιλικά

Τάσος

kapetang 15-02-11 17:34

1 Συνημμένο(α)
Καλησπέρα στην παρέα

Η ΒΔ που επισυνάπτω παρουσιάζει ένα τρόπο υπολογισμού των μερικών αθροισμάτων, με τα εξής χαρακτηριστικά:
1) Ο υπολογισμός βασίζεται στην ταξινόμηση που εφαρμόζεται κατά τη φόρτωση της φόρμας. Συνεπώς δίνει σωστά αποτελέσματα για οποιαδήποτε ταξινόμηση εφαρμοστεί κατά τη φόρτωση.
2). Δίνει σωστά αποτελέσματα και για την περίπτωση που προσθέσουμε εγγραφές, διαγράψουμε ή τροποποιήσουμε.
Αν, αφού φορτωθεί η φόρμα, αλλάξουμε την ταξινόμηση τα μερικά αθροίσματα δεν θα είναι σωστά. Κάποιες προσπάθειες για την αντιμετώπιση αυτής της αδυναμίας, με έφερε αντιμέτωπο με το ακόλουθο πρόβλημα.
Είναι δυνατόν να ανιχνεύσουμε στον κώδικα το πάτημα των κουμπιών ταξινόμησης (αύξουσας, φθίνουσας) στην κορδέλα;
Έκανα κάποιες προσπάθειες, αλλά δεν τα κατάφερα. Έτσι ζητώ τη βοήθεια του φόρουμ.
Ο υπολογισμός των μερικών αθροισμάτων, γίνεται με τον ακόλουθο κώδικα:
Κώδικας:

Option Compare Database
Option Explicit
Dim sumPrev As Currency

Private Sub Form_AfterDelConfirm(Status As Integer)
    sumPrev = 0
    Me.Requery
End Sub

Private Sub Form_AfterUpdate()
    sumPrev = 0
    Me.Requery
End Sub
Private Sub Form_Load()
    sumPrev = 0
End Sub

Public Function sumTotal(P As Variant) As Variant
    sumTotal = sumPrev + Nz(P, 0)
    sumPrev = sumTotal
End Function

Φιλικά/Γιώργος

Tasos 17-02-11 10:20

Καλημέρα σε όλους!
Γιώργο μου, θα πρέπει να "παλέψεις" πολύ για να ανιχνεύσεις το πάτημα των (πολλών) κουμπιών που προκαλούν αλλαγή διάταξης εγγραφών μια φόρμας!
Αφου λοιπόν βρείς τα Control ID των κουμπιών που σ ενδιαφέρουν, μπορείς να παρακολουθήσεις
μέσα από μια Λειτουργική μονάδα Κλάσσης το συμβάν "Click" των κουμπιών που θα επιλέξεις.

Παρακάτω εξηγείται πως, αλλά λειτουργεί μόνο σε "Κλασσικά CommandBars" και σε μενού συντόμευσης
σε όλες τις εκδόσεις της Access, όχι όμως σε κορδέλλα (Ribbon)!
Για τη δεύτερη (Ribbon) θα χρειαστεί η τροποποίηση του με χρήση κώδικα XML που κατά τη
γνώμη μου θα πρέπει αναπτυχθεί σε νέο θέμα.

Σε μια Λειτουργική μονάδα Κλάσσης με το όνομα:clsAccCmds
περνάμε τον παρακάτω κώδικα:

Κώδικας:

Option Compare Database
'Χρειάζεται αναφορά (Reference) VBA στη βιβλιοθήκη MSO.dll (Microsoft Office xx.x Object Library)
Option Explicit
Public WithEvents CmdSortAscending As Office.CommandBarButton
Public WithEvents CmdSortDescending As Office.CommandBarButton

Private Sub CmdSortAscending_Click(ByVal Ctrl As Office.CommandBarButton, _
        CancelDefault As Boolean)
    MsgBox acCmdSortAscending
End Sub

Private Sub CmdSortDescending_Click(ByVal Ctrl As Office.CommandBarButton, _
        CancelDefault As Boolean)
    MsgBox acCmdSortDescending
End Sub

και στη φόρμα:
Κώδικας:

Option Compare Database
Option Explicit
Private myButtons As New clsAccCmds

Private Sub Form_Load()
    Set myButtons.CmdSortAscending = Application.CommandBars.FindControl(ID:=210)
    Set myButtons.CmdSortDescending = Application.CommandBars.FindControl(ID:=211)
End Sub

Έτσι παρακολουθείς τα κουμπιά ταξινόμησης της Access με εξαίρεση αυτά της κορδέλας (2007+)

Καλή συνέχεια

Τάσος

kapetang 17-02-11 19:44

Καλησπέρα στην παρέα

Φίλε μου Τάσο, ευχαριστώ για την αναλυτική ενημέρωση.
Βούτηξα στα βαθειά. Περίμενα την ύπαρξη ευκολότερης λύσης.
Με τις περιορισμένες γνώσεις στην XML, η προσαρμογή της κορδέλας για μένα είναι δύσκολη.
Αν βρω χρόνο και διάθεση να ασχοληθώ με την XML θα επανέλθω.
Με εκνευρίζει όμως η τακτική της Microsoft, που θέλει με το ζόρι να μάθουμε την XML και που ενώ υποστήριζε ότι θα καταργηθούν οι μακροεντολές και το DAO, στις εκδόσεις 2007+ αποτελούν πρώτη επιλογή.

Γιώργος


Η ώρα είναι 09:55.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2