Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Παραμετροποίηση πεδίων
Καλησπέρα σας και συγχαρητήρια για το forum Θα ήθελα αν μπορεί να μου πει κάποιος πως θα φτιάξω μια συνάρτηση η οποία θα διαχειρίζεται διαφορετικά ονόματα πεδίων. Για να γίνω πιο κατανοητός … Σε μια φόρμα έχω 48 πεδία και τα οποία όταν αλλάζει κάτι εκτελούν ακριβώς τις ίδιες εντολές . Χρειάζομαι λοιπόν μια συνάρτηση η οποία θα εκτελεί πάντα τις ίδιες εντολές αλλά κάθε φορά με διαφορετικά πεδία. Και αυτό το θέλω από την μια να μην γεμίζω με κώδικα και από την άλλη σε περίπτωση αλλαγών στις εντολές να γίνετε πιο εύκολα. Όπως θα δείτε παρακάτω το μόνο που θα αλλάζει θα είναι το Me.A01 με το Me.B01 κλπ Private Sub A01_LostFocus() If Me.A01 <> "00000" Then Me.A01.ForeColor = RGB(0, 0, 0) Me.A01.BackColor = RGB(255, 255, 255) Else Exit Sub End If End Sub Private Sub B01_LostFocus() If Me.B01 <> "00000" Then Me.B01.ForeColor = RGB(0, 0, 0) Me.B01.BackColor = RGB(255, 255, 255) Else Exit Sub End If End Sub Ευχαριστώ εκ των προτέρων για την ανταπόκριση σας |
#2
| ||||
| ||||
Καλησπέρα... Δίνω μια πρόταση στην οποία δυο πεδία περνούν ως παράμετροι στην ίδια ρουτίνα. Στην Module της εφαρμογής όρισα μια public μεταβλητή, η οποία παίρνει το όνομα του πεδίου. Ομολογώ ότι δεν το έχω ξανακάνει και θα με ενδιέφερε η γνώμη φίλων, οι οποίοι έχουν καλύτερη γνώση VBA από εμένα. Θεωρώ το ερώτημα του Χάρη "λίαν ενδιαφέρον" και έτσι δικαιολογώ γιατί ασχολήθηκα με πείσμα και γιατί αναμένω βελτιωμένες και πλέον έγκυρες προτάσεις. Να είμαστε όλοι καλά / Νίκος Δ. Υστερολόγιο : Χάρη καλωσόρισες... |
#3
| |||
| |||
θα ελεγα απο τυχη την βρηκα την λυση ειναι τοσο απλη και εγω εψαχνα στα δυσκολα απλα δηλωνεις στην ρουτινα την μεταβλητη σαν control και ολα ειναι οκ Σας δινω ενα παραδειγμα που ισως βοηθησει καποια ατομα η πρωτη ρουτινα εχει τους παραμετρους και οι υπολοιπες ρουτινες καλουνε την πρωτη καθε φορα με διαφορετικα πεδια Private Sub AFTER_P(met1 As Control, met1p As Control) If met1 = "00000" Then met1p = -1 If met1p = -1 Or met1 = "00000" Then met1p.BackColor = 16777215 If met1p = 1 And met1 <> "0000" Then met1p.BackColor = 65280 MsgBox "kataxwrhsh kinhshs" End If If met1p = 0 And met1 <> "0000" Then met1p.BackColor = 255 MsgBox "kataxwrhsh akyrwshs" End If If met1p = -1 Or met1 = "00000" Then met1p.BackColor = 16777215 met1p.Locked = False Else met1p.Locked = True End If End Sub Private Sub A01P_AfterUpdate() Call AFTER_P(Me.A01, Me.A01P) End Sub Private Sub B01P_AfterUpdate() Call AFTER_P(Me.B01, Me.B01P) End Sub Private Sub C01P_AfterUpdate() Call AFTER_P(Me.C01, Me.C01P) End Sub Private Sub D01P_AfterUpdate() Call AFTER_P(Me.D01, Me.D01P) End Sub Private Sub E01P_AfterUpdate() Call AFTER_P(Me.E01, Me.E01P) End Sub ελπιζω να βοηθησα καλη σας νυχτα |
#4
| |||
| |||
Γεια σας Ίσως τα παρακάτω να μπορούναν να βοηθήσουν στη συγγραφή απλούστερου και πιο κατανοητού κώδικα: 1. Κάθε χειριστήριο (control) εκτός από το όνομα έχει μια ιδιότητα ετικέτα (tag) που μπορούμε να την ορίσουμε στη μορφή σχεδίασης. Έστω ότι μας ενδιαφέρουν 10 χειριστήρια και ορίζουμε την ιδιότητα tag στους φυσικούς 1, 2, 3, ..., 10. 2. Κάθε χειριστήριο που έχει την εστίαση μπορεί να προσδιοριστεί στον κώδικα με την έκφραση me.ActiveControl. Έτσι οι εκφράσεις me.ActiveControl.Name και me.ActiveControl.Tag μας δίνουν το όνομα και την ετικέτα του. 3. Μπορύμε να δημιουργήσουμε μία συνάρτηση ή διαδικασία με βασικές εντολές dim x as integer x=cint(me.ActiveControl.Tag) Select case x case 1 εντολές........ case 2 εντολές case 9 εντολές........ case slse εντολές..... end select Φιλικά/Γιώργος |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Φόρμες ] Τιμές πεδίων | mgeorge | Access - Ερωτήσεις / Απαντήσεις | 3 | 12-02-15 19:13 |
Πρόσθεση Πεδίων | Free_Ghost | Access - Ερωτήσεις / Απαντήσεις | 3 | 01-07-13 19:56 |
[ Φόρμες ] Αντιγραφή πεδίων | γιώργοςΚ | Access - Ερωτήσεις / Απαντήσεις | 17 | 18-04-13 00:52 |
Αντιγραφή πεδίων | XristosM | Access - Ερωτήσεις / Απαντήσεις | 6 | 13-08-11 13:37 |
Η ώρα είναι 07:00.