απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Συζητήσεις για την τοπική βάση δεδομένων Access της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από majuranus » 13 Νοέμ 2008 01:23

Έχω ένα θεματάκι και δεν ξέρω πως και αν γίνεται να το λύσω, οταν ανολιγω μια φόρμα στην access και χρησιμοποιήσω το wheel από το ποντίκι τότε με μετακινεί στις εγγραφές. Πως μπορώ να το αποτρέψω ατό???

και δεύτερον

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

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από majuranus » 13 Νοέμ 2008 01:34

το δεύτερο βρήκα πως γίνεται! :P

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από kon73 » 13 Νοέμ 2008 13:09

Το δεύτερο όντως λύνεται εύκολα με την επιλογή στις ιδιότητες της φόρμας στην καρτέλα ΑΛΛΑ-ΑΠΟΚΛΕΙΣΤΙΚΗ- να βάλουμε την τιμή ΝΑΙ.

Όσο τώρα για το wheel του ποντικιού.
Μία λύση αρκετά μπελαλίδικη είναι εδώ από την Microsoft και αφορά Access 2000
http://support.microsoft.com/?id=278379
Εννοώ μπελαλίδικη καθότι έχει το dll που πρέπει να εισαχθεί καθώς και πολύ περισσότερο κώδικα.

Για Access XP και νεότερη έκδοση όπου έχει το Event το MouseWheel εκεί τα πράγματα γίνονται πιο απλά. Χρειάζεται να έχεις στην εγγραφή σου ένα ID μοναδικό ώστε να λειτουργήσει ο τρόπος που προτείνω. Ας ονομάσουμε το πεδίο ως ID.
Θα πρέπει να εισάγεις σε 3 events κώδικα.
Στο Event Mousewheel της φόρμας

Κώδικας: Επιλογή όλων

    Me.Filter = "ID=" & me.ID
    Me.FilterOn = True
    Me.AllowAdditions = False
Τι κάνουμε εδώ φιλτράρουμε την φόρμα με το ID όταν λειτουργούμε την ρόδα του ποντικιού και έτσι δεν μετακινείτε μπρος πίσω.
Για να μετακινούμαστε στις εγγραφές με τα πλήκτρα πχ βελάκια πάνω κάτω ή με πλήκτρα που έχουμε δημιουργήσει βάζουμε για την μεν 1η περίπτωση
Στο Event KeyDown της φόρμας

Κώδικας: Επιλογή όλων

If KeyCode = vbKeyDown Or KeyCode = vbKeyUp Then
    Dim varID As Variant, RcdSet As DAO.Recordset
     varID = Me.ID
    Me.FilterOn = False
    Set RcdSet = Me.RecordsetClone
    RcdSet.FindFirst ("ID=" & varID)
    Me.Bookmark = RcdSet.Bookmark
    Me.AllowAdditions = True
Else
    Me.FilterOn = True
End If
Για την δεύτερη με τα πλήκτρα δηλαδή (Όχι τα πλήκτρα που δίνει η Access με τα αστεράκια κλπ)

Κώδικας: Επιλογή όλων

    Dim varID As Variant, RcdSet As DAO.Recordset
     varID = Me.ID
    Me.FilterOn = False
    Set RcdSet = Me.RecordsetClone
    RcdSet.FindFirst ("ID=" & varID)
    Me.Bookmark = RcdSet.Bookmark
    Me.AllowAdditions = True
Εκεί χρησιμοποιούμε κατάργηση της φόρμας και εύρεση του ID για να μας μεταφέρει στην εγγραφή που ήμασταν. (Γιατί με την κατάργηση του Filteron=False, μας επιστρέφει αυτόματα στην πρώτη εγγραφή).
Και στο 3ο Event Current της Φόρμας

Κώδικας: Επιλογή όλων

    Me.Filter = "ID=" & Me.ID
Αυτά φαίνονται λίγο πολύπλοκα αλλά είναι μια τεχνική που δεν της βρίσκεις στο Internet ή πουθενά αλλού απλά για την μετακίνηση από εγγραφή σε εγγραφή κινείσαι με βελάκια ή με όποιο ορίσεις εσύ στο Event KeyDown.

Αυτά και για όποια απορία έχεις εδώ είμαστε πάλι.
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από majuranus » 13 Νοέμ 2008 13:28

Ευχαριστώ πολύ για το ενδιαφέρον και την απάντηση, τώρα είμαι στη δουλειά! θα το κοιτάξω το βράδυ στο σπίτι
Ευχαριστώ πολύ! και πάλι

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από majuranus » 13 Νοέμ 2008 21:57

Είναι καλό απλά αν δουλέψω μια φορά το wheel, μετά δεν λειτουργούν ούτε τα βελάκια , ούτε τα κουμπιά που βάζω στη φόρμα να πηγαίνει προηγούμνη-επόμενη εγγραφή (Έχω απενεργοποιήσει τους δείκτες εγγραφών)

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από kon73 » 13 Νοέμ 2008 22:19

Αν έχεις βάλεις όλα τα Events και ιδιαίτερα το KeyPress για το κάτω πάνω θα πρέπει να σου δουλέψει.

