Μάθετε πώς μπορείτε να δημιουργήσετε μια λειτουργία VBA που σας επιτρέπει να αντιγράψετε ορισμένα δεδομένα από προηγούμενες εγγραφές με ένα μόνο κλικ ενός κουμπιού. Δεν χρειάζεται να πληκτρολογείτε επανειλημμένα τα ίδια πράγματα.
Είχατε ποτέ μια εμπειρία όπου πρέπει να εισαγάγετε μια νέα εγγραφή στην Access που έχει ακριβώς το ίδιο σύνολο τιμών με μια προηγούμενη εγγραφή εκτός από ένα πεδίο; Μπορεί να είναι κουραστικό, σωστά; Αυτό το σεμινάριο θα σας διδάξει πώς μπορείτε να δημιουργήσετε μια συνάρτηση που με ένα κλικ ενός κουμπιού, μπορείτε να αντιγράψετε ορισμένες τιμές μιας προηγούμενης εγγραφής - εξοικονομώντας χρόνο από την πληκτρολόγηση. Απλώς ακολουθήστε τα παρακάτω βήματα.
Κατεβάστε το Δωρεάν Τώρα
Αν θέλετε να αρχίσετε να χρησιμοποιείτε τη λειτουργία το συντομότερο δυνατό, τότε μπορείτε να κάνετε τα εξής:
Κάντε λήψη του δείγματος βάσης δεδομένων με κωδικούς VBA τώρα
Διαφορετικά, αν θέλετε να κάνετε DIY, μπορείτε να διαβάσετε τα παρακάτω περιεχόμενα.
Βήματα για να προσθέσετε μια λειτουργία «Δημιουργία αντιγράφου εγγραφής» στην Access
- Ανοίξτε τη φόρμα σας σε προβολή σχεδίασης.

- Προσθέστε ένα κουμπί εντολής. Παράλειψη του οδηγού κουμπιού εντολών.
- Προσθέστε ένα Στο κλικ συμβάν στο κουμπί.
- Ενώ βρίσκεστε σε προβολή σχεδίασης, επιλέξτε το κουμπί.
- Άνοιγμα του φύλλου ιδιοτήτων (ALT + Enter)
- Μεταβείτε στην καρτέλα Event> On Click>…
- Όταν ο Επιλέξτε Builder εμφανίζεται το μενού, επιλέξτε Code Builder.
- Κάντε κλικ στο OK.
- Αυτό θα ανοίξει το πρόγραμμα επεξεργασίας VBA.
-
- Αντιγράψτε τον παρακάτω κώδικα και τροποποιήστε τον για να ταιριάζει στις ανάγκες σας. Χρησιμοποιήστε τα σχόλια ως οδηγό.
Private Sub Command24_Click() Dim currentID As Long 'TO DO: change all instances of 'BookID' with the actual name of your table's ID or primary key If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If currentID = BookID DoCmd.GoToRecord record:=acNewRec 'TO DO: set the fields to be copied (those that most likely will have the same values) 'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID) Author = DLookup("Author", "Books", "BookID=" & currentID) Country = DLookup("Country", "Books", "BookID=" & currentID) Language = DLookup("Language", "Books", "BookID=" & currentID) Genre = DLookup("Genre", "Books", "BookID=" & currentID) Publisher = DLookup("Publisher", "Books", "BookID=" & currentID) Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user End Sub - Τώρα δοκιμάστε τον κωδικό εάν λειτουργεί.
Επεξήγηση κωδικού
Ο παραπάνω κωδικός χρησιμοποιήθηκε για τη βάση δεδομένων ενός βιβλιοπωλείου. Λόγω της σειράς βιβλίων, υπάρχουν περιπτώσεις όπου όλες οι λεπτομέρειες του βιβλίου (π.χ. Συγγραφέας, Χώρα, Γλώσσα κ.λπ.) είναι ίδιες εκτός από ένα πεδίο - τον Τίτλο. Έτσι, η ανάγκη για τον κωδικό.
Η παρακάτω λίστα δείχνει τη ροή του προγράμματος.
- Ελέγξτε εάν ο χρήστης έχει επιλέξει μια εγγραφή για αντιγραφή. Θα εμφανιστεί ένα μήνυμα σφάλματος εάν ο χρήστης κάνει κλικ στο κουμπί αμέσως μετά το κλικ στο κουμπί Προσθήκη νέας εγγραφής - κάνοντας το αναγνωριστικό μηδέν.
If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If
- Λάβετε το αναγνωριστικό ή το πρωτεύον κλειδί της τρέχουσας εγγραφής και εκχωρήστε το ως τιμή για το τρέχον αναγνωριστικό Αυτό θα χρησιμοποιηθεί ως βάση για τις τιμές που θα αντιγραφούν.
currentID = BookID
- Προσθέστε μια νέα εγγραφή.
DoCmd.GoToRecord record:=acNewRec
- Ορίστε τιμές για ορισμένα πεδία με βάση το τρέχον αναγνωριστικό Εδώ αντιγράφονται δεδομένα από την επιλεγμένη εγγραφή.
'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID)
Author = DLookup("Author", "Books", "BookID=" & currentID)
Country = DLookup("Country", "Books", "BookID=" & currentID)
Language = DLookup("Language", "Books", "BookID=" & currentID)
Genre = DLookup("Genre", "Books", "BookID=" & currentID)
Publisher = DLookup("Publisher", "Books", "BookID=" & currentID)
- Ορίστε την εστίαση στο πεδίο που είναι πιθανότερο να επεξεργαστεί πρώτα ο χρήστης. Αυτό βελτιώνει την εμπειρία χρήστη, καθώς εξαλείφει την ανάγκη ο χρήστης να επιλέξει χειροκίνητα το πεδίο που πρέπει ακόμη να ενημερωθεί.
Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user
Επιδιόρθωση κατεστραμμένης βάσης δεδομένων
Εάν για έναν ατυχή λόγο, ξυπνάτε μια μέρα που δεν μπορείτε να ανοίξετε τη βάση δεδομένων σας, μπορείτε να δοκιμάσετε εργαλεία τρίτων που εκτελούν Επισκευή πρόσβασης. Λειτουργεί θαύματα.
Εισαγωγή συγγραφέα:
Ο Jayme Stack είναι ειδικός στην ανάκτηση δεδομένων στο DataNumen, Inc., η οποία είναι ο παγκόσμιος ηγέτης στις τεχνολογίες ανάκτησης δεδομένων, συμπεριλαμβανομένων ανάκτηση sql και υπερέχουν προϊόντα λογισμικού ανάκτησης. Για περισσότερες πληροφορίες επισκεφθείτε www.datanumen.com
