Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Παραμετροποίηση πεδίων (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/632-parametropoiisi-pedion.html)

atlasgr 22-06-10 00:22

Παραμετροποίηση πεδίων
 
Καλησπέρα σας και συγχαρητήρια για το 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


Ευχαριστώ εκ των προτέρων για την ανταπόκριση σας

Meteora 22-06-10 20:12

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

Υστερολόγιο : Χάρη καλωσόρισες...

atlasgr 23-06-10 00:35

θα ελεγα απο τυχη την βρηκα την λυση
ειναι τοσο απλη και εγω εψαχνα στα δυσκολα
απλα δηλωνεις στην ρουτινα την μεταβλητη σαν 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



ελπιζω να βοηθησα

καλη σας νυχτα

kapetang 23-06-10 20:11

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

Φιλικά/Γιώργος


Η ώρα είναι 14:32.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2