Jak szybko zaktualizować połączoną tabelę po zmianie nazwy pliku zewnętrznego

Podziel się teraz:

Połączone tabele mogą być fantastycznie przydatne (choć oczywiście nie zawsze) - szczególnie gdy masz do czynienia z informacjami zewnętrznymi, które regularnie się zmieniają. Typowym przykładem może być sytuacja, w której dostawca zapewnia dostęp do aktualnego pliku cen miesięcznych. Ale co się stanie, kiedy wydadzą plik w przyszłym miesiącu, a nazwa pliku zmieni się z „Cennik-01-01-2016” na „Cennik-01-02-2016”? Pierwszą rzeczą, która się stanie, będzie zerwanie łącza, więc będziesz musiał ręcznie go zaktualizować. Za każdym razem, gdy zmieniają nazwę pliku. Dotyczy to również nazw tabel (oczywiście!). Czy istnieje sposób, aby to zrobić szybko i łatwo, o co pytasz? Cieszymy się, że zapytałeś - czytaj dalej i dowiedz się, jak…

Sceneria - scenariusz

Menedżer tabel połączonychW tym artykule wykorzystam fikcyjny scenariusz - ale jestem pewien, że szybko go rozpoznasz!

Co miesiąc firma Acme Trading przesyła nam zaktualizowany cennik wszystkich materiałów eksploatacyjnych używanych w DataNumen. Abyśmy wiedzieli, ile każdego miesiąca będziemy wydawać na stacjonarne, łączymy się z tym plikiem w naszej bazie danych zarządzania biurem.

Zmień nazwę plikuProblem w tym, że mimo iż format pliku pozostaje ten sam, jego nazwa zmienia się co miesiąc. W zeszłym miesiącu była to „koszty stacjonarne styczeń 2017.xls”, a w tym miesiącu „koszty stacjonarne luty 2017.xls”.

Niewielka zmiana. Jestem pewien, że się zgodzisz, ale chyba, że ​​zajmiemy się problemem ręcznej zmiany nazwy pliku (po usunięciu starego pliku z drogi lub usunięciu go) lub przejdziemy przez proces ponowne łączenie tabeli za pośrednictwem połączonego menedżera tabeli w programie Access.

Ponieważ nie chcieliśmy tego robić, stworzyliśmy następujący kod, aby to zrobić - o wiele łatwiejsze, ponieważ jestem pewien, że zobaczysz:

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

Wyjaśnienie kodu

Jak widać, przekazujemy nazwę (powiązanej) tabeli wraz z nazwą nowego pliku, z którym tabela ma być powiązana. Nazwa pliku powinna zawierać pełną ścieżkę do pliku. Jednym z potencjalnych problemów na początku może być znalezienie poprawnego formatu ciągu połączenia, który należy umieścić w zmiennej „newConnect”. Chociaż istnieje wiele źródeł informacji o prawidłowym formacie, jednym z najłatwiejszych, jakie znalazłem, jest po prostu sprawdzenie ciągu połączenia bieżącej powiązanej tabeli. Aby to zrobić, wystarczy dodać poniższy wiersz bezpośrednio pod wierszem „Set objTableDef = objDB.TableDefs(tableName)”:

Debug.Print (objTableDef.Connect)

Spowoduje to wydrukowanie istniejących parametrów połączenia w oknie debugowania / bezpośredniego okna edytora kodu (jeśli nie jest to jeszcze widoczne, naciśnij CTRL-G na ekranie edytora kodu VBA, aby przełączyć widoczność okna bezpośredniego przed uruchomieniem kodu.

Ostrzeżenie

Jak zawsze, nie zapominaj, że chociaż powyższy fragment kodu może pomóc zaoszczędzić czas, gdy musisz zmienić plik, z którym jest połączona tabela, to nie może ci pomóc, jeśli napotkasz jakikolwiek Uzyskaj dostęp do uszkodzeń plików, więc upewnij się, że przechowujesz kopie zapasowe i wiesz, gdzie się zwrócić, jeśli wszystko inne zawiedzie.

Wprowadzenie autora:

Mitchell Pond jest ekspertem w dziedzinie odzyskiwania danych w DataNumen, Inc., która jest światowym liderem w technologiach odzyskiwania danych, w tym napraw uszkodzenia SQL i doskonałe oprogramowanie do odzyskiwania. po więcej informacji odwiedź www.datanumen.com

Podziel się teraz:

Możliwość dodawania komentarzy nie jest dostępna.