Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Ταξινόμηση ABC (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/6134-taksinomisi-abc.html)

johnchrist73 04-06-22 00:16

Ταξινόμηση ABC
 
1 Συνημμένο(α)
Καλημέρα σε όλους
Θα ήθελα την βοήθεια σας στο παρακάτω πρόβλημα:
εχω ενα πίνακα db με 2 στήλες α) προίόντα και β) αξία προϊόντων
θα ήθελα στο ερώτημα dbvs που εχει ταξινιμηθει κατα φθίνουσα αξία προϊόντων να παίρνω τα παρακατω αποτελέσματα σε δυο στήλες ή ξεχωριστα ερωτηματα:

α) χαρακτηρισμός των προίόντων σε ABC ανά πλήθος κωδικών Α= τα πρώτα 20%, Β=τα επόμενα 20% και Ψ= τα υπόλοιπα 60%
β) χαρακτηρισμός των προϊόντων σε ABC ανα μερικό αθροισμα των αξιών Α=το πρώτο 80%, Β= το επόμενο10%, και C= το υπόλοιπο 10% των αξιών

ευχαριστώ

kapetang 05-06-22 11:08

Καλημέρα

Το θέμα σου λύνεται πολύ εύκολα στο Excel.

Προτείνω, συνεπώς, να δημιουργήσεις νέο θέμα στην ενότητα του Excel.

johnchrist73 05-06-22 11:53

Καλημέρα
Οι πληροφορίες που προσπαθώ να αντλήσω απο το παραπανω ειναι μέρος μιας πεπερασμένης σειράς ενεργειών φτιαγμένες όλες στην access, Συνεπώς θα πρέπει να κάνω export και import μεγαλο ογκο δεδομέμων με οτι σημαινει αυτό σε λάθη, χρονο, μη αυτοματισμό.
θα μπορούσες σε παρακαλώ να με βοηθήσεις να το λύσω με access?

Σε ευχαριστώ

kapetang 05-06-22 12:46

Η λύση που ζητάς απαιτεί αρκετή δουλειά.

Επίσης η κατηγοριοποίηση με βάση το τρέχον άθροισμα (που είναι πάντα ταξινομημένο σε αύξουσα σειρά) είναι μπερδεμένη και επισφαλής.

Θα προσπαθήσω.

kapetang 05-06-22 17:22

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

Δες μια πρόταση στο συνημμένο.

1)
Στον πίνακα db πρόσθεσα τα πεδία CurSum, amABC και curABC, για την αποθήκευση του τρέχοντος αθροίσματος
και των κατηγοριών ανάλογα με το amount και το curSum.

2)
Πατώντας το κουμπί της φόρμας frmCategories τρέχει κώδικας ο οποίος:

Αφού διαγράψει τις παλιές τιμές των πεδίων CurSum, amABC και curABC, υπολογίζει το CurSum.

Στη συνέχεια τρέχει τα κατάλληλα ερωτήματα για τη δημιουργία των κατηγοριών A, B και C στις στήλες amABC και curABC.

3)
Επισημαίνω ότι το τρέχον άθροισμα (CurSum) από τη φύση του έχει αύξουσα ταξινόμηση.

Έτσι τα ποσοστά που έδωσες για τη φθίνουσα ταξινόμηση (80% για A, άλλα 10% για B και άλλα 10% )
τα άλλαξα στα αντίστοιχα (10% για C, άλλα 10% για B, άλλα 80% για A).

4)
Στον επεξεργαστή του κώδικα, αν δεν υπάρχει, θα πρέπει να προστεθεί αναφορά στη βιβλιοθήκη: Microsoft office 14.0 Access database engine object.

Το 14.0 αλλάζει ανάλογα με την έκδοση του office (το 14.0 είναι για το 10).

Για την προσθήκη της αναφοράς, στον επεξεργαστή του κώδικα επιλέγουμε:
Tools > References…

johnchrist73 05-06-22 21:54

