Forum

Αναζήτηση στο ms-office.gr

Πάμε!
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Λανθασμένο αποτέλεσμα μεσω VBA

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

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 22-11-22, 17:26
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 742
Προεπιλογή Λανθασμένο αποτέλεσμα μεσω VBA

Καλησπέρα στους φίλους του φόρουμ

Το πρόβλημα που αντιμετωπίζω ειναι πραγματικά μια σπαζοκεφαλιά που εύχομαι κάποιος φίλος να δώσει την λύση. Μέσα σε ενα VBA Module εχω αρκετές εξισωσεις καποιες απλές και κάποιες καπως πιο πολύπλοκες. Συγκεκριμένα εχω την εξίσωση
Χ= 495 / (1.29579 - 0.35004 * (Log(87 + 97 - 32)) + 0.221 * (Log(167))) - 450 και το κουφό ειναι ότι δίδει λανθασμένο αποτελεσμα (εντελώς αλλού..!!) οταν το δωσω ως string σε καποιο πεδίο μιας φόρμας, και το ακόμη πιο κουφό ειναι ότι εάν παρω ως έχει την πιο πανω εξίσωση σε ένα φύλο Excell διδει το ορθό..(!!) Και λέω το "ορθό" αφού γνωρίζω ακριβως το αποτέλεσμα που πρεπει να προκύψει μεσω ενος αλλου αρχείου Excell.

Υπόψη οτι:
1. Εχω ελέξει το πεδίο ενημέρωσης στην φόρμα και ειναι αριθμητικο (Double , Standard ,2)
2. Εκανα διαφορες δοκιμες σε σημείο οπου εχω δημιουργήσει σε πινακα υπολογιζομενο πεδιο με ιδια εξίωση, ιδιου τυπου πεδιο (Double , Standard ,2) και δινει εντελως διαφορετικο αποτελεσμα απο αυτο στην VBA

Δεν ξερω τι άλλο μπορει να ελέξω αλλά το μόνο που πιστευω (και το εχω ωρες στο μυαλό μου) ισως να εχει καποιο θέμα το πακέτο Office που έχω...(? - 2019 ProPlus 32bit)

Την γνωμη σας ...
__________________
Γιώργος Στυλιανού

gs.pocketpc@gmail.com
Απάντηση με παράθεση
  #2  
Παλιά 22-11-22, 18:10
Super Moderator
Όνομα: ΓΙΩΡΓΟΣ
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 14-01-2014
Μηνύματα: 234
Προεπιλογή

Καλησπέρα Γιώργο,

Το αποτέλεσμα που δίνει στο excel είναι 33,7396 =495/(1,29579-0,35004*(LOG(87 + 97 - 32)) + 0,221*(LOG(167)))- 450

Ενώ στην Access to αποτέλεσμα είναι 292,677014= 495 / (1.29579 - 0.35004 * (Log(87 + 97 - 32)) + 0.221 * (Log(167))) – 450

Ποιο είναι το σωστό?

Η παραπάνω διαφορά υποθέτω έχει να κάνει με την προτεραιότητα των πράξεων και στον διαφορετίκο υπολογισμό της συνάρτησης Log.
__________________
Βραχνάκης Γιώργος
vrahnakisg@gmail.com
Απάντηση με παράθεση
  #3  
Παλιά 22-11-22, 18:20
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 742
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από vraxnakisg Εμφάνιση μηνυμάτων
Καλησπέρα Γιώργο,

Το αποτέλεσμα που δίνει στο excel είναι 33,7396 =495/(1,29579-0,35004*(LOG(87 + 97 - 32)) + 0,221*(LOG(167)))- 450

Ενώ στην Access to αποτέλεσμα είναι 292,677014= 495 / (1.29579 - 0.35004 * (Log(87 + 97 - 32)) + 0.221 * (Log(167))) – 450

Ποιο είναι το σωστό?

Η παραπάνω διαφορά υποθέτω έχει να κάνει με την προτεραιότητα των πράξεων και στον διαφορετίκο υπολογισμό της συνάρτησης Log.
Καλησπέρα Γιώργο, το πρωτο ειναι το ορθό αλλά που στο καλό ειναι το λάθος δεν μπορεσα να καταλαβω
__________________
Γιώργος Στυλιανού

gs.pocketpc@gmail.com
Απάντηση με παράθεση
  #4  
Παλιά 22-11-22, 19:00
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.721
Προεπιλογή

Καλησπέρα

1) Η συνάρτηση Log(x) στην VBA και στην access μας δίνει τον λογάριθμο του x, με βάση το e (έχει άπειρα ψηφία, ισούται με Exp(1), περίπου 2.728282)

2) Η συνάρτηση Log(x) στο excel μας δίνει το λογάριθμο του x, με βάση το 10.

3) Το excel διαθέτει τη συνάρτηση Ln(x), που δίνει τον λογάριθμο του x, με βάση το e.

