Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Yπολογισμός Μαθηματικής Παράστασης

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 17-04-11, 10:50
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-11-2010
Περιοχή: Γιαννιτσά
Μηνύματα: 149
Προεπιλογή Yπολογισμός Μαθηματικής Παράστασης

Σκεφτομουν οτι πλεον ειναι απαραιτητο στα ετοιμα προγραμματα να δινεται η δυνατοτητα στον τελικο χρηστη να υπολογιζει καποια πεδια βαση καποιας εκφρασης χρησιμοποιοντας μεταβλητες(πεδια) απο την υπαρχουσα βαση του.
Το συνανταμε δε πολυ συχνα σε ERP προγραμματα και πολλα αλλα.
Προσπαθησα να φτιαξω μια συναρτηση που βαση καποιας εκφρασης συμμετεχοντας μεσα και μεταβλητες (πεδια) να φερνει το επιθυμητο αποτελεσμα.
Δουλευει καλα για τις κλασικες πραξεις αν και θελει να μπουνε και καποιοι ελεγχοι σε περιπτωσεις κενων κλπ. Απλα σαν ιδεα το παραθετω και στην διαρκεια το βελτιωνουμε.
Αυτο που θα ηταν βεβαια πολυ χρησιμο θα ηταν αν με καποιο τροπο και εδω μπαινουν τα γερα μολυβια του Forum μπορουσαμε να ενσωματωσουμε και ετοιμες συναρτησεις της Αccess οπως πχ LEN,LOG,IIF,DATE() και αλλες πολλες.

Δοκιμαστε και αυτο σαν εκφραση
log(A^C)/log(10)+exp(d)+a^2+len(a)
.......Δουλευει

Ακουω ιδεες. Ελπιζω να βγει κατι καλο απο ολη αυτη την σκεψη

