Udostępnij za pośrednictwem


Jak rozwiązać problemy z odwołaniami w bazie danych programu Access

Oryginalny numer KB: 310803

Podsumowanie

W tym artykule opisano problemy, które dotyczą używania odwołań w bazie danych programu Access.

Zrozumienie błędów odwołań wymaga zrozumienia zarówno sposobu odwołania do bibliotek w bazie danych programu Access, jak i tego, co jest potrzebne do zainstalowania bazy danych na komputerze docelowym bez łamania tych odwołań. W tym artykule omówiono następujące zagadnienia:

  • Wyświetlanie odwołań do baz danych programu Access
  • Rozwiązywanie problemów z odwołaniami języka Microsoft Visual Basic for Applications w programie Access
  • Opis komunikatów o błędach odwołań
  • Rozwiązywanie problemów z odwołaniami na komputerze programisty
  • Rozpowszechnianie plików bazy danych
  • Aktualizowanie listy referencyjnej
  • Rozpowszechnianie plików bazy danych z kontrolkami ActiveX
  • Ponowne rejestrowanie pliku

Wyświetlanie odwołań do baz danych programu Access

Aby wyświetlić bieżące odwołania do bazy danych:

  1. Otwórz bazę danych.
  2. Naciśnij klawisze ALT+F11, aby uruchomić Edytor Visual Basic.
  3. W menu Narzędzia kliknij polecenie Odwołania.

Rozwiązywanie odwołań Visual Basic w programie Access

Program Access załaduje odpowiednie pliki (na przykład bibliotekę typów, bibliotekę obiektów lub bibliotekę kontrolek) dla każdego odwołania zgodnie z informacjami wyświetlanymi w polu "Odwołania". Jeśli program Access nie może znaleźć tego pliku, uruchamia następujące procedury w celu zlokalizowania pliku:

  1. Program Access sprawdza, czy plik, do którego prowadzi odwołanie, jest obecnie załadowany w pamięci.
  2. Jeśli plik nie został załadowany do pamięci, program Access próbuje sprawdzić, czy klucz rejestru RefLibPaths istnieje. Jeśli klucz ten istnieje, program Access szuka nazwanej wartości o takiej samej nazwie jak odwołanie. W przypadku dopasowania program Access załaduje odwołanie ze ścieżki, na którą wskazuje nazwana wartość.
  3. Następnie program Access wyszuka plik, do którego następuje występuje odwołanie, w następujących lokalizacjach, w następującej kolejności:
    1. Folder Aplikacji (lokalizacja pliku Msaccess.exe).
    2. Bieżący folder wyświetlony po kliknięciu polecenia Otwórz w menu Plik.
    3. Folder Windows lub Winnt, w którym są uruchomione pliki systemu operacyjnego.
    4. Folder systemowy w folderze Windows lub Winnt.
    5. Foldery zmiennej środowiskowej PATH, które są bezpośrednio dostępne dla systemu operacyjnego.
  4. Jeśli program Access nie może znaleźć pliku, wystąpi błąd odwołania.

Opis komunikatów o błędach odwołań

Istnieje kilka komunikatów o błędach związanych z brakującym plikiem lub z plikiem, którego wersja jest inna niż wersja używana w bazie danych. W większości przypadków możesz wyszukać w bazie wiedzy Microsoft Knowledge Base artykuł o określonym komunikacie o błędzie, a następnie usunąć ten błąd, korzystając z procedury opisanej w tym artykule. W niektórych przypadkach plik zależności nie jest prawidłowo dopasowany do pliku głównego.

