| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Δημήτρη πολύ καλό .Δηλαδή η εφαρμογή συμπεριφέρεται λες και δουλεύουμε στο EXCEL Θα ήθελα να σε ρωτήσω αν μπορούμε να προσθέσουμε και αλλά πεδία. |
|
#2
| |||
| |||
| Παράθεση:
Ακομη και στην αλλη φορμα προσθετουμε οσα θελουμε |
|
#3
| |||
| |||
|
Παραθετω ολοκληρωμενο το παραδειγμα πως μπορουμε μέσα σε μια φορμα να εχουμε ενα υπολογιζομενο πεδιο με πραξεις οριζομενες απο τον χρηστη. Ειτε σε μια απλη φορμα (calculate) Eιτε σε μια φορμα που φερνει τιμες και φορμουλες υπολογισμου μεσα απο πινακα. Μέσα στην φορμουλα υπολογισμου που δηλωνουμε (η εχουμε καταχωρημενη στον πινακα δεδομενων), συμμετεχουν ολα τα πεδια της φορμας (η του πινακα που τα δηλωνουμε στην φορμα) και ολες οι συναρτησεις της VBA (Iif,Log,Date() κλπ οπως και αριθμητικα συμβολα +-*/^). Ετσι με αυτον τον τροπο δινουμε κατα καποιον τροπο την δυνατοτητα στον τελικο χρηστη να χρησιμοποιησει μια μορφη προγραμματισμου η παραμετροποιησης οπως αυτος την χρειαζεται. Εδω ανακαλυψα και την χρησιμοτητα της συναρτησης Εval την οποια αγνοουσα. ![]() Τελικα μαθαινω ψαχνοντας. Ελπιζω να σας φανει χρησιμο ως παραδειγμα Φιλικα Δημητρης |
|
#4
| ||||
| ||||
|
Καλημέρα Δημήτρη! Έχουμε πολύ δουλειά μπροστά μας μ αυτό που ξεκίνησες !!Στο σημείο αυτό θα ήθελα να προσθέσω κι εγώ ένα λιθαράκι με τη χρήση του αντικειμένου 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 Ανάπτυξη επαγγελματικών εφαρμογών |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Η ώρα είναι 15:48.




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