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

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

Μια άλλη προσέγγιση στο ζητούμενο.
Η παρακάτω συνάρτηση μας δίνει κατευθείαν την Χστή μέγιστη τιμή.

Κώδικας:
Public Function xMax(countMax As Integer, ParamArray values() As Variant) As Variant
    Dim i As Integer, j As Integer, blnC As Boolean
    On Error GoTo ErrHander
    ReDim cMax(countMax)    'για την καταχώρηση των μέγιστων τιμών

    'Αρχικές τιμές στις μεταβλητές των μεγίστων
    cMax(0) = -2E+307
    For j = 1 To countMax
        cMax(j) = cMax(0)
    Next

    'Εύρεση της 1ης, 2ας,..., Χστης  μέγιστης τιμής
    For i = 1 To countMax
        For j = 0 To UBound(values)
            If i = 1 Then
                blnC = cMax(i) < values(j)
            Else
                blnC = cMax(i) < values(j) And values(j) < cMax(i - 1)
            End If
            If blnC Then
                cMax(i) = values(j)
            End If
        Next
    Next
    xMax = cMax(countMax)
    Exit Function
ErrHander:
    xMax = "Λάθος ορίσματα"
End Function
Για την κλήση της το πρώτο όρισμα πρέπει να είναι η τάξη (1,2, κλπ) της μέγιστης τιμής που μας ενδιαφέρει και τα υπόλοιπα τα πεδία που θα συγκριθούν.

Το ερώτημα συνεπώς σε προβολή SQL θα έχει τη μορφή.
Κώδικας:
SELECT tbl.*, xMax(1,[mynumbers],[mynumbers2],[mynumbers3],[mynumbers4],

[mynumbers5],[mynumbers6]) AS 1stMaxRecordvalue, xMax(2,[mynumbers],[mynumbers2],

[mynumbers3],[mynumbers4],[mynumbers5],[mynumbers6]) AS 2stMaxRecordvalue, xMax(3,

[mynumbers],[mynumbers2],[mynumbers3],[mynumbers4],[mynumbers5],[mynumbers6]) AS 3stMaxRecordvalue

FROM tbl;
Στην επισυναπτόμενη ΒΔ μπορούμε να δούμε ένα παράδειγμα.

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