Jak korzystać z połączeń SQL w programie Excel
Widziałem pytanie zaktualizowane około rok temu, które zajęło mi długą drogę do rozwiązania, którego potrzebuję, ale doprowadziło do większej liczby pytań niż odpowiedzi.
Zacznę od stwierdzenia, że nie jestem „nowicjuszem” w SQL (DB2, SQLServer, Oracle), ale jestem względnym „początkującym” użytkownikiem SQL w Excelu. Ponadto pracuję w 2010 r., Ale muszę zachować zgodność z 2003 r.
Próbuję dopasować dane w jednym arkuszu do drugiego i zgłosić wyjątki. Chcę pobrać 6 kolumn z „Otwartych linii” i dopasować je do 3 kolumn z „Zamówień zwrotnych” i pokazać tylko wyjątki. „Otwarte linie” mogą mieć wartość 1..n, a „Zlecenia zwrotne” mogą mieć wartość 0..n. Chcę tylko chwycić linie, w których istnieją „zamówienia z powrotem”.
Aby napisać normalny SQL, zrobiłbym coś takiego:
SELECT
O.[Part Number], O.[Part Desc], O.[Source Domain], O.[Ship Qty], O.[Date Created],
B.[Dest Domain], B.[Quantity], B.[Date Created]
FROM [OPEN LINES] O
JOIN [Back Orders] B ON O.[Part Number] = B.[Part Number]
WHERE B.[Part Number] IS NOT NULL
ORDER BY O.[Part Number]
Problem polega na tym, że nie mogę ominąć połączenia bez błędu. To jest to, co mam do tej pory.
rs.Open "SELECT [OPEN LINES$].[Part Number], [OPEN LINES$].[Part Desc], " $ _
"[OPEN LINES$]. [Source Domain], " & _
"[OPEN LINES$].[Ship Qty], [OPEN LINES$].[Date Created] " & _
"FROM [OPEN LINES$] " & _
"JOIN [Back Orders$] ON [OPEN LINES$].[Part Number] = [Back Orders$].[Part Number] " & _
"ORDER BY [OPEN LINES$].[Part Number] ;", cn
Byłbym wdzięczny za każdą pomoc, którą możesz zapewnić.
Gord