Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| ||||
| ||||
προβλημα με αρθοισμα
καλησπέρα στο φορουμ εχω ενα θεμα που με απασχολει εδω και πολυ καιρο εχω φτιαξει μια βαση οπου καταχωρω τιμες απο τιμολογια για να δημιουργησω ενα δελτιο εισαγωγης αλλα περνοτας τις τιμες και κανοντας τις πραξεις ποτε δεν συμβαδιζουν με τις τιμες του τιμολογιου σχεδον παντα εχω αποκληση στο δευτερο δεκαδικο .... τι ρυθμισεις πρεπει να βαλω στα πεδια μου ωστε να κανει τις πραξεις οπως ενα κομπιουτερακι?
|
#2
| |||
| |||
Καλημέρα Γιάννη θα σου πρότειναα να στρογγυλεύεις τα αποτελέσματα στο πλησιέστερο εκατοστό (λεπτό). Για το σκοπό αυτό χρησιμοποίησε τη συνάρτηση Round(). Για παράδειγμα, αν το πεδίο [ΤΙΜΗ] έχει την τιμή ενός προϊόντος και το [ΦΠΑ] τον συντελεστή ΦΠΑ, για να βρούμε το αντίστοιχο ΦΠΑ, θα χρησιμοποιήσουμε τον τύπο: Round ([ΤΙΜΗ]*[ΦΠΑ];2) |
#3
| ||||
| ||||
καλησπέρα γιώργο σε ευχαριστω παρα πολύ για την αμεση ανταποκριση στο ερώτημα μου αλλα φίλε μου το εχω δοκιμάσει αυτο με την round αλλα δεν εχω το επιθυμητό αποτέλεσμα .... σε ευχαριστώ παντως για το ενδιαφέρον σου.... έχεις να προτίνεις κάτι άλλο? παραθέτω μία είκονα απο το ερωτημα "ΠΑΡΑΛΑΒΗ" το γινομανο 5*2,753=13,765 οταν κανω την πραξη στην αριθμομηχανη οταν το κανω σε πεδιο υπολογισμου "katharitimi" μου δεινει γινομενο 5*2,753=13.76 το πεδιο υπολογισμού μου ειναι "=round(([ΠΟΣΟΤΗΤΑ ΠΑΡΑΛΑΒΗΣ]*[timimonados]);2) δεν θα επρεπε να μου κανει την στρογγυλοποίηση και να μου δωσει γινομενο 13,77.... τι λάθος κάνω?... Τελευταία επεξεργασία από το χρήστη johnioa : 13-07-17 στις 16:09. |
#4
| |||
| |||
Έχεις δίκιο, στη συγκεκριμένη περίπτωση, η συμπεριφορά της Round() δεν είναι σωστή. Αν θέλεις δοκίμασε το ίδιο στο Excel. Νομίζω δίνει σωστό αποτέλεσμα. Τελικά αντί της Round() δοκίμασε τον τύπο:=CInt(100*[ΠΟΣΟΤΗΤΑ ΠΑΡΑΛΑΒΗΣ]*[timimonados])/100, που επίσης στρογγυλεύει το αποτέλεσμα στο πλησιέστερο εκατοστό. |
#5
| ||||
| ||||
γιώργο το ίδιο αποτελεσμα μου δεινει ακριβως το ίδιο αποτελεσμα με την round ... επίσης να πω οτι στο πίνακα που υπαρχουν τα πεδια "timimonados" εχει ιδιοτητες Μεγεθος πεδίου=δεκαδικός , Μορφή=Ευρώ, Ακρίβεια=4, κλιμακα=3, δεκαδικές θέσεις=3 . Το πεδίου "ΠΟΣΟΤΗΤΑ ΠΑΡΑΛΑΒΗΣ" Μέγεθος πεδιου=δεκαδικός, μορφη=βασική, ακριβεια=18 , κλίμακα=2 και δεκαδικές θέσεις=2..... μήπως κανω εκει κάποιο λάθος? με βασανιζει πανω απο μηνα αυτο
Τελευταία επεξεργασία από το χρήστη johnioa : 13-07-17 στις 20:29. |
#6
| |||
| |||
Γιάννη, δεν μπορώ να σκεφτώ κάτι άλλο.
|
#7
| ||||
| ||||
Καλησπέρα. Η Round() έχει μια περίεργη λογική στην στρογγυλοποίηση για αριθμούς που τελειώνουν σε 5. Έτσι την ξεγελάμε προσθέτοντας κάτι μηδαμινό για να έχουμε στρογγυλοποίηση προς τα πάνω. Αυτό το μηδαμινό δεν πρέπει να σχετίζεται με την ακρίβεια που θέλουμε... Κάνε δοκιμές κάπως έτσι : ROUND(5*2.753+0.000000001,2) Αυτά φίλε μας / Νίκος |
#8
| |||
| |||
Έχω τη γνώμη ότι η προσθήκη ενός μικρού αριθμού μπορεί να έχει άλλες παρενέργειες. Για παράδειγμα: round(13,344999999999;2) = 13,34. Ενώ round(13,344999999999 + 0,000000001;2)=13,35 |
#9
| ||||
| ||||
χμ! Δεν νομίζω ότι η περίπτωση που συζητάμε μας εμπλέκει με αριθμούς με 7-8 δεκαδικά... Εξάλλου έγραψα ότι η τεχνική που προτείνω έχει να κάνει με την ακρίβεια. Να είσαι καλά φίλε μου Γιώργο. Νίκος |
#10
| |||
| |||
Φίλε Νίκο να είσαι επίσης καλά. Προσθέτουμε τη μικρή ποσότητα για να μας δίνει η Round σωστό αποτέλεσμα σε κάποια οριακή περίπτωση. Η προσθήκη αυτή θα μας δώσει λάθος στην ακόλουθη επίσης οριακή περίπτωση. Αν ποσότητα μετά το δεύτερο δεκαδικό είναι μικρότερη αλλά πολύ κοντά στην τιμή 0,005 η μικρή προσαύξηση θα την κάνει >=0,005 και έτσι η Round θα επιστρέψει λάθος τιμή. |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Γενικά] Πρόβλημα εισαγωγής δεδομένων σε κελιά του Excel και πρόβλημα με συνάρτηση | ΣΟΦΙΑΖΩΤΟΥ | Excel - Ερωτήσεις / Απαντήσεις | 0 | 02-12-13 13:14 |
Η ώρα είναι 18:53.