Warsztat 3: Wyświetlanie zagregowanych danych z zachowaniem edycyjności kwerendy.

QEdit.zip
Autor: Krzysztof Pozorek
Baza w formacie MsAccess 2000
29kB, 10-07-2006

Problem:

Zdarza się, że potrzebujemy w każdym rekordzie na formularzu ciągłym wyświetlić informacyjnie dane zagregowane z innych tabel. To proste, wystarczy zrobić standardowego JOIN-a i gotowe.

SELECT Tabela1.*, Query1.JakasSuma FROM Tabela1 INNER JOIN Query1 ON Tabela1.Id = Query1.Id;

Niestety zaraz bardzo się rozczarujemy, bo okazuje się, że takiej kwerendy nie można już edytować(!). Jak z tym sobie poradzić?

Rozwiązanie:

Pierwszy pomysł nasuwa się sam, to zastąpienie JOIN-a funkcja DFirst, która wyświetli nam potrzebne informacje. Niestety to baaardzo wolne rozwiązanie.

Proponuje bardzo prosty sposób dla początkujących i zaawansowanych, który pozwala wręcz błyskawiczne wyświetlać dane pomocnicze zachowując jednocześnie możliwość edycji danych. Szybkość i prostota tego rozwiązania bardzo mi się spodobała - mam na myśli wykorzystaną w przykładzie sztuczkę z polem kombi :-)

Uwagi:

Ta "sztuczka" to nie jakaś nowość, tylko znane Kombi1.Column(1), jednak w tym kontekście to raczej mało popularne zastosowanie.
Istnieje możliwość uzyskania podobnego efektu za pomocą specjalnej funkcji, która trzyma recordset z zmiennej statycznej i odwołuje się do niej bez ponownego otwierania obiektu. Jednak prostota jest wyraźnie po stronie prezentowanego przykładu.

K.P.