Wykorzystanie korespondencji seryjnej do stworzenia zaświadczeń o członkostwie
- Autor: Mirosław Zalewski
- 13 października 2012
- komentarzy 29
Zawsze, gdy trzeba stworzyć wiele dokumentów różniących się tylko kilkoma szczegółami, powinniśmy użyć Korespondencji seryjnej. W tym artykule na przykładzie pokazuję, jak używać tej funkcji i stworzyć zaświadczenia o członkostwie w organizacji.
Swego czasu miałem przyjemność być koordynatorem jednej z Sekcji Koła Naukowego na moim uniwersytecie. Bycie koordynatorem jest fajne, ponieważ wszyscy ich lubią — zwłaszcza gdy zbliża się termin składania wniosków o stypendium, kiedy to członkowie Koła potrzebują dokumentów potwierdzających ich działalność naukową. Oczywiście stworzenie tych kilkunastu zaświadczeń nie byłoby specjalnie nużące, ale nie widziałem większego sensu w wykonywaniu pracy, którą może za mnie wykonać komputer — dlatego też zdecydowałem się wykorzystać Korespondencję seryjną.
1. Przygotowanie treści dokumentu
Cały proces najlepiej jest zacząć od przygotowania treści zaświadczenia. W niniejszym artykule wykorzystamy wersję minimum, zawierającą tylko dwie zmienne — imię oraz nazwisko:
Zaświadczam, że Pan/i <Imię> <Nazwisko> jest aktywnym członkiem/aktywną członkinią Koła Naukowego.
Dopiero po napisaniu treści zaświadczenia jasne staje się, że nasze wstępne założenie wykorzystania tylko dwóch zmiennych było nazbyt optymistyczne — będziemy potrzebowali również trzeciej, określającej płeć. Dzięki niej nasze zaświadczenia będą bardziej spersonalizowane (te wyrazy, które powinny być odmienione, zostaną odmienione).
2. Przygotowanie bazy danych
Teraz, kiedy już wiemy jakich zmiennych będziemy potrzebowali, możemy przystąpić do zaprojektowania bazy danych. Naszą bazą danych w tym wypadku będzie zwykły skoroszyt programu Calc. Tworzymy więc nowy plik i wypełniamy go w następujący sposób:
- W pierwszym wierszu umieszczamy nagłówki pól. Są to nazwy, po których będziemy identyfikować zmienne. Powinny one być dla nas zrozumiałe, czego „Imię”, „Nazwisko” oraz „Płeć” są doskonałymi przykładami. W celu uniknięcia późniejszych problemów, w nazwach tych nie powinny występować spacje.
- W każdym kolejnym wierszu wpisujemy dane o osobie, której wystawimy zaświadczenie. Jeżeli chodzi o płeć, można wpisać dowolne symbole, byle były one różne i stosowane konsekwentnie. Ja wykorzystam literki „k” (jak kobieta) i „m” (jak mężczyzna).
Plik arkusza kalkulacyjnego oczywiście zapisujemy.
Mamy już treść zaświadczenia oraz bazę danych, na podstawie której powstaną nasze dokumenty. Pozostaje nam jeszcze tylko wypełnić plik zaświadczenia danymi z bazy. Aby to jednak zrobić, musimy wpierw zarejestrować bazę danych w programie LibreOffice.
3. Rejestrowanie bazy danych w programie
Z menu wybieramy Plik → Nowy → Baza danych. Pojawi się nowe okienko, w którym zaznaczamy pozycję Połącz z istniejącą bazą danych, zaś z listy wybieramy Arkusz Kalkulacyjny.
W następnym kroku musimy wskazać programowi ścieżkę do uprzednio zapisanego pliku arkusza kalkulacyjnego.
Wreszcie w trzecim i ostatnim kroku upewniamy się, że opcja Tak, zarejestruj bazę danych jest zaznaczona, zaś opcja Otwórz bazę danych do edycji jest odznaczona (jeżeli zostawimy ją zaznaczoną, to otworzy się program LibreOffice Base, za pomocą którego można manipulować bazą danych; nasza baza jest bardzo prosta, więc program ten nie jest nam do niczego potrzebny).
Po kliknięciu Utwórz pojawi się okienko zapisu pliku. Wpisujemy dowolną nazwę i zatwierdzamy.
Plik ODB (Open Document dataBase), który utworzyliśmy, jest wykorzystywany przez LibreOffice do przechowywania informacji o połączeniu z bazą danych. Plik ten nie zawiera żadnych informacji z samej bazy danych. Gdybyśmy kiedyś usunęli ten plik, nasze dane nadal będą bezpieczne w skoroszycie arkusza kalkulacyjnego. Gdybyśmy jednak kiedyś usunęli plik arkusza kalkulacyjnego, ale pozostawili plik ODB, wtedy będziemy posiadali połączenie z bazą, która już nie istnieje.
LibreOffice w swoim pliku konfiguracyjnym zapisuje informację, gdzie znajduje się plik ODB. Jeżeli więc zmienimy jego nazwę lub przeniesiemy go do innego katalogu, LibreOffice straci do niego dostęp. Konieczne będzie zmodyfikowanie ustawień rejestracji bazy danych.
4. Wstawianie pól w dokumencie
Po zarejestrowaniu bazy możemy przystąpić do wypełnienia naszego dokumentu polami — w ich miejsce program wstawi informacje z bazy danych.
Wracamy więc do okna zawierającego dokument tekstowy i z menu wybieramy Wstaw → Pola → Inne.... W nowym oknie przechodzimy na kartę Baza danych i po lewej stronie wybieramy Pole listu seryjnego. Następnie po prawej rozwijamy drzewko zawierające nazwę wcześniej zarejestrowanej bazy danych i po wybraniu odpowiedniego pola, klikamy Wstaw. Operację powtarzamy dla pozostałych pól w dokumencie.
W naszym przykładowym zaświadczeniu znajdują się wyrazy, które powinny przyjąć odmienną formę w zależności od tego, czy zaświadczenie jest wystawiane dla kobiety, czy też dla mężczyzny. Do tej pory w treści znajdowały się ukośniki, które oddzielały różne formy gramatyczne. Innym rozwiązaniem byłoby umieszczenie dodatkowych kolumn w bazie danych, które wypełnilibyśmy w odpowiedni sposób dla kobiet i dla mężczyzn, a następnie wstawili do dokumentu. W takim przypadku łatwo jednak o pomyłkę, a dodawanie nowych kolumn w już istniejącej bazie byłoby dość nużące. Zamiast tego użyjemy instrukcji warunkowych.
Najpierw przyjrzyjmy się konstrukcji „Pan/i”. Jak widać, forma żeńska od formy męskiej różni się tylko jedną literą. Możemy więc skorzystać z ukrywania tekstu.
W pierwszej kolejności zamienimy „Pan/i” na „Pan”. Upewniwszy się, że kursor jest umieszczony bezpośrednio za „n”, ponownie otwieramy okno wstawiania pól. Tym razem przechodzimy na kartę Funkcje. Po lewej zaznaczamy Ukryty tekst, po prawej w miejscu Warunek wpisujemy Płeć EQ "m", zaś w miejscu Wstaw tekst — i. Zatwierdzamy za pomocą Wstaw.
W tym przykładzie Płeć to oczywiście tytuł kolumny w bazie danych, zaś m to symbol oznaczający mężczyzn. Warunek należy dostosować do swojej bazy danych.
Logika stojąca za tą operacją może wydawać się dość pokrętna. Najlepiej jest sobie wyobrazić, że tekst jest domyślnie wprowadzany do dokumentu. Jeżeli jednak spełniony zostanie warunek, to tekst zostanie usunięty.
Druga konstrukcja („aktywnym członkiem/aktywną członkinią”) jest trochę bardziej skomplikowana. Możemy co prawda wykorzystać ukrywanie tekstu, ale będzie to wymagało wstawienia dwóch różnych pól. Zamiast tego lepiej wykorzystać tekst warunkowy.
Usuwamy więc wspomniane wyrazy z dokumentu i otwieramy okno wstawiania pól. Na karcie Funkcje zaznaczamy po lewej Tekst warunkowy. W miejscu Warunek wpisujemy Płeć EQ "m", w miejscu Wtedy — aktywnym członkiem, zaś w miejscu W przeciwnym przypadku — aktywną członkinią. Tak zdefiniowane pole wstawiamy do dokumentu.
5. Sprawdzenie poprawności dokumentu
Już niemal skończyliśmy. Nasz dokument powinien być automatycznie tworzony na podstawie informacji z bazy danych. Jednak przed wydrukowaniem zaświadczeń warto jeszcze sprawdzić, czy na pewno jest on poprawny dla różnych zestawów danych.
W tym celu z menu wybieramy Widok → Źródła danych. W górnej części okna Writera pojawi się nowy zestaw narzędzi. Z drzewka po lewej wybieramy naszą bazę danych. Następnie po prawej klikamy na zieloną strzałkę, aby zaznaczyć cały wiersz danych. Klikając ikonę Dane na Pola (zaznaczoną na poniższej grafice) spowodujemy, że Writer wyświetli nasz dokument dla zaznaczonego zestawu danych. Operację powtarzamy dla pozostałych wierszy.
6. Zapisywanie dokumentu wynikowego
Kiedy mamy pewność, że nasz dokument jest poprawny, możemy go wydrukować. Otwieramy okno korespondencji seryjnej wybierając z menu Narzędzia → Kreator korespondencji seryjnej.
Pojawi się nowe okno, które przeprowadzi nas przez cały proces przygotowywania dokumentów w seriach. Większość z kroków możemy pominąć, ponieważ już je wykonaliśmy. Dla przykładu, w kroku trzecim możemy stworzyć bazę danych, zaś w kroku szóstym zobaczyć, jak będzie się prezentował dokument dla różnych zestawów danych z bazy.
Od razu przechodzimy więc do ostatniego kroku ósmego. Mamy tam cztery możliwości do wyboru.
Pierwsza z nich, Zapisz dokument wyjściowy, pozwala zapisać przygotowany plik tekstowy. Będzie on zawierał pola (ale nie ich treść!) i może posłużyć jako podstawa stworzenia podobnego zaświadczenia w przyszłości.
Druga z nich, Zapisz dokumenty wynikowe, pozwala zapisać pliki tekstowe wygenerowane na podstawie informacji z bazy danych. Możemy bądź zapisać wszystkie zaświadczenia w jednym pliku, bądź każde zaświadczenie w osobnym pliku. Z opcji tej powinniśmy skorzystać, jeżeli zaświadczenia przygotowujemy na komputerze który nie ma dostępu do drukarki.
Pozostałe dwie możliwości, Drukuj dokumenty wynikowe oraz Wyślij dokumenty wynikowe jako e-mail, raczej nie wymagają komentarza.
Doskonały pomysł. Świetne wykonanie. Gratuluję. LeM
LeM: dziękuję za miłe słowa 🙂 . Mam nadzieję, że pozostałe artykuły na blogu uważasz za równie udane.
Pomysł z blogiem – świetny.
Czekam na inne artykuły. A może o wstawianiu tabel – z tym mam najwięcej problemów, w Wordzie jest to mniej toporne; wstawianiu grafiki – reakcja tekstu na wstawiony obiekt, po zapisaniu i ponownym otwarciu czasami coś się zaczyna „pierniczyć”; o kolumnach – po zapisaniu, zamknięciu i otwarciu dokumentu tekst z drugiej kolumny znajduje się na następnej stronie a powinien być w drugiej kolumnie.
Pozdrawiam
kp
Dziękuję za komentarz.
Jeżeli chodzi o propozycje artykułów:
1. Tabele — da się zrobić. Akurat artykuł na jutro mam już napisany, więc będzie w sobotę.
2. Układ tekstu zależy od zakotwiczenia oraz opływania obiektu (chodzi nie tylko o grafiki, ale również ramki). Właściwie mogę o tym napisać kilka słów, przy czym nie mogę podać jakiejś konkretnej daty.
Jeżeli zaś chodzi o problemy z układem tekstu po ponownym otwarciu dokumentu — przyznaję, że mi również zdarza się to obserwować. Nigdy nie zastanawiałem się, dlaczego konkretnie tak się dzieje, ale niewątpliwie jest to błąd w programie. Niestety, ale nie jest to temat, któremu można poświęcić artykuł (bo i co miałoby się tam znaleźć?)
3. Tak jak wyżej.
Jeżeli chodzi o punkty drugi i trzeci, to najlepiej by było zgłosić błąd programistom LibreOffice. Jeżeli masz problemy z językiem angielskim, napisz proszę do mnie maila (adres na stronie Kontakt). Jeżeli możesz, to załącz również pliki, które po ponownym otwarciu wyglądają inaczej niż przy zapisie. Pliki te będą później (po zgłoszeniu błędu) dostępne publicznie w Internecie, więc usuń z nich wszelkie poufne dane.
Dzięki z poradnik odnośnie korespondencji seryjnej i wstawiania pól, bardzo mi się przydało w dniu dzisiejszym 😉
Mam jeszcze tylko pytanie czy dało by się zrobić w korespondencji seryjnej żeby generowane dokumenty miały nadawany kolejny numer oraz miały wstawioną bieżącą datę?
Pozdrawiam
Przemas
Jeżeli chodzi o daty: Wstaw → Pola → Inne…, w karcie Dokument jest Data. „Data (stała)” to dzisiejsza data w odpowiednim formacie. „Data” to data zmieniająca się wraz z upływem dni.
Co do kolejnych numerów: chyba najprościej będzie w bazie danych dodać kolumnę zawierającą unikatowy identyfikator (kolejne liczby). Jeżeli Twój plik korespondencji ma tylko jedną stronę, to numer strony jest jednocześnie takim unikatowym identyfikatorem.
Chyba że masz na myśli umieszczanie numerów w nazwie pliku, a nie treści dokumentu. Co prawda nie sprawdzałem, ale wydaje mi się, że to powinno się robić automatycznie.
Dzięki za podpowiedzi, chodziło mi o numer umieszczany w treści np – oświadczenie Nr 1, 2 itd.
Co do numeracji kolejnych dokumentów – oczywiście LO ładnie sobie tworzy nowe pliki w korespondencji seryjnej nadając im numerki 🙂
Cześć, możesz napisać jak tworzy się w Libre Office Writer listy (papierowe maile)? Chciałbym stworzyć sobie szablon, w którym zmieniałbym tylko adresatów, tak jak to da się zrobić w klasycznym Wordzie. Pomożesz ?
Jeżeli nie interesuje Cię wykorzystanie korespondencji seryjnej (którą, jak rozumiem, znasz, skoro piszesz pod artykułem jej dotyczącym), to może specjalne pola?
Reszta to kwestia odpowiedniego sformatowania listu (marginesy, odstępy, wyrównanie itp.), czyli coś, czym — ogólnie — na blogu się nie zajmuję.
Czy to możliwe że brakuje mi jakiegoś rozszerzenia… gdyż nie mam „bazy danych” w menu….
Akurat dzisiaj gdzieś mi mignęło, że Źródła danych nie są dostępne jeżeli nie jest zainstalowany Base. Sam nie sprawdzałem, czy to prawda, gdyż używam standardowej instalacji LO. Czy instalowałeś LibreOffice w trybie eksperta?
Bardzo dziękuję za świetny artykuł, bardzo dawno żaden poradnik tak mi się nie przydał, jak ten. Bardzo bym chciał się dowiedzieć jeszcze jednej rzeczy, tutaj nie poruszonej – czy jest możliwość, aby zapisane dokumenty wynikowe miały nazwy wzięte z jedno z pól korespondencji seryjnej? Jeśli tak, to ja to zrobić? Muszę stworzyć bardzo liczne i skomplikowane dokumenty, bardzo by mi więc zależało na jak największej automatyzacji.
Pozdrawiam,
(Na wstępie przepraszam za to, że odpisuję po tak długim czasie. Wakacje zdecydowanie nie sprzyjają regularnemu korzystaniu z komputera.)
Można to zrobić, ale nie jest to intuicyjne.
Przede wszystkim musimy mieć bazę danych oraz plik tekstowy z polami; czyli wykonać wszystkie czynności do punktu piątego z artykułu.
Następnie w oknie Writera wybieramy z menu Plik → Drukuj… (nawet jeśli nie mamy drukarki). Program wykryje, że w dokumencie są pola i zapyta, czy wydrukować listy seryjne. Odpowiadamy „tak”. Pojawi się nowe okno, w którym po prawej stronie zaznaczamy Wyjście: „Plik”. Niżej zaznaczamy „Zapisz jako indywidualny dokument” i „Generuj nazwę pliku z Bazy danych”. Z listy wybieramy kolumnę. Poza tym określamy ścieżkę zapisu oraz format wyjściowy (najlepiej OpenDocument lub PDF). Potwierdzamy.
W LO 4.0.4 po polu z bazy danych i tak znajduje się liczba porządkowa. Osobiście uznałbym to za błąd, ale może to być celowe działanie; należałoby to skonsultować z programistami. W razie czego można skorzystać z jednego z wielu programów służących do masowej zamiany nazw plików w folderze.
Co prawda już zdążyłem to wymyślić ( z pomocą wiki), niemniej bardzo dziękuję za odpowiedź. Myślę, że ma Pan rację, to „0” w przypadku nazw, które się nie powtarzają, nie jest potrzebne i szkoda, że nie da się tego wyłączyć. Powinno się pojawiać automatycznie wtedy, gdy dwie nazwy są identyczne.
To faktycznie doby pomysł, by skorzystać z programów służących do masowej zamiany nazw plików.
Pozdrawiam,
Czy jest możliwość „zmuszenia” programu, by np. w zaproszeniach, dyplomach, itp, wpisywał imiona i nazwiska w przypadku zależnym Jan – Jana, Karol -Karola, Paweł – Pawła (nie Paweła). W bazie zwykle podaje się je w mianowniku, ale czasem zachodzi konieczność użycia danych w innym przypadku. Czy jest jakaś możliwość zautomatyzowania tego?
z pozdrowieniami
Witam
Mam pytanie, a czy da się utworzyć kole wielowierszowe? Coś jak na jak by pod wcisnąć:
Nazwa adresata
ulica i numer
kod pocztowy i miasto
A nie rozbijać to na pojedynce wiersze lub pola np kod pocztowy.
OK, działa Ctrl+Enter
A po co robić bazę danych (pkt. 3)? Przecież w pkt. 4 spokojnie można podpiąć arkusz.
Jest Pan świetny, gdyby nie Pan to pewnie miałabym same problemy na informatyce w szkole. W imieniu wszystkich zielonych w informatyce – DZIĘ-KU-JE-MY
Dzięki za prezentację. Nareszcie po kilku latach udało mi się stworzyć dokumenty z korespondencją seryjną w Libre Office-OO
Czy istnieje sposób na wstawianie obrazka do korespondencji seryjnej?
Np. w danym wierszu w bazie (źródle danych) mam nazwę pliku jpg w określonym katalogu i chciałbym wygenerować dokument ilustrowany.
Ewentualnie jak przywołać obrazek w Calcu przy pomocy formuły?
Wiesz może czy istnieje jakiś sposób, aby dowolnie sformatować części akapitu w całości w całości zaimportowane z bazy?
Dzięki za pomoc 🙂
Świetny poradnik! Zaoszczędził mi ręcznego wypełniania formularzy na klub wakacyjny dla ponad 130 dzieciaków! Naiwnie wierzyłam, że baza danych utworzona w Microsoft Publisher 2010 będzie w jakiś magiczny sposób współpracować z moim LibreOffice….
Bardzo ciekawy artykuł w szczególności, że można odpowiednio katalogując korespondencje przy okazji tworzymy całkiem ciekawą bazę danych.
Witam. Mam spory problem z OO i opcją tekst ukryty lub tekst warunkowy. Mam bazę danych osób upoważnionych do pewnych zbiorów danych osobowych. Każda osoba ma upoważnienie do jakiegoś zbioru w różnym zakresie – zbieranie, utrwalanie, przechowywanie, opracowywanie, zmienianie, usuwanie, udostępnianie. Odpowiednie uprawnienia w OO Base nadaje za pomocą formularza i opcją TAK/NIE – czyli pole „Boolean”. Na postawie całej bazy danych i odpowiedniej kwerendy robię sobie w Writer pismo „Upoważnienie…”
O ile z Pan Pani udało się zrobić bez problemu „tekst ukryty” to już z wykorzystaniem pół TAK/NIE mi to nie wychodzi. W tabeli „Pracownicy” płeć mam odpowiednio m i k – tutaj writer bez problemu rozpoznaje warunki. Ale jak mam już TAK/NIE jako warunek to mi w ogóle nie działa…. albo raz działa a raz nie.
Jeśli przeciągnę do writera całą kolumnę np „Zbieranie” to wstawia wszytko poprawnie – czyli „PRAWDA” lub „FAŁSZ”.
Dzięki za dobrze przygotowany poradnik!
Fajne ale mam inny problem.
Muszę wydrukować sporą liczbę mandatów na walne zebranie.
Zmienne są tylko dwie – numer mandatu oraz imię/nazwisko pobierane z jednego pola.
Chciałbym zrobić wydruk 4 mandatów na jednej kartce.
Jak to osiągnąć?
uzupełniłbym tylko wpisem o legalności wykorzystania baz danych. jednak warto o tym pamiętać, np. wpis o podobnej tematyce: http://www.eporady24.pl/gromadzenie_i_przetwarzanie_danych_osobowych,pytania,17,219,7332.html ale ogólnie przedstawienie mechanizmu korespondecnji seryjnej na 5+, gratuluję 🙂
Czy jest możliwość w korespondencji seryjnej w LO, oprócz danych tekstowych, uzyskania zmieniającej się grafiki? Nie mam tu na myśli wstawienia warunkowego ukrywania sekcji, bo żeby coś takiego stworzyć trzeba trochę poklikać. Chciałbym w jakiś sposób wykorzystać bazę danych. W MS Word jest możliwość wstawienia do bazy danych linku, na podstawie którego korespondencja seryjna wstawia określoną linkiem grafikę. Czy podobny efekt można uzyskać w LO? Może ktoś wie jak można to wykonać ewentualnie posiada i mógłby udostępnić odpowiednie makro pozwalające uzyskać takowy efekt.
Z góry dziękuję za pomoc.