Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Καταχώρηση ονοματος πεδίου επιλογής στο Current event

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 05-08-24, 14:14
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή Καταχώρηση ονοματος πεδίου επιλογής στο Current event

Καλησπέρα,

Στην συνημμένη βάση σε μια φόρμα έχω 6 πεδία [D1_1 - D1_6]. Προσπάθησα ανεπιτυχώς στο On Current της φόρμας να καταχωρείται στο πεδίο txtControlName το όνομα οποιουδήποτε πεδίου κάνω κλικ.

Θα εκτιμήσω την βοήθεια σας καθως στην πργματική βάση τα πεδία είναι 96 (αντι 6) και ο κωδικας σε καθε ένα απο αυτά αρκετός και θα πρέπει να βρώ λύσεις
Συνημμένα Αρχεία
Τύπος Αρχείου: zip ControlName.zip (65,1 KB, 2 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 05-08-24, 21:23
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα σε όλους!

Γιώργο πρόσθεσε μια μονάδα κλάσης (Εντολή: Insert > Class Module), μετονόμασε την σε "clsTextBoxes", πέρασε της τον παρακάτω κώδικα:

Κώδικας:
Option Compare Database
Option Explicit

Private WithEvents tBox As TextBox
Private refTextBox As TextBox

Public Sub SetTextBoxWithEvent(txtBox As TextBox)
    Set tBox = txtBox
    txtBox.OnEnter = "[Event Procedure]"
End Sub

Public Sub SetRefTextBox(refTBox As TextBox)
    Set refTextBox = refTBox
End Sub

Private Sub tBox_Enter()
    If Not tBox Is Nothing Then
        refTextBox.Value = tBox.Name
    End If
    
End Sub
... και αποθήκευσε.

Κατόπιν επίλεξε όλα τα πεδία κειμένου που σε ενδιαφέρουν και στην ιδιότητα "Ετικέτα" ("Tag") πληκτρολόγησε τον αριθμό 1.

Στη φόρμα σου (Form1) αφαίρεσε τα πάντα από τον κώδικα, επικόλλησε τον παρακάτω και κάνε τις δοκιμές σου:

Κώδικας:
Option Compare Database
Option Explicit

Private ctrls() As clsTextBoxes

Private Sub Form_Load()
    Dim i      As Integer
    Dim ctlCount As Integer
    Dim ctl    As Control
    
    For Each ctl In Me.Section(0).Controls
        If TypeOf ctl Is Access.TextBox Then
            If ctl.Tag = 1 Then
                i = i + 1
                ReDim Preserve ctrls(i)
                Set ctrls(i) = New clsTextBoxes
                ctrls(i).SetTextBoxWithEvent ctl
                ctrls(i).SetRefTextBox Me.txtControlName
            End If
        End If
    Next
End Sub
Καλή συνέχεια.

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 06-08-24 στις 16:35.
Απάντηση με παράθεση
  #3  
Παλιά 09-08-24, 12:54
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από Tasos Εμφάνιση μηνυμάτων
Καλησπέρα σε όλους!

Γιώργο πρόσθεσε μια μονάδα κλάσης (Εντολή: Insert > Class Module), μετονόμασε την σε "clsTextBoxes", πέρασε της τον παρακάτω κώδικα:

Κώδικας:
Option Compare Database
Option Explicit

Private WithEvents tBox As TextBox
Private refTextBox As TextBox

Public Sub SetTextBoxWithEvent(txtBox As TextBox)
    Set tBox = txtBox
    txtBox.OnEnter = "[Event Procedure]"
End Sub

Public Sub SetRefTextBox(refTBox As TextBox)
    Set refTextBox = refTBox
End Sub

Private Sub tBox_Enter()
    If Not tBox Is Nothing Then
        refTextBox.Value = tBox.Name
    End If
    
End Sub
... και αποθήκευσε.

Κατόπιν επίλεξε όλα τα πεδία κειμένου που σε ενδιαφέρουν και στην ιδιότητα "Ετικέτα" ("Tag") πληκτρολόγησε τον αριθμό 1.

Στη φόρμα σου (Form1) αφαίρεσε τα πάντα από τον κώδικα, επικόλλησε τον παρακάτω και κάνε τις δοκιμές σου:

Κώδικας:
Option Compare Database
Option Explicit

Private ctrls() As clsTextBoxes

Private Sub Form_Load()
    Dim i      As Integer
    Dim ctlCount As Integer
    Dim ctl    As Control
    
    For Each ctl In Me.Section(0).Controls
        If TypeOf ctl Is Access.TextBox Then
            If ctl.Tag = 1 Then
                i = i + 1
                ReDim Preserve ctrls(i)
                Set ctrls(i) = New clsTextBoxes
                ctrls(i).SetTextBoxWithEvent ctl
                ctrls(i).SetRefTextBox Me.txtControlName
            End If
        End If
    Next
End Sub
Καλή συνέχεια.

Τάσος

Τάσο σε χαιρετω και ευχαριστω για την προθεση βοήθειας,

Εχω κανει ολα τα πιο πανω τα οποια παραθέτεις αλλα κτυπα ο κωδικας στο

Private Sub Form_Load()
Private ctrls() As clsTextBoxes
Dim i As Integer
Dim ctlCount As Integer
Dim ctl As Control

For Each ctl In Me.Section(0).Controls
If TypeOf ctl Is Access.TextBox Then
If ctl.Tag = 1 Then
i = i + 1
ReDim Preserve ctrls(i)
Set ctrls(i) = New clsTextBoxes
ctrls(i).SetTextBoxWithEvent ctl
ctrls(i).SetRefTextBox Me.txtControlName
End If
End If
Next
End Sub
Απάντηση με παράθεση
  #4  
Παλιά 09-08-24, 12:59
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή

Τασο συγνωμη για το προηγούμενο μηνυμα, δεν προσεξα οτι η γραμμή Private ctrls() As clsTextBoxes επρεπε να παει κατω απο το Option Explicit.

Ολα δουλεύουν ομως κατι επιπροσθετο, πως μπορω τωρα να αναφερθώ στο ονομα πεδίου που λαμβανει το txtControlName ετσι ωστε να φτιαξω κωδικα κλπ.

Δοκίμασα το txtControlName.Value χωρις αποτελεσμα
Απάντηση με παράθεση
  #5  
Παλιά 09-08-24, 20:41
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα σε όλους!

Γιώργο δοκίμασε το συνημμένο και πες μου αν είναι αυτό που χρειάζεσαι.

Καλή συνέχεια.

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: accdb ControlName.accdb (532,0 KB, 5 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Τιμές πεδίου από άλλον πίνακα και αυτόματη καταχώρηση jamman Access - Ερωτήσεις / Απαντήσεις 3 15-07-20 11:57
Cancel Event γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 2 26-04-18 15:40
Πρόβλημα με αυτόματη καταχώρηση πεδίου φόρμας smasak Access - Ερωτήσεις / Απαντήσεις 22 21-03-14 23:22
Αυτόματη καταχώρηση πεδίου από κουμπί Ρούλα Access - Ερωτήσεις / Απαντήσεις 0 11-12-13 15:19
[ Φόρμες ] Αυτοματη ενημέρωση πεδίου με την τελευταια καταχωρηση athigb Access - Ερωτήσεις / Απαντήσεις 5 07-02-10 03:03


Η ώρα είναι 20:23.