Καλησπέρα Γιώργο
Πριν ξεκινήσω σε ευχαριστώ θερμα για την πολυτιμη βοηθεια σου.
Απο οσο καταλαβα έχουμε:
amABC χαρακτηρισμός με βάση το πλήθος των κωδικών και σε ταξινόμηση το amount (αυξουσα ή φθίνουσα) νομιζω τρεχει σωστα.
CurSum μερικό αθροισμα της στήλης amount. Νομίζω οτι εδω υπάρχει θεμα διοτι τα μερικά αθροισματα βγαινουν με ταξινόμηση της στήλης materialcode και οχι του amount, οπότε το CurABC χαρακτηρισμός με βάση τα μερικά αθροίσματα του amount στην στήλη CurSum δεν ειναι σωστό.
Συνεπώς θεωρω οτι το πρόγραμα θα δουλευε τέλεια αν το CurSum δουλευε σε ταξινόμιση του amount και οχι του materialcode
Νομιζω να καταφερα να σου μεταφέρω σωστα την σκέψη μου

kapetang 06-06-22 11:14

1 Συνημμένο(α)
Καλημέρα Γιάννη

Επειδή τα μερικά αθροίσματα αλλάζουν ανάλογα με την ταξινόμηση των εγγραφών,
μπορεί να οδηγηθούμε σε αναντιστοιχίες και μπερδέματα.

Συνιστώ να μη χρησιμοποιούνται σε αναλύσεις του ζητούμενου τύπου.

Λόγω αυτού του μειονεκτήματος θεώρησα πιο λογικό (στο προηγούμενο αρχείο)
τα μερικά άθροισμα να υπολογίζονται με τη σειρά εισαγωγής των εγγραφών στον πίνακα db (ID).

Στο συνημμένο άλλαξα τον κώδικα και τα μερικά αθροίσματα (CurSum) υπολογίζονται
με τις εγγραφές ταξινομημένες, ως προ το πεδίο amount, σε φθίνουσα σειρά.

Πρόσθεσα το ερώτημα test στο οποίο η ταξινόμηση γίνεται κατά φθίνουσα σειρά του amount.

Συνεπώς εδώ μπορούμε να δούμε, αν υπολογίστηκαν σωστά τα μερικά αθροίσματα (CurSum) και οι χαρακτηρισμοί amABC και curABC.

johnchrist73 06-06-22 21:40

1 Συνημμένο(α)
Καλησπέρα Γιώργο
και πάλι σε ευχαριστώ πολύ για την ενασχόληση σου με το θέμα μου.

Βασιζόμενος στην λύση που μου προτεινεις ( πιθανότατα δεν σου έχω δώσει να καταλαβεις σωστά το ζητούμενο) προχώρησα λίγο περισσότερο και προτεινω μια λύση που θέλω να την δεις και βασίζεται σε συνδιασμό του κωδικα σου και ερωτημάτων που πρόσθεσα

α) προσθεσα στον πίνακα το υπολογιζόμενο πεδίο plithos

b) στον κώδικα που δημιουργησες στην ενημερωση του amABC αντικατέστισα το amount με το plithοs Και πλεον δουλευει ολόσωστα με όσα δεδομένα του προσθέσω.

c) στον κωδικα σου στην ενημέρωση του CurABC αντικατέστισα στο cursum με το amount αλλά συνεζίζει να μην δουλευει σωστα.(δεν υπολογίζει το 80% του amount)

d)για το λόγο αυτό δημιουργησα ερωτημα νέο και το CurABC_new (δουλευει με τύπο) ειναι ολόσωστο

Αν συμφωνεις με τα παραπάνω (επισυναπτόμενο) και με βοηθούσες να μετατρέψω την ενημέρωση του CurABC_new με κωδικά θα ήταν οτι καλύτερο
και πάλι σε ευχαριστώ

kapetang 07-06-22 11:09

Καλημέρα

Θα ήθελα να διευκρινίσω, κάποια θέματα στα οποία μάλλον υπάρχει σύγχυσή.

1)
Όταν ένα ερώτημα περιέχει τη φράση ‘TOP x PERCENT’ (όπου 0<x<=100), τότε από όλες τις εγγραφές z,
που θα επέστρεφε (με βάση τα κριτήρια) το ερώτημα, θα επιστρέψει τις πρώτες x% του z.

Δηλαδή δε γίνεται κάποια καταμέτρηση των μονάδων πχ του πεδίου Plithos.

Επειδή οι εγγραφές που θα επιστραφούν εξαρτώνται από την ταξινόμηση, θα πρέπει να προσθέσουμε στο ερώτημα
και μια φράση ORDER BY για να ορίσουμε την ταξινόμηση που θέλουμε (πχ φθίνουσα ως προς το πεδίο amount).

