Wyniki nie są wyświetlane po uruchomieniu tabel połączonych z programem SQL Server z różnych źródeł

Uwaga

Nazwa usługi Office 365 ProPlus została zmieniona na Aplikacje usługi Microsoft 365 dla przedsiębiorstw. Aby uzyskać więcej informacji na temat tej zmiany, przeczytaj ten wpis w blogu.

Oryginalny numer KB:   824169

Uwaga

Ten artykuł dotyczy pliku bazy danych programu Microsoft Access (mdb) lub pliku bazy danych programu Microsoft Access (accdb). Wymaga podstawowych umiejętności makro, kodowania i interoperacyjności.

Symptomy

Po uruchomieniu kwerendy w bazie danych programu Microsoft Access, która łączy połączone tabele programu Microsoft SQL Server z różnych źródeł lub baz danych, kwerenda może nie zwracać żadnych danych.

Jednak po uruchomieniu podobnej kwerendy, która odwołuje się do połączonych tabel programu SQL Server z tego samego źródła lub bazy danych, ten problem nie występuje.

Obejście problemu

Aby obejść ten problem, należy użyć jednej z następujących metod:

Przepisanie kwerendy

Kwerendę programu Microsoft Access można przepisać, aby użyć kryteriów sprzężenia ze słowem kluczowym LIKE. Operator LIKE służy do porównywania jednego pola z drugim polem w tabelach połączonych z różnych baz danych zamiast przyłączania ANSI.

Na przykład jeśli oryginalna kwerenda jest następująca, gdzie dbo_db1_table1 jest połączony z bazy danych programu SQL Server DB1 i dbo_db2_table1, dbo_db2_table2 są połączone z bazy danych programu SQL Server DB2:

SELECT 
dbo_db1_table1.db1_table1_col1, 
dbo_db2_table1.db2_table1_col1, 
dbo_db2_table2.db2_table2_col1
FROM 
(
dbo_db1_table1 INNER JOIN dbo_db2_table1 
ON
dbo_db1_table1.db1_table1_col2 = dbo_db2_table1.db2_table1_col2
) INNER JOIN dbo_db2_table2 
ON 
dbo_db2_table1.db2_table1_col3 = dbo_db2_table2.db2_table2_col3;

przeformułować kwerendę w następujący sposób:

SELECT 
dbo_db1_table1.db1_table1_col1, 
dbo_db2_table1.db2_table1_col1, 
dbo_db2_table2.db2_table2_col1
FROM 
dbo_db1_table1, 
dbo_db2_table1 INNER JOIN dbo_db2_table2 
ON 
dbo_db2_table1.db2_table1_col3 = dbo_db2_table2.db2_table2_col3;
WHERE 
(((dbo_db1_table1.db1_table1_col2 LIKE dbo_db2_table1.db2_table1_col2));

Uwaga

W tym miejscu w tej samej kwerendzie są wyświetlane zarówno składnia ANSI JOIN, jak i NON ANSI JOIN.

Używanie projektu bazy danych programu Access

Aby uniknąć problemu wymienionego w sekcji "Symptomy" tego artykułu, należy użyć projektu bazy danych programu Microsoft Access zamiast bazy danych programu Microsoft Access. Połącz odpowiednie tabele programu SQL Server w projekcie bazy danych programu Microsoft Access, a następnie utwórz procedurę składowaną w celu uwzględnienia następującej kwerendy (w której dbo_db1_table1 jest połączony z bazą danych PROGRAMU SQL Server DB1 i dbo_db2_table1, dbo_db2_table2 są połączone z bazy danych DB2 programu SQL Server):

SELECT 
dbo_db1_table1.db1_table1_col1, 
dbo_db2_table1.db2_table1_col1, 
dbo_db2_table2.db2_table2_col1
FROM 
(
dbo_db1_table1 INNER JOIN dbo_db2_table1 
ON
dbo_db1_table1.db1_table1_col2 = dbo_db2_table1.db2_table1_col2
) INNER JOIN dbo_db2_table2 
ON 
dbo_db2_table1.db2_table1_col3 = dbo_db2_table2.db2_table2_col3;

Zestaw wyników pojawi się po uruchomieniu tej procedury składowanej.

Importowanie tabel programu SQL Server

Aby uniknąć problemu wymienionego w sekcji "Symptomy" tego artykułu, należy zaimportować tabele programu SQL Server do bazy danych programu Microsoft Access zamiast łączyć tabele programu SQL Server z bazą danych programu Access.

Uwaga

W przypadku importowania tabel programu SQL Server do bazy danych programu Access nie można używać najnowszych danych w zaimportowanym tabeli, ponieważ zaimportowana tabela zawiera migawkę danych podczas importowania tabeli.

Więcej informacji

Dane w programie Microsoft Access można filtrować za pomocą słowa kluczowego JOIN w kwerendach. Join Słowo kluczowe jest klasyfikowane jako ANSI JOIN i NON ANSI JOIN. ANSI JOIN używa słów kluczowych JOIN i ON w zapytaniu. NON ANSI JOIN używa klauzuli WHERE w kwerendzie.

NON ANSI JOIN był używany częściej przed ewolucją ANSI 92 SQL i został przesuń do ANSI JOIN. Firma Microsoft zaleca, aby do filtrowania danych używać ansi join w kwerendach.

Odwołania

Aby uzyskać więcej informacji dotyczących uruchamiania Kreatora rozbudowy, kliknij polecenie Pomoc programu Microsoft Office Access w menu Pomoc, wpisz Kreator rozbudowy w polu Wyszukaj w okienku Pomocy, a następnie kliknij przycisk Rozpocznij wyszukiwanie w celu wyświetlenia tematu.