Ανανέωση ιστοσελίδας

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

Κλειστό Θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 23-01-14, 22:21
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή Caption Title μέσω IF

Καλησπέρα παιδιά,

Έχω το εξής θέμα. Σε μια φόρμα έχω βάλει ένα txtBox στο οποίο θα ήθελα να ενημερώνεται ανάλογα με τον κώδικα IF. Δηλαδή για να γίνω πιο σαφής θα ηθελα το εξής:

Έχω 5 κατηφορίες ή βαθμίδες τιμών με τις οποίες θα ήθελα ανάλογα να γράψω ένα κώδικα έτσι ώστε αν για παράδειγμα η τιμή σε ένα πεδίο είναι α) <18,5 να δίνει ένα μύνημα στο txtBox "A" , β) από 18,5 μέχρι 24,9 να δίνει τιμή "Β" , γ) από 25 έως 29.9 να δίνει τιμή "Γ" , δ) από 30 έως 34,9 να δίνει τιμή "Δ" , ε) από 35 έως 39,9 να δίνει τιμή "Ε" και τέλος εάν έχει τιμή >40 να δίνει τιμή "Ζ".

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

Θα εκτιμούσα την βοήθεια σας.

Ευχαριστώ..


Με εκτίμηση,

Γιώργος
  #2  
Παλιά 24-01-14, 00:01
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Γιώργο, θα μπορούσες να βάλεις στην ιδιότητα control source (προέλευση στοιχείου ελέγχου) του txtBox τον τύπο:

=IIf([txtF]<18,5;"Α";IIf([txtF]<25;"Β";IIf([txtF]<30;"Γ";IIf([txtF]<35;"Δ";IIf([txtF]<40;"Ε";"Ζ")))))

Στον παραπάνω τύπο το txtF θα πρέπει αντικατασταθεί με το πραγματικό όνομα του πεδίου.

Αν το πεδίο έχει και Null τιμές χρησιμοποίησε τον τύπο:

=IIf([txtF] Is Null;"";IIf([txtf]<18,5;"Α";IIf([txtf]<25;"Β";IIf([txtf]<30;"Γ";IIf([txtF]<35;"Δ";IIf([txtF]<40;"Ε";"Ζ"))))))

Τελευταία επεξεργασία από το χρήστη kapetang : 24-01-14 στις 00:11. Αιτία: Προσθήκη για Null τιμές
  #3  
Παλιά 24-01-14, 00:05
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλησπέρα!
Γιώργο, έστω ότι το πεδίο με τις τιμές έχει το όνομα FieldValue.

Σε ένα πεδίο πέρασε τον τύπο:
Κώδικας:
=Switch([FieldValue]<=18,5;"Α";[FieldValue] Between 18,6 And 24,9;"Β";[FieldValue] Between 25 And 29,9;"Γ";
[FieldValue] Between 30 And 34,9;"Δ";[FieldValue] Between 35 And 39,9;"Ε";[FieldValue]>=40;"Ζ")
Μπορείς να χρησιμοποιήσεις όσες εκφράσεις θελήσεις.


Στη VBA


Στον VBE η υποδιαστολή πρέπει να είναι τελεία, όχι κόμμα.

Δες μια συνάρτηση/παράδειγμα με VBA:

Κώδικας:
Public Function GetStringValue(ValueField As Access.TextBox) As String
    Dim dblValue As Double
    If IsNumeric(ValueField) Then
        dblValue = CDbl(ValueField.Value)
        Select Case True
            Case dblValue < 18.6
                GetStringValue = "Α"
            Case dblValue >= 18.6 And dblValue <= 24.9
                GetStringValue = "Β"
            Case dblValue >= 25 And dblValue <= 29.9
                GetStringValue = "Γ"
            Case dblValue >= 30 And dblValue <= 34.9
                GetStringValue = "Δ"
            Case dblValue >= 35 And dblValue <= 39.9
                GetStringValue = "Ε"
            Case dblValue >= 40
                GetStringValue = "Ζ"
        End Select
    End If
