Κώδικας VBA Access

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

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

Απάντηση
Άβαταρ μέλους
Meteora
Δημοσιεύσεις: 13
Εγγραφή: 21 Νοέμ 2008 19:22
Τοποθεσία: Θεσσαλονίκη

Κώδικας VBA Access

Δημοσίευση από Meteora » 29 Νοέμ 2008 14:23

Καλημέρα σε όλους σας
Μετά απο αρκετή δουλειά(*) έφτιαξα ενα κώδικα ο οποίος σε φόρμα εμφανίζει την επόμενη εγραφή. Δουλεύει!
Δεν ξέρω όμως :
1. Αν αυτός ο κώδικας ειναι ο ελάχιστος σε μέγεθος
2. Αν χρειάζεται ενίσχυση οπωσδήποτε ή μπορεί να δουλέψει ως έχει (υποψιάζομαι ΝΑΙ...)

Έφτιαξα αυτόν τον κώδικα διότι ο οδηγός έφτιαχνε μακροεντολή για το κουμπί της μετάβασης στην επόμενη εγγραφή. Σε αυτή τη μακροεντολή-με τις γνώσεις μου- μπορούσα να ελέγξω ΜΟΝΟ το περιεχόμενο του μηνύματος (Αυτό το μήνυμα που βγαίνει όταν "πιάνεις πάτο"!) Δεν μπορούσα να ελέγξω τη κενή φόρμα της νέας εγγραφής.

(*) Είμαι καινούργιος στο περιβάλλον του ...δίδυμου VBA & Access και τα αγγλικά μου ειναι προσαρμοσμένα σε λέξεις-κλειδιά, γι'αυτό γράφω περι... αρκετής δουλειάς.


Private Sub Εντολή6_Click()
Dim rst As DAO.Recordset
Set rst = Forms!t2.RecordsetClone 't2 το όνομα της φόρμας
rst.MoveNext

If rst.EOF Then
MsgBox "Τέλοοοοοος!"
rst.MoveFirst
End If
Forms!t2.Bookmark = rst.Bookmark
End Sub


Με εκτίμηση σε όλους σας
Meteora - Καλαμπάκα

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

Κώδικας VBA Access

Δημοσίευση από kon73 » 03 Δεκ 2008 13:19

Αγαπητέ Meteora μπράβο που ασχολείσαι με VBA και καλή συνέχεια.

Λοιπόν ορίστε και μία άλλη έκδοση του κώδικά σου :

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

On Error GoTo ErrHandler
    DoCmd.GoToRecord , , acNext
    If Me.CurrentRecord = Me.RecordsetClone.RecordCount Then MsgBox "Τελευταία εγγραφή"
    If Me.NewRecord = True Then MsgBox "Νέα εγγραφή"
ErrHandler:
    If Err.Number = 2105 Then Resume Next
DoCmd.GoToRecord , , acNext
Μας μεταβαίνει σε επόμενη εγγραφή
Παρακάτω αναφέρουμε ότι αν η τρέχουσα εγγραφή είναι όσο και το πλήθος των εγγραφών της φόρμας είσαι στην τελευταία εγγραφή
Και τέλος αν η καινούργια εγγραφή είναι true είσαι σε νέα εγγραφή
Στο Err.Number όταν δεν μπορεί να μεταβεί σε επόμενη εγγραφή γιατί έφτασε στο τέλος επιστρέφει τον αριθμό λάθους 2105 και για να μην εμφανίζει λάθος μήνυμα της Access τότε κάνει resume δηλαδή μεταβαίνει στην επόμενη εντολή του κώδικα.

Φιλικά

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

Άβαταρ μέλους
Meteora
Δημοσιεύσεις: 13
Εγγραφή: 21 Νοέμ 2008 19:22
Τοποθεσία: Θεσσαλονίκη

Κώδικας VBA Access

Δημοσίευση από Meteora » 03 Δεκ 2008 22:32

Φίλε Kon73
Θερμά ευχαριστώ για την ευγενική σου προσφορά προς εμένα και προς το ...Forum.
Ο κώδικας που πρότεινες ειναι σύντομος - κατανοητός - διαχειρίζεται λάθη και ειναι προσαρμόσιμος. Ποιο το Err Number οταν δεν υπάρχει δυνατότητα να κινηθείς πέραν της ... αρχής (BOF);
Με εκτίμηση
Meteora

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

Κώδικας VBA Access

Δημοσίευση από kon73 » 03 Δεκ 2008 22:59

Φίλε Meteora καλησπέρα,

Ο κωδικός είναι ο ίδιος 2105 είτε για το τέλος είτε για την αρχή της εγγραφής. Με το trap του error απλά έχουμε την απόκρυψη του μηνύματος από την Access ("You can't go to the specified record") ("Δεν μπορείτε να μεταβείτε στην συγκεκριμένη εγγραφή") ώστε να έχουμε πιο επαγγελματική εφαρμογή.

Φιλικά

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

Άβαταρ μέλους
Meteora
Δημοσιεύσεις: 13
Εγγραφή: 21 Νοέμ 2008 19:22
Τοποθεσία: Θεσσαλονίκη

Κώδικας VBA Access

Δημοσίευση από Meteora » 04 Δεκ 2008 15:53

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

...Η μετάβαση στη προηγούμενη εγγραφή φόρμας, γίνεται με τον παρακάτω αναγραφόμενο κώδικα. Επιπλέον τούτη πρόταση-κώδικας συνεργάζεται τέλεια με αυτή που προτείνει πιο πάνω ο Kon73

Private Sub Εντολή11_Click()

If Me.CurrentRecord = 1 Then
MsgBox "Πρώτη εγγραφή"
DoCmd.GoToRecord , , acNewRec
End If
DoCmd.GoToRecord , , acPrevious

End Sub

Παρακαλώ θερμά αν υπάρχει κάποια micro είτε macro ένσταση ή κάποια πρόταση βελτίωσης, ας κατατεθεί για να κλείσει -τρόπος του λέγειν- ο κύκλος που αφορά μεταβάσεις μπρός-πίσω σε φόρμα.

Με εκτίμηση σε όλους
Meteora

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

Κώδικας VBA Access

Δημοσίευση από kon73 » 04 Δεκ 2008 16:31

Φίλε Meteora,

H εγγραφή που ελέγχει το me.currentrecord=1 δεν ελέγχει αν τυχόν βρίσκεσαι σε νέα εγγραφή. Δηλαδή φαντάσου ότι ο πίνακας είναι κενός και η φόρμα σου τότε θα έχει την πρώτη εγγραφή σε κατάσταση εισαγωγής νέας εγγραφής. Οπότε τότε δεν είναι σωστό να θεωρούμε ότι βρισκόμαστε στην πρώτη εγγραφή αφού ουσιαστικά βρισκόμαστε σε νέα εγγραφή.

Επομένως συμπληρώνω και εισάγω

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

If Me.CurrentRecord = 1 and me.NewRecord=false Then 
Αυτά έχω να προσθέσω.

Φιλικά

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

Απάντηση

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

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

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