| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Καλησπέρα παιδιά, Έχω το εξής θέμα. Σε μια φόρμα έχω βάλει ένα txtBox στο οποίο θα ήθελα να ενημερώνεται ανάλογα με τον κώδικα IF. Δηλαδή για να γίνω πιο σαφής θα ηθελα το εξής: Έχω 5 κατηφορίες ή βαθμίδες τιμών με τις οποίες θα ήθελα ανάλογα να γράψω ένα κώδικα έτσι ώστε αν για παράδειγμα η τιμή σε ένα πεδίο είναι α) <18,5 να δίνει ένα μύνημα στο txtBox "A" , β) από 18,5 μέχρι 24,9 να δίνει τιμή "Β" , γ) από 25 έως 29.9 να δίνει τιμή "Γ" , δ) από 30 έως 34,9 να δίνει τιμή "Δ" , ε) από 35 έως 39,9 να δίνει τιμή "Ε" και τέλος εάν έχει τιμή >40 να δίνει τιμή "Ζ". Έχω γράχψει ένα σχετικό κώδικα αλλά δυστυχώς για κάποιο λόγο δεν δουλεύει σωστά και δεν μπορώ να καταλάβω λόγο της απειρίας μου τον λόγο... Θα εκτιμούσα την βοήθεια σας. Ευχαριστώ.. Με εκτίμηση, Γιώργος |
|
#2
| |||
| |||
|
Γιώργο, θα μπορούσες να βάλεις στην ιδιότητα 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
| ||||
| ||||
|
Καλησπέρα! Γιώργο, έστω ότι το πεδίο με τις τιμές έχει το όνομα 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
Κώδικας: 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
| |||
| |||
|
Γιώργο καλημέρα!!! Επειδή σε διόρθωση προηγούμενης βάσης σου είδα ότι ασχολείσαι με τα της διαιτολογίας λαμβάνω το θάρρος να συμπληρώσω και εγώ κάτι σχετικό με αυτό που ζητάς. Βλέποντας τις τιμές σαν αυτές που βάζεις στο παράδειγμα, που είναι 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
| |||
| |||
|
Καλημέρα παιδιά, Κατά αρχήν να σας ευχαριστήσω πάρα πολύ και τους 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
| |||
| |||
|
Καλημέρα Τάσο, Αλέξανδρε και Γιώργο, Σας ευχαριστώ πολύ γιατί μου έχετε δώσει πολύ υλικό για μελέτη....! Τελικά έχω επιλύσει το πρόβλημα με μια απο τις τρείς λύσεις που έχει προτείνει ο Τάσος και τον ευχαριστώ θερμά. Χρησιμοποίησα το πιο κάτω: =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
| |||
| |||
|
Καλησπέρα στην παρέα Γιώργο, όταν δημιουργούμε διαστήματα θα πρέπει να είμαστε προσεκτικοί, ώστε να μη υπάρχουν επικαλύψεις και σε κάποιες περιπτώσεις, όπως η συγκεκριμένη, κενά. Στον τύπο που χρησιμοποιείς υπάρχουν κενά. Για παράδειγμα αν η 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 μετράται σε χιλιόγραμμα ανά τετραγωνικό μέτρο και όχι ανά μέτρο. Φιλικά/Γιώργος |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | 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 |
Η ώρα είναι 13:49.

Υβριδικός τρόπος