End Function
Ή με ElseIF αν δεν υπάρχουν κενά ανάμεσα στους αριθμούς των κριτηρίων (γίνεται φυσικά και με την παραπάνω συνάρτηση) :
Κώδικας:
Public Function GetStringValue(ValueField As Access.TextBox) As String
    Dim dblValue As Double
    If IsNumeric(ValueField) Then
        dblValue = CDbl(ValueField.Value)
        If dblValue < 18.6 Then
            GetStringValue = "Α"
        ElseIf dblValue <= 24.9 Then
            GetStringValue = "Β"
        ElseIf dblValue <= 29.9 Then
            GetStringValue = "Γ"
        ElseIf dblValue <= 34.9 Then
            GetStringValue = "Δ"
        ElseIf dblValue <= 39.9 Then
            GetStringValue = "Ε"
        Else
            GetStringValue = "Ζ"
        End If
    End If
End Function
Καλή συνέχεια!

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 24-01-14 στις 00:46.
  #4  
Παλιά 24-01-14, 08:01
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

Γιώργο καλημέρα!!!

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

Ρίξε μια ματιά στο κώδικα

Αν και δεν έχω ασχοληθεί και πολύ με το αντικείμενο



Κώδικας:
Private Sub Calculate_Click()
    Me.indeks.Visible = True
    Me.boy2 = Me.boy
    Me.boykare = ([boy] * [boy2])
    Me.indeks = ([kilo] / [boykare])
    Me.Form.Requery
    If Me.indeks > 0 And Me.indeks < 18.4 Then
        Me.Info = "επικίνδυνα χαμηλό σωματικό βάρος"
    Else
        If Me.indeks >= 18.5 And Me.indeks < 24.9 Then
            Me.Info = "Κανονικό Βάρος" 
        Else
            If Me.indeks >= 25 And Me.indeks < 29.9 Then
                Me.Info = "Υγιές Βάρος" 
            Else
                If Me.indeks >= 30 And Me.indeks < 34.9 Then
                    Me.Info = "Παχύσαρκος Τύπου Α"
                Else
                    If Me.indeks >= 35 And Me.indeks < 44.9 Then
                        Me.Info = "Παχύσαρκος Τύπου Β",
                    Else
                        If Me.indeks >= 45 Then
                            Me.Info = "Νοσογόνο Παχυσαρκία"
                        End If
                    End If
                End If
            End If
        End If
    End If
    Me.Form.Requery
End Sub

Τελευταία επεξεργασία από το χρήστη alex : 24-01-14 στις 22:49.
  #5  
Παλιά 24-01-14, 09:51
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή

Καλημέρα παιδιά,

Κατά αρχήν να σας ευχαριστήσω πάρα πολύ και τους 3 σας για την πρόθεση βοήθειας προς εμένα.
Όντως Αλέξανδρε περί αυτού πρόκυτε.! Πρόκυτε για την βάση που φτιάχνω για διαιτολόγο στην οποία αυτό που πρέπει να κάνω είναι το εξής:

Στην διαιτολογία υπάρχει ένας πίνακας ο οποίος σχετίζεται με το BMI (δείκτης Μάζας Σώματος) του ανθρώπου. Δηλαδή:
1) εάν το άτομο έχει BMI <18,5kg/m τότε το άτομο έχει [B]"επικίνδυνα χαμηλό σωματικό βάρος"
2) εάν το BMI κυμαίνεται μεταξύ 18,5kg/m και 24,9kg/m τότε το άτομο έχει "Υγιές Βάρος" ,
3) εάν είναι μεταξύ BMI 30kg/m - 34,9kg/m είναι "Παχύσαρκος Τύπου Α" ,
4) εαν είναι BMI μεταξύ 35kg/m και 39,9kg/m είναι "Παχύσαρκος Τύπου Β",
5) και τέλος εάν το BMI του ατόμου είναι >40kg/m τότε το άτομο έχει "Νοσογόνο Παχυσαρκία" .