Φιλικα Δημητρης
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb calc_equation.mdb (224,0 KB, 50 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη Dimitris Ch : 17-04-11 στις 14:23.
Απάντηση με παράθεση
  #2  
Παλιά 17-04-11, 14:33
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-11-2010
Περιοχή: Γιαννιτσά
Μηνύματα: 149
Προεπιλογή

Τελικα δουλευει και ετσι
μπορουμε πχ να γραψουμε iif(a>d,b,c)
Φυσικα το ερωτημα ειναι τι θα κανει αν γραψουμε date() μια και η λογικη ειναι να αντικατασταθει το a με το νουμερο της μεταβλητης (a).
Ισως πρεπει να βαλουμε τις μεταβλητες σε [] πχ και να τροποποιησουμε λιγο τον κωδικα.
Θα το δω

Νομιζω οτι ειναι καλο. Η μεθοδος ομως με φοβιζει σε μεγαλους υπολογισμους πολλων εγγραφών
Απάντηση με παράθεση
  #3  
Παλιά 17-04-11, 15:45
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-11-2010
Περιοχή: Γιαννιτσά
Μηνύματα: 149
Προεπιλογή

Κοιταξτε λιγο τις 2 φορμες της βασης που παραθετω
Η μια κανει υπολογισμους που θα δωσουμε στον τυπο (calculate)
H αλλη εμφανιζει αποτελεσματα ενος πινακα υπολογιζοντας ενα πεδιο με την μεθοδο που θελει ο χρηστης

Δημητρης
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb calc_equation.mdb (716,0 KB, 33 εμφανίσεις)
Απάντηση με παράθεση
  #4  
Παλιά 17-04-11, 18:06
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-11-2010
Περιοχή: Γιαννιτσά
Μηνύματα: 149
Προεπιλογή

Με καποιες διορθωσεις.
Εδω χρησιμοποιουμε κανονικα ονοματα πεδιων του πινακα
Στο παραδειγμα αυτο κανω και εκπτωση στην τιμη ειδους βαση των 2 πρωτων ψηφιων του κωδικου
Σχολια ομως δεν βλεπω. Δεν το βρισκετε ενδιαφερον.....?

Φιλικα Δημητρης
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb calc_equation.mdb (316,0 KB, 29 εμφανίσεις)
Απάντηση με παράθεση
  #5  
Παλιά 17-04-11, 18:36
Όνομα: ΤΖΙΜΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 11-02-2011
Περιοχή: Πύργος Ηλείας
Μηνύματα: 227
Προεπιλογή

Δημήτρη πολύ καλό .Δηλαδή η εφαρμογή συμπεριφέρεται λες και δουλεύουμε στο EXCEL
Θα ήθελα να σε ρωτήσω αν μπορούμε να προσθέσουμε και αλλά πεδία.
Απάντηση με παράθεση
  #6  
Παλιά 17-04-11, 18:50
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-11-2010
Περιοχή: Γιαννιτσά
Μηνύματα: 149
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από ΤΖΙΜΗΣ Εμφάνιση μηνυμάτων
Δημήτρη πολύ καλό .Δηλαδή η εφαρμογή συμπεριφέρεται λες και δουλεύουμε στο EXCEL
Θα ήθελα να σε ρωτήσω αν μπορούμε να προσθέσουμε και αλλά πεδία.
Ναι στην φορμα base μπορεις να χρησιμοποιεις ολα τα πεδια του πινακα base. Αρκει να προσθεσεις και αλλα πεδια στον πινακα
Ακομη και στην αλλη φορμα προσθετουμε οσα θελουμε
Απάντηση με παράθεση
  #7  
Παλιά 18-04-11, 00:26
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-11-2010
Περιοχή: Γιαννιτσά
Μηνύματα: 149
Προεπιλογή

Παραθετω ολοκληρωμενο το παραδειγμα πως μπορουμε μέσα σε μια φορμα να εχουμε ενα υπολογιζομενο πεδιο με πραξεις οριζομενες απο τον χρηστη.
Ειτε σε μια απλη φορμα (calculate)
Eιτε σε μια φορμα που φερνει τιμες και φορμουλες υπολογισμου μεσα απο πινακα.
Μέσα στην φορμουλα υπολογισμου που δηλωνουμε (η εχουμε καταχωρημενη στον πινακα δεδομενων), συμμετεχουν ολα τα πεδια της φορμας (η του πινακα που τα δηλωνουμε στην φορμα) και ολες οι συναρτησεις της VBA (Iif,Log,Date() κλπ οπως και αριθμητικα συμβολα +-*/^).
Ετσι με αυτον τον τροπο δινουμε κατα καποιον τροπο την δυνατοτητα στον τελικο χρηστη να χρησιμοποιησει μια μορφη προγραμματισμου η παραμετροποιησης οπως αυτος την χρειαζεται.
Εδω ανακαλυψα και την χρησιμοτητα της συναρτησης Εval την οποια αγνοουσα.
Τελικα μαθαινω ψαχνοντας.
Ελπιζω να σας φανει χρησιμο ως παραδειγμα

Φιλικα Δημητρης
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb calc_equation.mdb (248,0 KB, 40 εμφανίσεις)
Απάντηση με παράθεση
  #8  
Παλιά 18-04-11, 11:16
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.030
Προεπιλογή

Καλημέρα Δημήτρη!
Έχουμε πολύ δουλειά μπροστά μας μ αυτό που ξεκίνησες!!

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

Το WizHook δεν υποστηρίζεται επίσημα, υπάρχει όμως σε όλες τις εκδόσεις Access ξεκινώντας από την Acc 2000.
Ωστόσο μπορεί να βρει κανείς σχετική βοήθεια που όμως βασίζεται στα πειράματα του εκάστοτε συγγραφέα.
Με τον τρόπο αυτό δεν είναι αναγκαία η χρήση αγκυλών "[ ]" στο πεδίο όπου πληκτρολογείται η έκφραση πχ:

Η έκφραση στο πεδίο EQUATION είναι: "iif(a>d,date(),log(a^c))+exp(d)+d*b+c+1.6"

Στο υπολογισμένο πεδίο έχουμε τον τύπο: =calc([EQUATION])

Στη λειτουργική μονάδα της φόρμας:

Κώδικας:
Option Compare Database
Option Explicit

Function Evaluate(mystr As String) As Variant
    Dim C As String
    While InStr(1, mystr, "[", 0) > 0
        C = Mid(mystr, InStr(1, mystr, "[", 0), InStr(1, mystr, "]", 0) - InStr(1, mystr, "[", 0) + 1)
        mystr = Replace(mystr, C, Me.Controls(C).Value)
    Wend
    Evaluate = Eval(mystr)
End Function

Function Calc(strInput As String) As Variant
    Dim strOutput As String, x, Parse_Flags As Long
    strOutput = ""
    Parse_Flags = 16&
    WizHook.Key = 51488399
    If WizHook.TranslateExpression(strInput, strOutput, Parse_Flags, 0&) = True Then
        x = Evaluate(strOutput)
        Calc = x
    Else
        Calc = "???"
    End If
End Function
Καλή συνέχεια!

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb Calc_equation(WizHook).mdb (204,0 KB, 52 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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



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