Na poniższej liście opisano niektóre komunikaty o błędach odniesień, które mogą zostać wyświetlone. Należy jednak zauważyć, że lista ta nie zawiera wszystkich możliwych komunikatów o błędach odwołań.

  • "Metoda NazwaMetody obiektu NazwaObiektu nie powiodła się"

    Zazwyczaj ten komunikat o błędzie może być wyświetlany, jeśli występuje problem z biblioteką typów programowania, na przykład nieprawidłowy plik biblioteki DLL (Dynamic-Link Library) obiektu Data Access (DAO). W bazie wiedzy Microsoft Knowledge Base można wyszukać artykuły opisujące różne formy tego komunikatu o błędzie.

  • "Funkcja jest niedostępna w wyrażeniu Użycia"

    Ten komunikat o błędzie może zostać wyświetlony, jeśli występuje problem z biblioteką typów programowania lub jeśli kod nie wyszczególnił właściwej biblioteki, a plik jest wymieniony na liście referencyjnej z niższym priorytetem niż plik zawierający taką samą nazwę funkcji — na przykład jeśli kod DAO jest użyty z biblioteką ActiveX Data Object (ADO) o wyższym priorytecie niż biblioteka obiektów DAO. Ten komunikat o błędzie może również zostać wyświetlony, jeśli formularz lub raport zawiera kontrolkę ActiveX.

  • "Nie można znaleźć projektu lub biblioteki"

    Ten komunikat o błędzie może zostać wyświetlony, jeśli program Access nie będzie mógł znaleźć pliku na liście referencyjnej. Często plik jest oflagowany jako brakujący w polu dialogowym odwołań. Czasami plik znajduje się na komputerze programisty, ale nie na komputerze docelowym.

  • "Zmienna nie została zdefiniowana" lub "Nie zdefiniowano typu zdefiniowanego przez użytkownika"

    Użycie Kreatora zabezpieczeń na poziomie użytkownika do zabezpieczenia bazy danych, która odwołuje się do bibliotek innych niż te, które są domyślnie dołączone, może spowodować wyświetlenie jednego z tych komunikatów o błędzie. Na przykład odwołania do bibliotek, które istniały w niezabezpieczonej bazie danych, nie są automatycznie tworzone w nowej, zabezpieczonej bazie danych.

  • "Błąd czasu wykonania 5", "Nieprawidłowe odwołanie do procedury lub argument", "Biblioteka zawierająca ten symbol nie zawiera odwołania w bieżącym projekcie" lub "Biblioteka zawierająca ten symbol nie zawiera odwołania w bieżącym projekcie, więc symbol jest niezdefiniowany"

    Jeden z tych komunikatów o błędzie może zostać wyświetlony, jeśli istnieje odwołanie do bazy danych, biblioteki typów lub biblioteki obiektów oflagowanych jako brakujące.

  • "Komponent ActiveX nie może utworzyć obiektu"

    Ten komunikat o błędzie nie musi oznaczać, że kontrolka ActiveX jest za to odpowiedzialna. Na przykład jedną z możliwych przyczyn jest to, że obiekt DAO, który jest składnikiem ActiveX, nie może utworzyć obiektu, ponieważ nie można uruchomić serwera automatyzacji obiektów DAO. Często przyczyną jest to, że biblioteki DLL, które zawierają odwołanie do funkcji programu nie są zarejestrowane lub są nieprawidłowo zarejestrowane.

Rozwiązywanie problemów z odwołaniami na komputerze programisty

Utworzenie nowej, pustej bazy danych, a następnie zaimportowanie obiektów z innego pliku bazy danych może być związane z wystąpieniem problemów z odwołaniami, jeśli kod lub kontrolki ActiveX korzystają z odwołań, które domyślnie nie są zawarte w bazie danych. Domyślne odwołania dla bazy danych programu Access 2000 to:

  • Visual Basic dla aplikacji
  • Biblioteka obiektów programu Microsoft Access 9.0
  • Automatyzacja obiektów OLE
  • Biblioteka obiektów Microsoft ActiveX Data Objects (ADO) 2.1

Jeśli źródłem jest inna baza danych programu Access 2000, sprawdź, czy odwołania są dopasowane. Jeśli źródło jest starszą wersją programu Access, prawdopodobnie jest w użyciu biblioteka DAO 3.5 lub wcześniejsza jej wersja; jednakże program Access 2000 domyślnie nie obsługuje biblioteki DAO 3.5. Spróbuj usunąć odwołanie do biblioteki obiektów ADO 2.1 (jeśli istnieje) i dodać odwołanie do biblioteki obiektów DAO 3.6.

Jeśli przekonwertowano bazę danych z wcześniejszej wersji programu Access i zawiera ona odwołanie do pliku Utility.mda, to odwołanie to można usunąć w większości przypadków, ponieważ funkcje, do których odwołuje się to wywołanie, są uwzględniane w odwołaniach domyślnych programu Access 2000. Jeśli istnieją odwołania do wcześniejszych wersji biblioteki obiektów DAO, możesz również usunąć te odwołania, ponieważ biblioteka DAO 3.6 może adresować te funkce.

