
25-09-13, 18:50
|
| Όνομα: Γιώργος Έκδοση λογισμικού 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;
Στην επισυναπτόμενη ΒΔ μπορούμε να δούμε ένα παράδειγμα.
Φιλικά/Γιώργος
|