2)
Στον πίνακα db το πεδίο ID είναι πρωτεύον κλειδί και συνεπώς έχει πάντα τιμή (δεν μπορεί να είναι NULL)

Στο υπολογιζόμενο πεδίο plithos, αντί για τύπο, θα μπορούσες να δώσεις την τιμή 1.

Όπως όμως εξήγησα δεν παίζει κανένα ρόλο στην επιλογή των ‘TOP x PERCENT’ και συνεπώς είναι άχρηστο.

3)
Έχω μπερδευτεί σχετικά με το χαρακτηρισμό των εγγραφών σε A, B και C, μάλλον όμως απέκλεισες το χαρακτηρισμό με βάση το τρέχον άθροισμα.

Με τα δεδομένα σου λογικός μου φαίνεται μόνο ο χαρακτηρισμός των εγγραφών σε A, B και C με βάση τις τιμές του πεδίου amount.

Επειδή η βαθμολογία γίνεται από τις μεγαλύτερες τιμές προς τις μικρότερες, η ταξινόμηση ως προς το πεδίο amount θα πρέπει να είναι φθίνουσα.

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

johnchrist73 07-06-22 18:30

Καλησπέρα Γιώργο

παντα χρησιμες οι συμβουλές σου. Μαθαίνουμε πολλά από αυτές.

σε ευχαριστώ πολύ

kapetang 07-06-22 20:02

Να είσαι καλά Γιάννη!

kapetang 07-06-22 21:49

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

Επειδή το θέμα έχει γενικότερο ενδιαφέρον και επειδή ο κώδικας στα προηγούμενα αρχεία μου είναι μακροσκελής και δύσκολα προσαρμόσιμος, στο συνημμένο δίνω έναν συντομότερο και πολύ πιο ευέλικτο.

Υποθέτουμε ότι θέλουμε να κατατάξουμε (βαθμολογήσουμε) τις εγγραφές του πίνακα db στις κατηγορίες A, B, C και D με βάση την τιμή του πεδίου amount, από τις μεγαλύτερες τιμές του προς τις μικρότερες.

Συγκεκριμένα, με ταξινομημένο τον πίνακα ως προς το πεδίο amount, σε φθίνουσα σειρά, θέλουμε:
  • Το 20% των εγγραφών να βαθμολογούνται με A.
  • Το επόμενο 20% με Β.
  • Το επόμενο 20% με C και
  • Το επόμενο 40% με D.

Λεπτομέρειες στον κώδικα.

Στο ερώτημα test βλέπουμε αν έχουμε το επιθυμητό αποτέλεσμα.

johnchrist73 13-06-22 20:02

1 Συνημμένο(α)
Καλησπέρα Γιώργο
στο συγκεκριμένο παραδειγμα του οποίου η λύση που πρότεινες ειναι πολύ καλή, προσθεσα 2 στήλες α) μήνας και β) έτος.
Το ερωτημα που έχω ειναι αν θα μπορούσε η παραπανω λύση να εφαρμόζεται ανά μήνα και έτος?

Ευχαριστώ πολύ

kapetang 14-06-22 12:41

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

Γιάννη δες το συνημμένο.

Έχω προσαρμόσει τον κώδικα, για να κάνει τη βαθμολόγηση, ανά έτος και μήνα.

Πρέπει να σημειώσω ότι όταν παίρνουμε ένα ποσοστό από ένα πλήθος εγγραφών ενδέχεται το αποτέλεσμα να μη είναι ακέραιο.

Έτσι γίνεται κάποια στρογγυλοποίηση και τα ποσοστά στο τελικό αποτέλεσμα ενδέχεται να αποκλίνουν από τις αρχικές επιλογές.

Το νέο ερώτημα test δείχνει τη βαθμολογία ανά έτος και μήνα.

johnchrist73 14-06-22 13:40

Πολλά πολλά ευχαριστώ!!

Δουλεύει άψογα!!

Πιστεύω θα βοηθήσει πολλούς στο forum

Να είσαι καλά Γιώργο

kapetang 14-06-22 16:51

Ευαχριστώ Γιάννη και καλή συνέχεια.


Η ώρα είναι 23:24.

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


Search Engine Optimization by vBSEO 3.3.2