Οι συνδεδεμένοι πίνακες μπορεί να είναι φανταστικά χρήσιμοι (αν και όχι όλη την ώρα φυσικά) - ειδικά όταν αντιμετωπίζετε εξωτερικές πληροφορίες που αλλάζουν τακτικά. Ένα τυπικό παράδειγμα μπορεί να είναι όταν ένας προμηθευτής σάς δίνει πρόσβαση στο τρέχον μηνιαίο αρχείο τιμών του. Τι συμβαίνει όμως όταν εκδώσουν το αρχείο τον επόμενο μήνα και το όνομα του αρχείου αλλάζει από "Pricelist-01-01-2016" σε "Pricelist-01-02-2016"; Το πρώτο πράγμα που θα συμβεί είναι ότι ο σύνδεσμός σας θα σπάσει, οπότε θα πρέπει να τον ενημερώσετε μη αυτόματα. Κάθε φορά που αλλάζουν το όνομα του αρχείου. Αυτό ισχύει και για τα ονόματα των πινάκων (φυσικά!). Υπάρχει τρόπος να το κάνετε γρήγορα και εύκολα; Χαιρόμαστε που ρωτήσατε - διαβάστε και μάθετε πώς…
Ρύθμιση της σκηνής - το σενάριο
Σε αυτό το άρθρο, θα χρησιμοποιήσω ένα φανταστικό σενάριο - αλλά είμαι σίγουρος ότι θα αναγνωρίσετε γρήγορα!
Κάθε μήνα, η Acme trading μας στέλνει έναν ενημερωμένο τιμοκατάλογο για όλα τα αναλώσιμα που χρησιμοποιούνται στο DataNumen. Για να ξέρουμε πόσα θα ξοδεύουμε στατικά κάθε μήνα, συνδέουμε με αυτό το αρχείο στη βάση δεδομένων διαχείρισης γραφείων.
Το πρόβλημα είναι ότι, παρόλο που η μορφή του αρχείου παραμένει η ίδια, το όνομα του αρχείου αλλάζει κάθε μήνα. Τον προηγούμενο μήνα ήταν "κόστος στατικού υλικού Ιανουάριος 2017.xls", αυτόν τον μήνα είναι "κόστος στατικού υλικού Φεβρουάριος 2017.xls".
Όχι μεγάλη αλλαγή, είμαι βέβαιος ότι θα συμφωνήσετε, αλλά αν δεν αντιμετωπίσουμε το πρόβλημα της μετονομασίας του αρχείου με μη αυτόματο τρόπο (αφού μετακινήσουμε το παλιό αρχείο εκτός δρόμου ή το διαγράψουμε) ή προχωρήσουμε στη διαδικασία επανασύνδεση του πίνακα μέσω του συνδεδεμένου διαχειριστή πίνακα στην Access.
Επειδή δεν θέλαμε να το κάνουμε αυτό, δημιουργήσαμε τον ακόλουθο κώδικα για να το κάνουμε αντ 'αυτού - πολύ πιο εύκολο καθώς είμαι σίγουρος ότι θα δείτε:
Public Sub UpdateLink (tableName As String, newFileName As String) Dim objDB As Database Dim objTableDef As TableDef Dim newConnect as String Set objDB = CurrentDb Set objTableDef = objDB.TableDefs(tableName) 'format of the connection string in our case, for example, is: ' Excel 5.0;HDR=YES;IMEX=2;DATABASE=File name including path and extension type newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName objTableDef.Connect = newConnect objTableDef.RefreshLink Set objTableDef = Nothing Set objDB = Nothing End Sub
Εξηγώντας τον κωδικό
Όπως μπορείτε να δείτε, μεταβιβάζουμε το όνομα του (συνδεδεμένου) πίνακα, μαζί με το όνομα του νέου αρχείου με το οποίο θα πρέπει να συνδεθεί ο πίνακας. Το όνομα του αρχείου θα πρέπει να περιλαμβάνει την πλήρη διαδρομή προς το αρχείο. Ένας πιθανός τομέας με τον οποίο μπορεί να δυσκολευτείτε στην αρχή είναι να βρείτε τη σωστή μορφή για τη συμβολοσειρά σύνδεσης που θα τοποθετηθεί στη μεταβλητή "newConnect". Ενώ υπάρχουν πολλές πηγές για να βρείτε τη σωστή μορφή, ένας από τους ευκολότερους που έχω βρει είναι απλώς να κοιτάξετε τη συμβολοσειρά σύνδεσης του τρέχοντος συνδεδεμένου πίνακα. Για να το κάνετε αυτό, απλώς προσθέστε την ακόλουθη γραμμή ακριβώς κάτω από τη γραμμή "Set objTableDef = objDB.TableDefs(tableName)":
Debug.Print (objTableDef.Connect)
Αυτό θα εκτυπώσει την υπάρχουσα συμβολοσειρά σύνδεσης στο παράθυρο εντοπισμού σφαλμάτων / άμεσου εντοπισμού του προγράμματος επεξεργασίας κώδικα (εάν αυτό δεν είναι ήδη ορατό, πατήστε CTRL-G από την οθόνη επεξεργασίας κώδικα VBA για εναλλαγή της προβολής του παραθύρου Άμεση πριν από την εκτέλεση του κώδικα.
Μια προειδοποίηση
Όπως πάντα, μην ξεχνάτε ότι ενώ το παραπάνω απόσπασμα κώδικα μπορεί να σας βοηθήσει να εξοικονομήσετε χρόνο όταν πρέπει να αλλάξετε το αρχείο με το οποίο είναι συνδεδεμένος ένας πίνακας, αυτό που δεν μπορεί να κάνει είναι να σας βοηθήσει εάν συναντήσετε κάποιο Πρόσβαση σε ζημιά στο αρχείο, οπότε φροντίστε να διατηρείτε αντίγραφα ασφαλείας και να γνωρίζετε πού να στρίψετε εάν όλα τα άλλα αποτύχουν.
Εισαγωγή συγγραφέα:
Ο Mitchell Pond είναι ειδικός στην ανάκτηση δεδομένων στο DataNumen, Inc., η οποία είναι ο παγκόσμιος ηγέτης στις τεχνολογίες ανάκτησης δεδομένων, συμπεριλαμβανομένων επισκευή ζημιών SQL και υπερέχουν προϊόντα λογισμικού ανάκτησης. Για περισσότερες πληροφορίες επισκεφθείτε www.datanumen.com