Δηλαδή η συνάρτηση του excel που ταυτίζεται με τη συνάρτηση Log() της VBA και της access δεν είναι η Log(), αλλά η Ln().

4) Για να πάρουμε, στην access και τη VBA το λογάριθμο του x με βάση το 10, χρησιμοποιούμε τον τύπο Log(x)/log(10).
Απάντηση με παράθεση
  #5  
Παλιά 22-11-22, 19:48
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 742
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από kapetang Εμφάνιση μηνυμάτων
Καλησπέρα

1) Η συνάρτηση Log(x) στην VBA και στην access μας δίνει τον λογάριθμο του x, με βάση το e (έχει άπειρα ψηφία, ισούται με Exp(1), περίπου 2.728282)

2) Η συνάρτηση Log(x) στο excel μας δίνει το λογάριθμο του x, με βάση το 10.

3) Το excel διαθέτει τη συνάρτηση Ln(x), που δίνει τον λογάριθμο του x, με βάση το e.

Δηλαδή η συνάρτηση του excel που ταυτίζεται με τη συνάρτηση Log() της VBA και της access δεν είναι η Log(), αλλά η Ln().

4) Για να πάρουμε, στην access και τη VBA το λογάριθμο του x με βάση το 10, χρησιμοποιούμε τον τύπο Log(x)/log(10).
Καλησπέρα Γιώργο και ευχαριστώ, το εχω ψάξει και εγω στο διαδικτυο και τελικα διαμόεφωσα την εξισωση στην vba σε
x= 495 / (1.29579 - 0.35004 * (Log(87 + 97 - 32) / Log(10)) + 0.221 * (Log(167) / Log(10))) - 450 και όντως λαμβάνω ορθό αποτελεσμα το 33.73.! Ομως,

το πρόβλημα τωρα ειναι οτι εαν στην θέση των αριθμών 87 + 97 - 32 βάλω τα πεδία που εχουν μεσα αυτες τις τιμές, λαμβανω ενετλως λαθος αποτελεσμα παλι, Δηλαδη

x = 495 / (1.29579 - 0.35004 * (Log(Wst + Hps - Nec) / Log(10)) + 0.221 * (Log(167) / Log(10))) - 450 which
Wst string απο πεδίο [Waist]=87
Hps string απο πεδίο [Hips]=97 and
Nec stringαπο πεδίο [Neck]=32

Λαμβανω αποτελεσμα 766,546632982..

Καμια ιδεα?
__________________
Γιώργος Στυλιανού

gs.pocketpc@gmail.com
Απάντηση με παράθεση
  #6  
Παλιά 24-11-22, 09:24
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 08-12-2020
Μηνύματα: 150
Προεπιλογή

Σπάστο ώστε να κάνεις τους υπολογισμούς κομματι κομματι και θα βρεις λογικά το λάθος
Απάντηση με παράθεση
  #7  
Παλιά 24-11-22, 11:22
Όνομα: Πάκος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 17-12-2011
Περιοχή: Θεσσαλονικη
Μηνύματα: 127
Προεπιλογή συνεχεια

ανεξαρτητα που δεν γνωριζω σε τι χρησιμευει ο τυπος δες και αυτη την λυση αν σε κανει
Συνημμένα Αρχεία
Τύπος Αρχείου: accdb Database1.accdb (536,0 KB, 6 εμφανίσεις)
Απάντηση με παράθεση
  #8  
Παλιά 24-11-22, 11:24
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 742
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από tsgiannis Εμφάνιση μηνυμάτων
Σπάστο ώστε να κάνεις τους υπολογισμούς κομματι κομματι και θα βρεις λογικά το λάθος
Καλημέρα Γιάννη, το πρόβλημα επιλυθηκε απλά αλλάζοντας τα string πεδία σε Integer καθως αριθμητικά και τωρα είναι ορθό. Πάντως για να ειμαι ειλικρηνής κάτι παρόμοιο δεν ειχα συναντήσει ποτέ στα πέραν των 10ετων ενασχόλησης μου.

Σε καθε περίπτωση ευχαριστω για το ενδιαφέρον
__________________
Γιώργος Στυλιανού

gs.pocketpc@gmail.com
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] Αποτέλεσμα σε κελί Gogosbmx Excel - Ερωτήσεις / Απαντήσεις 2 07-04-22 23:38
[ Φόρμες ] αρνητικο αποτέλεσμα xristos0718 Access - Ερωτήσεις / Απαντήσεις 3 26-06-21 00:21
[Συναρτήσεις] κριτηρια και αποτελεσμα GreekPowers Excel - Ερωτήσεις / Απαντήσεις 0 16-04-19 13:01
[Γράφημα] Γιατί δημιουργείται λανθασμένο γράφημα; Skakinen Excel - Ερωτήσεις / Απαντήσεις 10 07-01-14 14:39
[Συναρτήσεις] IF δεν εξαφανίζει το αποτέλεσμα. anestaki Excel - Ερωτήσεις / Απαντήσεις 6 16-09-12 15:48


Η ώρα είναι 22:16.