Aby dodać odwołanie do biblioteki:

  1. Otwórz bazę danych.
  2. Naciśnij klawisze ALT+F11, aby uruchomić Edytor Visual Basic.
  3. W menu Narzędzia kliknij polecenie Odwołania.
  4. W obszarze Dostępne odwołania kliknij, aby zaznaczyć pole wyboru obok nazwy biblioteki, a następnie kliknij przycisk OK.

Aby usunąć odwołanie do biblioteki:

  1. Otwórz bazę danych.
  2. Naciśnij klawisze ALT+F11, aby uruchomić Edytor Visual Basic.
  3. W menu Narzędzia kliknij polecenie Odwołania.
  4. W obszarze Dostępne odwołania kliknij pole wyboru obok nazwy biblioteki, aby je wyczyścić, a następnie kliknij przycisk OK.

Rozpowszechnianie plików bazy danych

Istnieją dwie podstawowe metody rozpowszechniania plików baz danych. Możesz skopiować plik z komputera programisty na komputer docelowy lub utworzyć pakiet instalacyjny za pomocą Kreatora pakietu i wdrażania.

Jeśli kopiujesz plik z komputera programisty na komputer docelowy, kopiowany jest tylko plik bazy danych. Należy ręcznie upewnić się, że wszystkie pliki wymienione na liście referencyjnej są dostępne na odpowiednim poziomie wersji i w tej samej lokalizacji względnej na komputerze docelowym, co na komputerze programisty.

Podczas opracowywania aplikacji w czasie pracy w programie Access należy pamiętać, że niektóre pliki systemu operacyjnego muszą być rozpowszechniane z aplikacją w czasie uruchamiania. Pakowanie tych plików jest wykonywane automatycznie przez składnik Kreatora pakietu i wdrażania Microsoft Office 2000 Developer. Czasami zawarte w nich wersje plików zależą od innych aplikacji zainstalowanych na komputerze programisty, które mogły zmodyfikować pliki systemu operacyjnego.

Zastosowanie się do pewnych wskazówek zwykle gwarantuje, że wersje plików, których używasz, nie będą powodować konfliktów z plikami na komputerze docelowym podczas instalowania aplikacji w czasie uruchamiania. Poniżej przedstawiono te wskazówki:

  1. Opracowanie bazy danych programu Access na dowolnym komputerze.
  2. Utwórz środowisko komputerowe, w którym dysk twardy został sformatowany ponownie i zainstalowano tylko najwcześniejszą wersję odpowiedniego systemu operacyjnego, usługi Office i programu Office 2000 Developer. Uruchom "Kreator pakietu i wdrażania" na tym komputerze, aby utworzyć wersję aplikacji w czasie uruchamiania. Dzięki temu poziomy wydania plików będą działać na dowolnym komputerze docelowym.
  3. Utwórz środowisko komputerowe, w którym został sformatowany ponownie dysk twardy i gdzie jest zainstalowany tylko system operacyjny. Przetestuj aplikację w czasie pracy w tym środowisku.
    • Jeśli aplikacja nie zostanie pomyślnie uruchomione, oznacza to, że problem spowodowany jest samą aplikacją. Należy zidentyfikować i usunąć problem przed rozpowszechnieniem danej aplikacji.
    • Jeśli aplikacja działa pomyślnie na komputerze testowym, ale nie działa na komputerze docelowym, oznacza to, że problem dotyczy komputera docelowego, a nie danej aplikacji. Konieczne jest zidentyfikowanie i usunięcie prawdopodobnej przyczyny na komputerze docelowym, na przykład niezgodności lub uszkodzonego pliku.

Odświeżanie listy odowłań

Jeśli problem z odwołaniem obejmuje kontrolkę ActiveX, czasami można go rozwiązać poprzez odświeżenie listy odwołań. Aby odświeżyć listę odwołań należy:

  1. W edytorze Visual Basic kliknij pozycję Odwołania w menu Narzędzia.
  2. W oknie dialogowym Odwołania zaznacz kliknięciem odwołanie, które nie jest jeszcze zaznaczone, zanotuj wybrane odwołanie, a następnie kliknij przycisk OK.
  3. W menu Narzędzia kliknij ponownie polecenie Odwołania.
  4. Kliknij, aby wyczyścić wybrane odwołanie, a następnie kliknij przycisk OK.

Rozpowszechnianie plików bazy danych z kontrolkami ActiveX

