![]() |
Τρεις (ή χ) μεγαλύτερες τιμές από μια λίστα τιμών 2 Συνημμένο(α) Καλησπέρα σε όλους Τελικά μήπως ισχύει το "Όσο πιο πολλά μαθαίνεις τόσες περισσότερες απορίες έχεις"? Πάλι κόλλησα σε κάτι φαινομενικά εύκολο. Παρόλα αυτά δεν βρήκα λύση στο διεθνές προσκήνιο.. Ιδού το πρόβλημα: Πώς μπορούμε να πάρουμε ταυτόχρονα τις τρεις μεγαλύτερες τιμές με διαφορετικές εκφράσεις για την κάθε μία, σε ένα ερώτημα (ή με κώδικα) από μια λίστα τιμών ενός πίνακα; Παρότι υπάρχουν αρκετές λύσεις για την πρώτη ή την χ μεγαλύτερη τιμή (βλέπε συννημένα (σε Access 2010 και 2003)) δεν μπορώ να καταλήξω για την δεύτερη ή για την τρίτη κατά σειρά μεγαλύτερη τιμή ταυτόχρονα. Κάθε ιδέα καλοδεχούμενη... Δημήτρης |
Καλησπέρα! Δημήτρη, σε προβολή SQL ενός ερωτήματος επικόλλησε τον παρακάτω κώδικα SQL και δοκίμασε : Κώδικας: SELECT TOP 1 DMax("mynumbers","tbl") AS Number1, Τάσος |
Αυτό δεν το περίμενα..! Όχι για τόσο για την λύση.. αλλά για την ταχύτητα απάντησης..(31 λεπτά και κάτι δεύτερα..) Ευχαριστώ Τάσο Υ.Γ Αλήθεια ποιο είναι το ρεκόρ στο φορουμ? (χα) |
1 Συνημμένο(α) Σε συνέχεια του προηγούμενου: Πως θα ήταν δυνατό να βρούμε τις τρεις (ή χ) μεγαλύτερες τιμές, αυτή τη φορά μεταξύ όλων των πεδίων μιας εγγραφής; Και σ' αυτή την περίπτωση έχω βρει κώδικα για την πρώτη μεγαλύτερη τιμή (βλέπε module1 και ερώτημα XMaxNumbersOfRecord στο συνημμένο) αλλά για τις αμέσως επόμενες 2 (ή χ) μεγαλύτερες τιμές; Και πάλι ευχαριστώ θερμά Δημήτρης |
Καλημέρα! Δημήτρη, δοκίμασε τον παρακάτω κώδικα SQL: Κώδικας: SELECT Maximum(-2.225E-307,[mynumbers],[mynumbers2],[mynumbers3],[mynumbers4],[mynumbers5],[mynumbers6]) Κώδικας: Option Compare DatabaseΚαλή συνέχεια! Τάσος |
Όχι, αφού βγάλει μερικούς σωστούς υπολογισμούς αρχικά, μετά (και κυρίως όταν η εγγραφή/ες περιέχουν τιμές 0) δεν δείχνει πάντα τα αναμενόμενα αποτελέσματα κυρίως της 2ης και της 3ης μεγαλύτερης τιμής Π.χ όταν δίνω σε μια εγγραφή 8, 1, 9, 0, 0, 0, μου αποδίδει την 1η μεγαλύτερη το 9, τη 2η το 8 και την 3η πάλι το 8. Αλλά και όταν δεν υπάρχουν τιμές 0 πάλι μερικές φορές "κολλάει" σε εντελώς λάθος αποτελέσματα Δημήτρης |
Γενικά, είμαι κατά του κώδικα VBA στα ερωτήματα αν το ζητούμενο μπορεί να λυθεί με χρήση ενσωματωμένων συναρτήσεων της Access. Σε μένα πάντως δεν δημιουργείται κάποιο πρόβλημα ακόμα και σε περισσότερες εγγραφές. Μάλλον θα πρέπει να προσαρμόσεις τον κώδικα στα μέτρα σου. Τάσος |
1 Συνημμένο(α) Καλησπέρα στην παρέα Μια άλλη προσέγγιση στο ζητούμενο. Η παρακάτω συνάρτηση μας δίνει κατευθείαν την Χστή μέγιστη τιμή. Κώδικας: Public Function xMax(countMax As Integer, ParamArray values() As Variant) As VariantΤο ερώτημα συνεπώς σε προβολή SQL θα έχει τη μορφή. Κώδικας: SELECT tbl.*, xMax(1,[mynumbers],[mynumbers2],[mynumbers3],[mynumbers4],Φιλικά/Γιώργος |
Ψάχνοντας βρήκα οτι υπάρχουν πολλές διαφορετικές προσεγγίσεις.. Η λύση του Γιώργου νομίζω οτι μου κάνει άψογα Παρατήρηση: Εάν δεν υπάρχει περίπτωση αρνητικών ορισμάτων θα μπορούσε να γίνει cMax(0) = 0 αντί του cMax(0) = -2E+307. Τάσο, Γιώργο Ευχαριστώ θερμά Δημήτρης |
1 Συνημμένο(α) Δημήτρη σ’ ευχαριστώ. Για να ολοκληρώσω κάπως το θέμα, στην επισυναπτόμενη ΒΔ πρόσθεσα και μία συνάρτηση για την εύρεση της χ χαμηλότερης τιμής. Έκανα και μια μικρή βελτίωση στον κώδικα. Φιλικά/Γιώργος |
| Η ώρα είναι 09:34. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.