Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > [ Ερωτήματα ] Πρόβλημα με ένα query.

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

 

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
Prev Προηγούμενο μήνυμα   Επόμενο Μήνυμα Next
  #5  
Παλιά 25-03-14, 15:08
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

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

Η παρακάτω συνάρτηση, με βάση το φύλο των αθλητών, το έτος γέννησης και το βάρος τους, κατατάσσει τους αθλητές σε κατηγορίες σύμφωνα με το ζητούμενο.

Κώδικας:
Public Function CategoriesWeight(Sex As Variant, Etos As Variant, Baros As Variant) As String
'Sex = "A" (ελληνικό)για αγόρι και "Κ" για κορίτσι
'Etos = το έτος γέννησης
'Baros = το βάρος του αθλητή

    Dim i As Long, j As Long, c As Long
    Dim x(1 To 7) As Variant

    Sex = Nz(Sex, ""): Etos = Nz(Etos, 0): Baros = Nz(Baros, 0)


    x(1) = Array(33, 37, 41, 45, 49, 53, 57, 61, 65)
    x(2) = Array(29, 33, 37, 41, 44, 47, 51, 55, 59)
    x(3) = Array(45, 48, 51, 55, 59, 63, 68, 73, 78)
    x(4) = Array(42, 44, 46, 49, 52, 55, 59, 63, 68)
    '----------------------------------------------
    x(5) = Array(27, 30, 33, 37, 41, 45, 49, 53, 57)
    x(6) = Array(21, 24, 27, 30, 33, 37, 41, 45, 49)
    x(7) = Array(17, 20, 23, 26, 29, 33, 37, 41, 44)

    'Η διάκριση θα έπρεπε να γίνει με βάση την ηλικία του αθλητή.
    'Έγινε όμως με βάση το έτος γέννησης, σύμφωνα με το ζητούμενο

    Select Case Etos
    Case 2002, 2001, 2000
        If Sex = "Α" Then c = 1 Else c = 2
    Case 1999, 1998, 1997
        If Sex = "Α" Then c = 3 Else c = 4
    Case 2003, 2004
        c = 5
    Case 2005, 2006
        c = 6
    Case 2007, 2008, 2009
        c = 7
    Case Else
        Exit Function
    End Select

    For i = 0 To UBound(x(c))
        If Baros < x(c)(0) Then
            CategoriesWeight = "-" & x(c)(i)
            Exit Function
        ElseIf Baros >= x(c)(UBound(x(c))) Then
            CategoriesWeight = "+" & x(c)(UBound(x(c)))
        Else
            If Baros >= x(c)(i) And Baros < x(c)(i + 1) Then
                'Σύμφωνα με τα μαθηματικά το σύμβολο [ δείχνει ότι το κάτω όριο
                'περιλαμβάνεται, ενώ το ) δείχνει ότι το πάνω όριο δεν περιλαμβάνεται
                CategoriesWeight = "[" & CStr(x(c)(i)) & ", " & CStr(x(c)(i + 1)) & ")"
                Exit Function
            End If
        End If
    Next

End Function
Στη συνάρτηση:

1) Οι 12 περιπτώσεις, επειδή κάποιες ήταν όμοιες, περιορίστηκαν σε 7.

2) Στα διαστήματα των κατηγοριών η ελάχιστη τιμή περιλαμβάνεται, ενώ η μέγιστη όχι (ανήκει στην επόμενη κατηγορία).

Για παράδειγμα, αν 33<=Baros<37, ο αθλητής ανήκει στην κατηγορία: [33, 37).

Ενώ αν Baros=37 ανήκει στην κατηγορία: [37,41)

Στην επισυναπτόμενη ΒΔ, μπορούμε να δούμε ένα παράδειγμα χρήσης της συνάρτησης στο ερώτημα Categories

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

ΥΓ. Γιώργο, κάνε δοκιμές μήπως κάτι μου διέφυγε
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb Categories.mdb (384,0 KB, 26 εμφανίσεις)
Απάντηση με παράθεση
 


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Πρόβλημα εισαγωγής δεδομένων σε κελιά του Excel και πρόβλημα με συνάρτηση ΣΟΦΙΑΖΩΤΟΥ Excel - Ερωτήσεις / Απαντήσεις 0 02-12-13 13:14
Βελτιστοποίηση Query σε Access 2007 Dafnh0106 Access - Ερωτήσεις / Απαντήσεις 6 07-03-13 09:43
Query in a multiple value combo box in Access Zoe Forte Access - Ερωτήσεις / Απαντήσεις 11 08-05-12 00:39
Προβλημα με crosstab query dionisis Access - Ερωτήσεις / Απαντήσεις 4 18-03-11 08:11


Η ώρα είναι 15:56.