Αν θέλεις στείλε μου σε PM την βάση σου και εφόσον την δω και την διορθώσω, σου αναφέρω που έχεις κάνεις λάθος ή ακόμα και αν έχω παραλείψει κάτι εγώ. Να σου αναφέρω ότι κάπου στον κώδικα γίνεται χρήση του DAO Recordset που πρέπει να έχει γίνει σχετική δήλωση της στην Βάση.

Φιλικά
kon73
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από majuranus » 13 Νοέμ 2008 23:38

Αυτό με το recordset δεν το ξέρω να πω την αλήθεια,

έβαλα στα event

mousewheel
keydown
keypress

αντίστοιχα... σωστά ?

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από majuranus » 13 Νοέμ 2008 23:42

πως θα γινόταν?
Συνημμένα
test.rar
(9.25 KiB) Μεταφορτώθηκε 316 φορές

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από kon73 » 13 Νοέμ 2008 23:44

Να ρωτήσω μήπως έχεις Access 2000? Θα δω τώρα την βάση σου και θα δω αν είναι να το βάλω σε άλλο Event αντί του MouseWheel
Πάντως σε Access Xp που το δοκίμασε ήταν οκ.
Τελευταία επεξεργασία από το μέλος kon73 την 14 Νοέμ 2008 00:00, έχει επεξεργασθεί 2 φορές συνολικά.
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από majuranus » 13 Νοέμ 2008 23:47

Έχω access 2003

δουλεύει το κλείδωμα με το mousewheel,
απλά μετά αν πατήσω τα κουμπιά που έχω βάλει με wizard να με πηγαίνουν σε προηγούμενη και επόμενη εγγραφή, κάτι δεν πάει καλά

και όταν φτάνει στην τελευταία εγγραφή κάτι συμβαίνει...

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από kon73 » 14 Νοέμ 2008 00:00

Επίσης επειδή δεν έχω Access XP εδώ στο σπίτι, δες αν είναι και μία επιλογή που δεν σου είπα και είναι στην καρτέλα Event να βάλεις KeyPreview Yes ώστε να μπορεί η φόρμα και όχι το κάθε αντικείμενο να ενεργοποιεί το KeyDown για βελάκια πάνω κάτω.

Αν έχεις MSN στείλε μου PM ώστε να μιλήσουμε και Online.
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από kon73 » 14 Νοέμ 2008 01:33

Φίλε majuranus
χωρίς να έχουμε το Event MouseWheel οπότε δουλεύει και σε Access 2000 ορίστε η λύση την οποία δίνω και στο mdb αρχείο

Στα δύο Events Form KeyDown με όπως είπαμε το KeyPreview ΝΑΙ και στο Open της Φόρμας.

Κώδικας: Επιλογή όλων

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim VarID As Variant
On Error Resume Next
If Me.NewRecord = False Then
    If KeyCode = vbKeyDown Or KeyCode = vbKeyUp Then
        VarID = Me.id
        Me.FilterOn = False
        Dim RcdSet As DAO.Recordset
        Me.Filter = "ID=" & VarID
        Set RcdSet = Me.RecordsetClone
        RcdSet.FindFirst ("ID=" & VarID)
        Me.Bookmark = RcdSet.Bookmark
        If KeyCode = vbKeyDown Then DoCmd.GoToRecord , , acNext
        If KeyCode = vbKeyUp Then DoCmd.GoToRecord , , acPrevious
        VarID = Me.id
        Me.Filter = "ID=" & VarID
        Me.FilterOn = True
    End If
End If
End Sub

Private Sub Form_Open(Cancel As Integer)
        Me.Filter = "ID=" & Me.id
        Me.FilterOn = True
        Me.AllowAdditions = False
End Sub
Συνημμένα
testok.rar
(15.91 KiB) Μεταφορτώθηκε 313 φορές
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από majuranus » 14 Νοέμ 2008 02:32

Δεν μπορώ να κατεβάσω το αρχείο σου φίλε...

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από majuranus » 14 Νοέμ 2008 02:36

Άκυρο, το κατέβασα όλα οκ ευχαριστώ πολύ για την πολύτιμη βοήθεια!!! έχω και ένα άλλο θεματάκι βέβαια τώρα αλλά αύριο... :)

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

απενεργοποιηση του wheel για τις εγγραφές σε μια φόρμα...

Δημοσίευση από kon73 » 17 Νοέμ 2008 08:24

Έκανα και κάποιες διορθώσεις στο αρχικό που ήταν για Access XP και νεότερη οπότε αποστέλλω και αυτό το αρχείο καθότι ο κώδικας του είναι γρηγορότερος από τον κώδικα για την Access 2000. Ο κώδικας για την Access 2000 λειτουργεί σε όλες τις εκδόσεις της Access.

ΠΡΟΣΟΧΗ λειτουργεί μόνο σε Access XP και νεοτέρη. (Η αιτία είναι ότι η Access 2000 δεν εμπεριέχει το Event MouseWheel οπότε και αλλάζει η φιλοσοφία του κώδικα)

Φιλικά

Kon73
Συνημμένα
testXpok.zip
(18.7 KiB) Μεταφορτώθηκε 304 φορές
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Απάντηση

Επιστροφή στο “MS Access”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης