Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Φόρμες ] Αυτόματη ενεργοποίηση πλήκτρου Enter με το άνοιγμα Φόρμας (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/4113-aytomati-energopoiisi-pliktroy-enter-me-anoigma-formas.html)

dimitrisp 22-03-16 22:25

Αυτόματη ενεργοποίηση πλήκτρου Enter με το άνοιγμα Φόρμας
 
1 Συνημμένο(α)
Καλησπέρα,

Στη Βάση που ανέβασα έχω μιά Φόρμα "frmPliromes" .
Όταν ανοίγει η Φόρμα, από προεπιλογή εστιάζεται το πεδίο ημερομηνία. Στη συνέχεια, με το πάτημα του πλήκτρου Enter, εκτελείται κάποια εντολή.

Με ενδιαφέρει να πετύχω το εξής:

Μόλις ανοίγει η Φόρμα, να ενεργοποιείται το πλήκτρο Enter αυτόματα (χωρίς να το πατήσω) και να εκτελείται η εντολή που υπάρχει στο παρασκήνιο.

Οποιαδήποτε βοήθειά σας γιά την επίλυση του ζητούμενου, θα επιθυμούσα (εφόσον είναι εφικτό) να είναι στα πλαίσια της παραπάνω διαδικασίας.

Σας ευχαριστώ εκ των προτέρων.

kapetang 23-03-16 09:00

Καλημέρα

Δημήτρη, δοκίμασε τον κώδικα:

Κώδικας:

Private Sub Form_Load()
    Me.IMEROMINIA.SetFocus
    Me.TimerInterval = 100
End Sub

Private Sub Form_Timer()
    Me.TimerInterval = 0
    Imerominia_KeyDown 1, 1
End Sub

Όπως θα δεις, η διαδικασία Imerominia_KeyDown δεν καλείται άμεσα από τη διαδικασία Form_Load, αλλά εμμέσως από τη διαδικασία Form_Timer.

Κατέφυγα στη λύση αυτή, επειδή, όταν καλείται άμεσα, η γραμμή του κώδικα: DoCmd.GoToRecord , , acNewRec, προκαλεί λάθος.

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

dimitrisp 23-03-16 23:38

Καλημέρα.

Φίλε Γιώργο η πρότασή σου, όπως πάντα, με κάλυψε πλήρως.
Μάλιστα, οφείλω να ομολογήσω, ότι χάρηκα ιδιαίτερα, καθόσον κουράστηκα αρκετά γιά να βρώ μιά λύση γιά το συγκεκριμένο θέμα.

Σε ευχαριστώ πάρα πολύ.

Πλεοναστικά και γιά λόγους κυρίως εκπαιδευτικούς, θα ήθελα να ρωτήσω:
Αν δεν υπήρχε η γραμμή του κώδικα: DoCmd.GoToRecord , acNewRec (και υπήρχε στο παρασκήνιο μιά απλή εντολή ας πούμε), με ποιά μέθοδο θα μπορούσε να επιτευχθεί το ζητούμενο?

kapetang 24-03-16 10:52

Καλημέρα

Φίλε Δημήτρη, με τον κώδικα αντιγράφουμε τις τιμές μιας υπάρχουσας εγγραφής, σε μία νέα.

Για να γίνει δυνατή η αντιγραφή χρειάζεται η νέα εγγραφή να γίνει τρέχουσα.

Αυτό επιτυγχάνεται με την εντολή: DoCmd.GoToRecord , , acNewRec.

Η νέα εγγραφή είναι ακόμα σε κατάσταση επεξεργασίας (δεν έχει αποθηκευτεί οριστικά σε πίνακα), οπότε μπορούμε να την αλλάξουμε ή και να την ακυρώσουμε.

Θα μπορούσαμε τα στοιχεία μιας υπάρχουσας εγγραφής να τα αποθηκεύσουμε κατευθείαν στον πίνακα, δημιουργώντας μια νέα εγγραφή, την οποία μπορούμε να την εμφανίσουμε στη φόρμα με την εντολή me.Requery.

Φυσικά, επειδή δε θέλουμε στον πίνακα δύο όμοιες εγγραφές, θα πρέπει με κάποιο τρόπο να την κάνουμε τρέχουσα και να την επεξεργαστούμε (αλλάξουμε ή διαγράψουμε).

Για να γίνει αυτό ή θα την εντοπίσουμε (Me.Recordset.MoveLast) στο Recordset της φόρμας ή θα χρησιμοποιήσουμε την εντολή: DoCmd.GoToRecord ,, acLast.


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

dimitrisp 24-03-16 15:27

Καλησπέρα,

Φίλε Γιώργο, με την επεξήγηση που έδωσες γιά το συγκεκριμένο θέμα, κατανόησα επαρκώς
την όλη διαδικασία.


Σ' ευχαριστώ πάρα πολύ.


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

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


Search Engine Optimization by vBSEO 3.3.2