Istnieją dwa typy licencji dla kontrolek ActiveX: licencja czasu projektowania i licencja czasu pracy.

  • Licencja czasu projektowania zezwala na wstawianie licencjonowanych kontrolek ActiveX z programu Office 2000 Developer do formularzy i raportów w bazie danych programu Access.
  • Licencja czasu pracy zezwala na używanie kontrolek programu ActiveX w bazie danych programu Access na komputerze, na którym nie zainstalowano programu Office 2000 Developer, ale licencja na czas uruchamiania nie zezwala na wstawianie nowych licencjonowanych kontrolek ActiveX. Aby zainstalować licencję czasu uruchamiania, rozpowszechnij kontrolki ActiveX przy użyciu "Kreatora pakietu i wdrażania", który zapisuje licencję dla kontrolek w rejestrze komputera docelowego.

Brakująca flaga, która może zostać wyświetlona po otwarciu modułu w widoku projektu, a następnie kliknięciu pozycji Odwołania w menu Narzędzia, oznacza, że odwołanie do kontrolki Wspólnego okna dialogowe na komputerze docelowym nie jest zgodne ze źródłem w pliku bazy danych pochodzącym z komputera programisty.

Jeśli rozpowszechniasz plik bazy danych bez instalowania kontrolki wspólnego okna dialogowego do rozpowszechniania, odwołanie do kontrolki może być oflagowane jako brakujące lub może zostać wyświetlony komunikat o błędzie z komunikatem "Nie masz licencji wymaganej do używania tej kontrolki ActiveX", jeśli kontrolka nie przeznaczona do rozpowszechniania jest już zainstalowana na komputerze docelowym.

Nawet jeśli plik bazy danych jest częścią aplikacji czasu uruchamiania, może zostać wyświetlony komunikat o błędzie "Nie masz licencji wymaganej do używania tej kontrolki ActiveX", jeśli kontrolka nie jest przeznaczona do rozpowszechniania, a jest już zainstalowana na komputerze docelowym i jest ona w nowszej wersji niż kontrolka dostarczana przez aplikację uruchamianą. Ten problem może wystąpić, ponieważ program instalacyjny nie zastępuje nowszych wersji pliku przy użyciu wcześniejszej wersji tego samego pliku.

Ponowne rejestrowanie pliku

Plik może znajdować się na liście odwołań bez poprawnego zarejestrowania go w rejestrze. Jeśli podejrzewasz, że może to mieć miejsce, wykonaj następujące czynności, aby ponownie zarejestrować plik:

  1. W systemie Microsoft Windows NT 4.0 kliknij pozycję "Start", wskaż pozycję "Znajdź", a następnie kliknij pozycję Pliki lub Foldery. W systemie Windows 2000 kliknij pozycję "Start", wskaż pozycję "Wyszukiwanie", a następnie kliknij pozycję Dla plików i folderów.
  2. W polu Nazwane lub w polu Wyszukaj pliki i foldery o nazwie wpisz regsvr32.exe.
  3. W polu Szukaj w kliknij katalog główny dysku twardego (zazwyczaj jest to C:).
  4. Kliknij pole wyboru Uwzględnij podfoldery, aby je zaznaczyć, jeśli jeszcze nie jest zaznaczone, a następnie kliknij przycisk Znajdź teraz lub Wyszukaj teraz.
  5. Po odnalezieniu pliku kliknij przycisk Start, kliknij polecenie Uruchom, a następnie usuń wszystko, co znajduje się w polu Otwórz.
  6. Przeciągnij flik Regsvr32.exe z okienka wyników wyszukiwania do pola Otwórz.
  7. Powtórz kroki od 2 do 6, tym razem wyszukując plik FileName.dll, gdzie FileName jest nazwą pliku, który chcesz ponownie zarejestrować.
  8. Gdy plik FileName.dll jest w polu Otwórz za pomocą Regsvr32.exe kliknij przycisk OK.
  9. W programie Access sprawdź, czy problem nadal występuje.

Jeśli nie masz pliku Regsvr32.exe na komputerze, sprawdź, czy nie ma go na innych komputerach. Jeśli plik jest niedostępny, można go uzyskać z witryny internetowej firmy Microsoft.

Uwaga

Pamiętaj, aby skompilować wszystkie moduły po dostosowaniu odwołań. Aby skompilować wszystkie moduły, przy otwartym module kliknij polecenie Kompilowanie bazy danych w menu Debugowanie. Jeśli moduły nie ulegają kompilacji, może to być spowodowane dodatkowymi nienaprawionymi odwołaniami.