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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 22-06-10, 01:22
Όνομα: ΧΑΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-06-2010
Μηνύματα: 20
Προεπιλογή Παραμετροποίηση πεδίων

Καλησπέρα σας και συγχαρητήρια για το 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  
Παλιά 22-06-10, 21:12
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.033
Προεπιλογή

Καλησπέρα...
Δίνω μια πρόταση στην οποία δυο πεδία περνούν ως παράμετροι στην ίδια ρουτίνα. Στην Module της εφαρμογής όρισα μια public μεταβλητή, η οποία παίρνει το όνομα του πεδίου.
Ομολογώ ότι δεν το έχω ξανακάνει και θα με ενδιέφερε η γνώμη φίλων, οι οποίοι έχουν καλύτερη γνώση VBA από εμένα.
Θεωρώ το ερώτημα του Χάρη "λίαν ενδιαφέρον" και έτσι δικαιολογώ γιατί ασχολήθηκα με πείσμα και γιατί αναμένω βελτιωμένες και πλέον έγκυρες προτάσεις.
Να είμαστε όλοι καλά / Νίκος Δ.

Υστερολόγιο : Χάρη καλωσόρισες...
Συνημμένα Αρχεία
Τύπος Αρχείου: zip test.zip (21,5 KB, 26 εμφανίσεις)
Απάντηση με παράθεση
  #3  
Παλιά 23-06-10, 01:35
Όνομα: ΧΑΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-06-2010
Μηνύματα: 20
Προεπιλογή

θα ελεγα απο τυχη την βρηκα την λυση
ειναι τοσο απλη και εγω εψαχνα στα δυσκολα
απλα δηλωνεις στην ρουτινα την μεταβλητη σαν 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  
Παλιά 23-06-10, 21:11
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Γεια σας
Ίσως τα παρακάτω να μπορούναν να βοηθήσουν στη συγγραφή απλούστερου και πιο κατανοητού κώδικα:
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

Φιλικά/Γιώργος
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός 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.