P026
"Wydruk pojedynczego rekordu"  - synchronizacja raportu z formularzem


Dosyć częste pytanie na grupie dyskusyjnej pl.comp.bazy-danych.msaccess :

"Jak uzyskać nastepujący efekt: chciałbym wydrukować raport, ale zawierający tylko ten rekord, który jest aktualnie widoczny (bieżący) w formularzu?"

Jednym ze sposobów jest wykorzystanie argumentu WHERE akcji/metody OpenReport (OtwórzRaport). Dla uzyskania efektu "pojedynczego rekordu", pole (lub pola) poprzez które odbędzie się "synchronizacja" powinno zawierać wartości unikatowe, nalepiej będące kluczem głownym tabeli. Zazwyczaj jest to pole przechowujące numer klienta, towaru, itp. (i zazwyczaj jest typu Autonumer).

Przykładowo w kodzie VBA:

DoCmd.OpenReport "MójRaport", , , "[ID_Klienta] =" & Me![ID_Klienta]
Uwaga: jeżeli pole jest typu tekstowego,  powinno wartość powina być "otoczona" dodatkowymi apostrofami, np:
  "[NazwaProduktu] =" & "'" & Me![NazwaProduktu] & "'"

Poniżej można pobrać niewielki przykład, obrazujący powyższy sposób. Dodatkowo wykorzystano sprawdzanie właściwości Dirty oraz wymuszenie zapisania bieżącego rekordu (zob. P025). Szczegóły w komentarzach kodu VBA formularza.

 

Innym sposobem "efektu pojedynczego rekordu" jest umieszczanie na raporcie formantów niezwiązanych, odwołujących się w "Źródle formantu" do pól formularza, np:

=forms![MojFormularz]![Jakieśpole]

Sposób z warunkiem WHERE umożliwia jednak stosunkowo proste sporządzanie wydruków wg. różnych kryteriów, z wykorzystaniem jednego projektu raportu. Np. ten sam raport można wykorzystać do drukowania osób mieszkających przy w danej miejscowości, ulicy, itp., a bez podania warunku zostaną wydrukowane wszystkie rekordy.

Ten sam sposób można użyć dla synchronizacji formularzy (OpenForm).


Napisał: Stanley, 5 VI 2001
Źródła: Pomoc programu: OpenForm, OpenReport


[Strona główna] [Wyjście] [Poprzedni]