konto usunięte

Temat: ścieżka względna tabeli łączonej

Witam, używam w accessie tabeli łączonej z pliku excela. Jako ścieżkę do pliku chciałbym podać coś takiego [bieżący katalog]\plik.xlsx zamiast "C:\plik.xlsx". Takie rozwiązanie jest bardziej elastyczne. Gdy podaję jako ścieżkę ".\plik.xlsx", kreator to akceptuje, ale i tak zapamiętuje ścieżkę bezwzględną. Czy ma ktoś pomysł jak to zrobić?Michał Zawadzki edytował(a) ten post dnia 24.07.09 o godzinie 17:25
Bartek Borczyk

Bartek Borczyk Operator liczb i
słów

Temat: ścieżka względna tabeli łączonej

Denerwujące...

Można aktualizować wykorzystując właściwość Connect obiektu TableDef:


Sub sAktualizacjaLinków()

Dim tblTabela As DAO.TableDef
Dim strŁańcuch As String
Dim strŁańcuch_Początek As String
Dim strŁańcuch_Koniec As String
Dim strTreść As String
Dim objOdpowiedź As VbMsgBoxResult

On Error GoTo PROCEDURA_BŁĄD

For Each tblTabela In CurrentDb.TableDefs
strŁańcuch = tblTabela.Connect
strTreść = "Tabela do zamiany: " & tblTabela.Name & vbNewLine & "Łańcuch aktualny: " & strŁańcuch & vbNewLine

If Len(strŁańcuch) > 0 Then
If Left$(strŁańcuch, 5) = "Excel" Then
strŁańcuch_Początek = Left$(strŁańcuch, InStrRev(strŁańcuch, ";"))
strŁańcuch_Koniec = Right$(strŁańcuch, Len(strŁańcuch) - InStrRev(strŁańcuch, "\"))

strŁańcuch = strŁańcuch_Początek & "DATABASE=" & CurrentProject.Path & "\" & strŁańcuch_Koniec
strTreść = strTreść & "Łańuch po aktulizacji: " & strŁańcuch & vbNewLine & "Zamienić?"

objOdpowiedź = MsgBox(strTreść, vbYesNo + vbQuestion, "AktualizacjaLinków")

If objOdpowiedź = vbYes Then
With tblTabela
.Connect = strŁańcuch
.RefreshLink
End With
End If

End If
End If
Next tblTabela

MsgBox "Gotowe!", vbInformation, "AktualizacjaLinków"

PROCEDURA_WYJŚCIE:
Exit Sub

PROCEDURA_BŁĄD:
MsgBox "Błąd procedury!", vbCritical, "AktualizacjaLinków"
GoTo PROCEDURA_WYJŚCIE
End Sub


EDIT: W tym przypadku założyłem, że zarówno baza jak i pliki tabel połączonych znajdują się w tym samym folderze! Oczywiście można by i tak: CurrentProject.Path & "\PlikiTabelPołączonych\".Bartosz Borczyk edytował(a) ten post dnia 26.07.09 o godzinie 21:54

konto usunięte

Temat: ścieżka względna tabeli łączonej

OK. Dziękuję!
Polecam wrzucić to do AutoExec i usunąć msgboxa z pytaniem o potwierdzenie.
Piotr Błaszczyk

Piotr Błaszczyk PZU Życie, Starszy
Analityk Finansowy

Temat: ścieżka względna tabeli łączonej

Cześc,
Jak zmodyfikowac poniższe makro, żeby zamiast pętli aktualizującej wszystkie tabele połączone, zdefiniowac tylko kilka tabel połączonych, które chcę odświeżyc? Połączone tabele linkują się z plikami Excel, txt i mdb.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Piotr Błaszczyk

Piotr Błaszczyk PZU Życie, Starszy
Analityk Finansowy

Temat: ścieżka względna tabeli łączonej

Dziękuję za odpowiedź, ale nie bardzo widzę jak w moim przypadku mógłbym to zastosowac. Mówimy o zmianie adresu połączonej tabeli, a nie importowaniu tabeli. Zasadniczo jedyne czego potrzebuję to deklaracji w vba nazwy tabeli, której adres chcę aktualnie zmienic.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Piotr Błaszczyk

Piotr Błaszczyk PZU Życie, Starszy
Analityk Finansowy

Temat: ścieżka względna tabeli łączonej

"zasadniczo", to udzielanie takiej odpowiedzi niczego nie wnosi, więc może na przyszłośc nie warto...
Skoro proszę o pomoc w odświeżeniu zlinkowanej tabeli, tzn., że są powody, dla których zdecydowałem się na takie właśnie rozwiązanie i choc zawsze warto rozważyc alternatywne możliwości, to w tym konkretnym przypadku to raczej nie wchodzi w grę.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

konto usunięte

Temat: ścieżka względna tabeli łączonej

Piotr Błaszczyk:
Cześc,
Jak zmodyfikowac poniższe makro, żeby zamiast pętli aktualizującej wszystkie tabele połączone, zdefiniowac tylko kilka tabel połączonych, które chcę odświeżyc? Połączone tabele linkują się z plikami Excel, txt i mdb.


with CurrentDb.TableDefs("nazwa tabeli")
.Properties("Connect") "ODBC;DATABASE='...';DSN='...'; UID='...'; PWD='...';"
.Properties.Refresh
.RefreshLink
End With
Piotr Błaszczyk

Piotr Błaszczyk PZU Życie, Starszy
Analityk Finansowy

Temat: ścieżka względna tabeli łączonej

Dziękuję, o to właśnie mi chodziło. Ale po zastanowieniu stwierdziłem, że zamiast definiowac po kolei tabele, którym chcę zaktualizowac linka, szybciej będzie w pętli dodac warunek sprawdzający nazwę pliku którego nie chcę odświeżac. Jeśli nazwa pliku jest różna od podanej link ma zostac odświeżony.
Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: ścieżka względna tabeli łączonej

1 pytający
application.CurrentProject.Path

2 pytający
Piotr Błaszczyk:
Cześc,
Jak zmodyfikowac poniższe makro, żeby zamiast pętli aktualizującej wszystkie tabele połączone, zdefiniowac tylko kilka tabel połączonych, które chcę odświeżyc? Połączone tabele linkują się z plikami Excel, txt i mdb.

Polecam zrobić sobie tabelkę z wypisanymi nazwami tabeli do odświeżenie i po niej pętle.



Wyślij zaproszenie do