Πώς να ενημερώσετε γρήγορα έναν συνδεδεμένο πίνακα όταν αλλάξει το εξωτερικό όνομα αρχείου

Κοινή χρήση τώρα:

Οι συνδεδεμένοι πίνακες μπορεί να είναι φανταστικά χρήσιμοι (αν και όχι όλη την ώρα φυσικά) - ειδικά όταν αντιμετωπίζετε εξωτερικές πληροφορίες που αλλάζουν τακτικά. Ένα τυπικό παράδειγμα μπορεί να είναι όταν ένας προμηθευτής σάς δίνει πρόσβαση στο τρέχον μηνιαίο αρχείο τιμών του. Τι συμβαίνει όμως όταν εκδώσουν το αρχείο τον επόμενο μήνα και το όνομα του αρχείου αλλάζει από "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

Κοινή χρήση τώρα:

Τα σχόλια είναι κλειστά.