¨Ετσι λοιπόν και εγώ, εφόσον στην σχετική φόρμα έχω κάνει μια σειρά απο μαθηματικούς τύπους εν τέλη καταλήγω και παίρνω το σχετικό BMI για κάθε άτομο το οποίο αναγράφεται στο πεδίο BMI (ref). Έχω βάλει επίσης και ένα σχετικό txtBox το "txtBoxBMI" στο οποίο εφόσον στο πεδίο BMI (ref) έχει μια οποιαδήποτε απο τις πιο πάνω τιμές τότε να μπορεί να δίνει το σχετικό μήνυμα για κάθε περίπτωση.

Όπως έχω αναφέρει στην αρχή, έχω προσπαθήσει με IF και ElseIf να κάνω την πιο πάνω δουλειά αλλά δυστυχώς δεν έχω καταφερει να κάνω τίποτα σχεδόν . Σε κάθε περίπτωση παιδιά σας ευχαριστώ όλους και θα κάτσω να προσπαθήσω με τα παραδείγματα που μου έχετε δώσει να προσπαθήσω να τα καταφέρω. Θα επανέλθω αργότερα...

Σας ευχαριστώ
  #6  
Παλιά 25-01-14, 11:47
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή

Καλημέρα Τάσο, Αλέξανδρε και Γιώργο,

Σας ευχαριστώ πολύ γιατί μου έχετε δώσει πολύ υλικό για μελέτη....! Τελικά έχω επιλύσει το πρόβλημα με μια απο τις τρείς λύσεις που έχει προτείνει ο Τάσος και τον ευχαριστώ θερμά.
Χρησιμοποίησα το πιο κάτω:

=Switch([FieldValue]<=18,5;"Α";[FieldValue] Between 18,6 And 24,9;"Β";[FieldValue] Between 25 And 29,9;"Γ";
[FieldValue] Between 30 And 34,9;"Δ";[FieldValue] Between 35 And 39,9;"Ε";[FieldValue]>=40;"Ζ")

Σας ευχαριστώ θερμά και τους τρείς σας.

Με εκτίμηση,

Γιώργος
  #7  
Παλιά 25-01-14, 15:03
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

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

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

Στον τύπο που χρησιμοποιείς υπάρχουν κενά.

Για παράδειγμα αν η BMI=24,95 ή BMI=18,1, επειδή οι τιμές δεν περιλαμβάνονται σε κανένα διάστημα, ο τύπος δε θα δώσει αποτέλεσμα.

Τα παρακάτω διαστήματα καλύπτουν όλο το εύρος των πραγματικών αριθμών και δεν έχουν επικαλύψεις.

1) BMI <18,5

2) 18,5 <=ΒΜΙ και ΒΜΙ<25

3) 25 <=ΒΜΙ και ΒΜΙ<30

4) 30 <= BMI και BMI<35

5) 35 <= BMI και ΒΜΙ<40

6) BMI ≥40

Στον τύπο, που πρότεινα, λαμβάνονται υπόψη οι παραπάνω παρατηρήσεις και μπορείς να τον χρησιμοποιήσεις όπως είναι.

Φυσικά μπορείς να προσαρμόσεις και οποιαδήποτε άλλη από τις προτεινόμενες μεθόδους από τον Τάσο.

Σημειώνω επίσης ότι ο BMI μετράται σε χιλιόγραμμα ανά τετραγωνικό μέτρο και όχι ανά μέτρο.

Φιλικά/Γιώργος
Κλειστό Θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Δημιουργία Folder μέσω Vba γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 5 15-03-16 12:04
caller id μεσω access asterix Access - Ερωτήσεις / Απαντήσεις 1 04-06-12 16:20
[VBA] Μεταβολή ιδιότητας Caption σε Optionbutton με vba kalkandi1 Excel - Ερωτήσεις / Απαντήσεις 4 11-11-11 07:09
Me.Caption = Forms![Περιοχή ημερομηνιών έκθεσης].OpenArgs vasia_gou Access - Ερωτήσεις / Απαντήσεις 4 13-09-11 22:00


Η ώρα είναι 11:26.