
18-04-11, 11:16
|
 | Διαχειριστής Όνομα: Τάσος Φιλοξενιδης Έκδοση λογισμικού Office: Ms-Office 365 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική | | Εγγραφή: 21-10-2009
Μηνύματα: 2.035
| |
Καλημέρα Δημήτρη!
Έχουμε πολύ δουλειά μπροστά μας μ αυτό που ξεκίνησες  !!
Στο σημείο αυτό θα ήθελα να προσθέσω κι εγώ ένα λιθαράκι με τη χρήση του αντικειμένου 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
Καλή συνέχεια!
Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |