Nie wiem jak to jest w acesie, ale AOO i LO również posiadają kwerendy i można tak skonstruować zapytanie aby wynik zwracał "niepasujące" dane.
Można to osiągnąć przy pomocy lewostronego lub prawostronnego złączenia dwóch tabel. Złączenie takie wyświetla wszystkie dane z jednej tabeli i dopasowuje do tych wartości wyniki z drugiej tabeli. Jeżeli jakieś wartości z tabeli pierwszej nie znajdzie w tabeli drugiej wartości przy tum rekordzie otrzymają wartość null.
Wiem, że to troszkę zagmatwane dlatego proponuje pobierz tą bazę:
BazaDanych - Befama4.odb, przy jej pomocy spróbuję wyjaśnić ten problem.
W tej bazie utwórz kwerendę SQL, wlej poniższy kod, zapisz i uruchom:
Kod: Zaznacz cały
SELECT
"Klienci (Kontrahenci)"."NIP",
"Klienci (Kontrahenci)"."Skrócona Nazwa Firmy",
"Faktury"."NrFaktury"
FROM "Faktury" RIGHT JOIN "Klienci (Kontrahenci)"
ON "Faktury"."KlientNip" = "Klienci (Kontrahenci)"."NIP"
Wynikiem będzie kwerenda wyświetlająca pewne wyniki z dwóch tabel ( "Faktury" oraz "Klienci (Kontrahenci)" ), zastosowane prawostronne złączenie spowoduje, że będą wyświetlone wszystkie rekordy z tabeli "Klienci (Kontrahenci)" a dokładniej pola "NIP" i "Skrócona Nazwa Firmy". Do tych rekordów zostaną dopasowane wyniki z tabeli "Faktury"."NrFaktury".
Dodając na końcu kodu jeszcze warunek:
mówimy że interesują nas tylko rekordy w których pole "NrFaktury" jest puste.
Ten sam efekt uzyskać można stosując zapytanie z podzapytaniem:
Kod: Zaznacz cały
SELECT
"NIP",
"Skrócona Nazwa Firmy"
FROM "Klienci (Kontrahenci)"
WHERE NOT "NIP" IN ( SELECT "KlientNip" FROM "Faktury" )
Czyli mają być wyświetlone wartości z pól "NIP" i "Skrócona Nazwa Firmy" z tabeli "Klienci (Kontrahenci)", przy czym numery z pola "NIP" NIE MAJĄ BYĆ takie same jak numery zapisane w polu "KlientNip" z tabeli "Faktury" .