Příručka aplikace Base 7.3
Kapitola 7
Propojení s databázemi
Tento dokument je chráněn autorskými právy © 2022 týmem pro dokumentaci LibreOffice. Přispěvatelé jsou uvedeni níže. Dokument lze šířit nebo upravovat za podmínek licence GNU General Public License (https://www.gnu.org/licenses/gpl.html), verze 3 nebo novější, nebo the Creative Commons Attribution License (https://creativecommons.org/licenses/by/4.0/), verze 4.0 nebo novější.
Všechny ochranné známky uvedené v této příručce patří jejich vlastníkům.
Vasudev Narayanan |
Steve Fanning |
|
Robert Großkopf |
Pulkit Krishna |
Jost Lange |
Dan Lewis |
Hazel Russman |
Jochen Schiffers |
Jean Hollis Weber |
|
|
Jakékoli připomínky nebo návrhy k tomuto dokumentu prosím směřujte do fóra dokumentačního týmu na adrese https://community.documentfoundation.org/c/documentation/loguides/ (registrace je nutná) nebo pošlete e-mail na adresu: loguides@community.documentfoundation.org.
Poznámka
Vše, co napíšete do fóra, včetně vaší e-mailové adresy a dalších osobních údajů, které jsou ve zprávě napsány, je veřejně archivováno a nemůže být smazáno. E-maily zaslané do fóra jsou moderovány.
Vydáno Srpen 2022. Založeno na LibreOffice 7.3 Community.
Jiné verze LibreOffice se mohou lišit vzhledem a funkčností.
Některé klávesové zkratky a položky nabídek jsou v systému macOS jiné než v systémech Windows a Linux. V následující tabulce jsou uvedeny nejdůležitější rozdíly, které se týkají informací v této knize. Podrobnější seznam se nachází v nápovědě aplikace.
Windows nebo Linux |
Ekvivalent pro macOS |
Akce |
Výběr v nabídce Nástroje > Možnosti |
LibreOffice > Předvolby |
Otevřou se možnosti nastavení. |
Klepnutí pravým tlačítkem |
Control + klepnutí a/nebo klepnutí pravým tlačítkem myši v závislosti na nastavení počítače |
Otevře se místní nabídka. |
Ctrl (Control) |
⌘ (Command) |
Používá se také s dalšími klávesami. |
Alt |
⌥ (Option) |
Používá se také s dalšími klávesami. |
Ctrl+Q |
⌘ + Q |
Ukončí LibreOffice |
Pomocí aplikace Base můžeme dokumenty v aplikacích LibreOffice Writer a Calc používat různými způsoby jako zdroje dat. To znamená, že použití aplikace Base není nutně vázáno na registraci databází v konfiguraci LibreOffice. Externí formuláře mohou také přímo komunikovat s aplikací Base, pokud je zadána cesta ke zdrojům dat.
Mnoho funkcí, jako je tisk štítků nebo použití dat pro dopisy s poli, vyžaduje registraci databáze v konfiguraci LibreOffice.
Pomocí Nástroje > Možnosti > LibreOffice Base > Databáze > Nový můžeme zaregistrovat databázi pro následné použití jinými komponentami LibreOffice.
Obrázek 1: Registrace databáze pro použití jinými komponentami LibreOffice
Vyhledáme databázi pomocí prohlížeče souborů a připojíme ji k LibreOffice podobným způsobem jako v případě jednoduchého formuláře. Samotné databázi dáme vhodný informativní registrovaný název, například název souboru databáze. Název slouží jako alias, který lze použít i v dotazech do databáze.
Prohlížeč zdrojů dat v aplikaci Writer a Calc umožňuje přístup k tabulkám a dotazům všech registrovaných databází pod jejich registrovanými názvy. Prohlížeč otevřeme pomocí Zobrazit > Zdroje dat nebo stisknutím kláves Ctrl+Shift+F4 , případně klepnutím na ikonu na Standardní nástrojové liště.
Ikona Zdroje dat není na Standardní nástrojové liště obvykle viditelná. Chceme-li ji zviditelnit, klepneme pravým tlačítkem myši na tlačítko Uložit a otevřeme tuto nástrojovou lištu. Přejdeme dolů na Viditelná tlačítka. Tím se otevře seznam všech tlačítek. Přejdeme dolů až téměř k dolní části a najdeme tlačítko Zdroje dat. Klepnutím na něj jej zviditelníme na pravém konci nástrojové lišty.
Tip
Pokud používáme notebook, bude možná nutné stisknout klávesy Ctrl + fn + shift + F4. Klávesa fn (funkce) umožňuje používat klávesy F pro více než jednu funkci.
Obrázek 2: Tlačítko Zdroje dat na Standardní nástrojové liště
Registrované zdroje dat se zobrazují na levé straně prohlížeče zdrojů dat, který je ve výchozím nastavení umístěn v horní části pracovní plochy. Zdroj dat použité literatury je ve výchozím nastavení součástí LibreOffice. Ostatní zdroje dat jsou uvedeny pod svými registrovanými názvy.
Obrázek 3: Registrované zdroje dat zobrazené ve stromu názvů na levé straně prohlížeče zdrojů dat
Klepnutím na rozbalovací znaménko před názvem databáze otevřeme databázi a zobrazíme podsložky pro dotazy a tabulky. Ostatní podsložky databáze zde nejsou k dispozici. Interní formuláře a sestavy jsou přístupné pouze otevřením samotné databáze.
Teprve po klepnutí na složku Tabulky je databáze skutečně zpřístupněna. U databází chráněných heslem je třeba v tomto okamžiku zadat heslo.
Vpravo od stromu názvů se zobrazí vybraná tabulka. Lze ji upravovat stejně jako v aplikaci Base. Přímý vstup do tabulek je však třeba ve velmi složitých relačních databázích provádět opatrně, protože tabulky jsou propojeny cizími klíči. Například níže uvedená databáze má samostatné tabulky pro názvy ulic, poštovních směrovacích čísel a obcí.
Obrázek 4: Výběrem tabulky ve stromu názvů zobrazíme údaje o složkách na pravé straně prohlížeče zdrojů dat.
Pro správné zobrazení dat (ale bez možnosti úprav) jsou vhodnější dotazy nebo pohledy.
Mnohé ikony na nástrojové liště (obrázek 5) budou známé ze zadávání dat do tabulek. (Ikony na vašem displeji se mohou lišit od ikon na obrázku.)
Hlavní nové ikony jsou uvedeny v poslední části: Data na text, Data na pole, Hromadná korespondence, Zdroj dat aktuálního dokumentu, Průzkumník zapnout/vypnout. Jejich použití je popsáno níže s využitím tabulky Reader v databázi Media.
Obrázek 5: Výchozí přiřazení tlačítek na nástrojové liště Data tabulky prohlížeče zdrojů dat
Tip
Pomocí této metody lze data vkládat přímo na konkrétní místa v textovém dokumentu nebo do konkrétních buněk tabulky. I když lze data do těchto míst zadat, jejich vložení zaručuje jejich přesnost. To je důležité při použití sloučení pošty, o kterém bude řeč později.
Při odesílání stejného dokumentu různým osobám je zaručeno, že všichni obdrží naprosto stejné údaje.
Výběrem jednoho nebo více záznamů aktivujeme funkce Data na text a Data na pole.
1 |
Data na text |
2 |
Data na pole |
3 |
Hromadná korespondence |
Obrázek 6: Výběrem datového záznamu aktivujeme ikonu Data do textu na nástrojové liště Data tabulky.
Pokud nyní zvolíme Data do textu, zobrazí se Průvodce provedením potřebného formátování (obrázek 7).
Tři možnosti zadávání dat jako textu jsou: jako tabulka, jako jednotlivá pole, nebo jako běžný text.
Na obrázku 7 je zobrazena možnost Vložit data jako tabulku. V případě číselných polí a polí s daty lze formát databáze změnit na zvolený formát. V opačném případě se formátování provede automaticky při výběru polí tabulky. Pořadí polí se nastavuje pomocí šipek.
Obrázek 7: Dialogové okno Vložit sloupce databáze s vybraným přepínačem Tabulka
Jakmile jsou vybrány sloupce tabulky, aktivuje se tlačítko Vlastnosti pro danou tabulku. To umožňuje nastavit obvyklé vlastnosti tabulky aplikace Writer (šířka tabulky, šířka sloupců atd.).
Zaškrtávací políčko Vložit záhlaví tabulky určuje, zda je vyžadováno záhlaví tabulky. Pokud není zaškrtnuto, nebude pro nadpisy vyhrazen žádný samostatný řádek.
Řádek vybraný pro záhlaví tabulky lze převzít z názvů sloupců nebo lze záznam vypsat s ponecháním místa pro pozdější úpravu záhlaví. Vybereme možnost Vytvořit jen řádek.
Pomocí tlačítka Automatický formát můžeme otevřít dialogové okno s několika předformátovanými styly tabulek. Kromě navrhovaného výchozího stylu lze všechny formáty přejmenovat. (Můžeme také přidat autoformáty; za tímto účelem nejprve vytvoříme tabulku v požadovaném formátu. Poté vybereme tabulku a klepnutím na tlačítko Přidat přidáme její formát do seznamu.) Tabulku můžeme také formátovat ve Writeru tak, že ji vybereme a zvolíme formát ze seznamu Styly tabulky na kartě Styly v postranní liště; seznam stylů tabulky je stejný jako seznam formátů v dialogovém okně Automatický formát.
Chceme-li vytvořit tabulku s vybranými záznamy a sloupci, klepneme na tlačítko OK v dialogovém okně Vložit databázové sloupce.
Obrázek 8: Dialogové okno Automatický formát
Vkládání dat jako polí umožňuje pomocí minieditoru umístit v textu postupně různá pole tabulky. Takto vytvořený text lze také opatřit stylem odstavce. I v tomto případě lze formátování dat a čísel zadat samostatně nebo je lze načíst přímo z nastavení tabulky v databázi.
Obrázek 9: Dialogové okno Vložit sloupce databáze se zaškrtnutým přepínačem Pole
Takto vložená pole do textu lze následně jednotlivě vymazat nebo použít pro hromadnou korespondenci.
Pokud zvolíme možnost Vložit data jako text, jediný rozdíl oproti použití polí je ten, že pole zůstávají propojena s databází. Při vkládání jako text se přenese pouze obsah zadaných polí, nikoli odkaz na skutečnou databázi.
Výsledky obou postupů jsou porovnány níže.
Obrázek 10: Porovnání možností Data jako pole a Data jako text
Pole mají šedá pozadí. Pokud na pole najedeme kurzorem myši, zobrazí se nápověda, že pole jsou propojena s databází Media, s tabulkou Reader a v rámci této tabulky s polem ID.
Tak například dvojité klepnutí na pole ID otevře následující přehled. Tím je zřejmé, které pole bylo vytvořeno pomocí procedury Vložit data jako pole. Jedná se o stejný typ pole, který je zobrazen pomocí Vložit > Pole > Další pole > Databáze.
Jednodušší je vytvořit takové pole výběrem záhlaví sloupce tabulky v prohlížeči zdrojů dat a jeho přetažením do dokumentu pomocí myši. Tímto způsobem můžeme vytvořit přímo formulářový dopis.
Obrázek 11: Dvojitým klepnutím na vložené pole se otevře dialogové okno Upravit pole
Tip
Tato metoda je užitečná, když se dokument posílá několika osobám, z nichž každé se pošlou některé údaje, které jsou specifické pouze pro ni. To se provádí pomocí hromadné korespondence.
Knihovny například rozesílají lidem oznámení se seznamem médií, která si vypůjčili a nevrátili včas. Seznam se obvykle u každé osoby liší, ale všichni dostanou nějaké varování. Typ varování samozřejmě závisí na době, která uplynula od doby, kdy mělo být médium vráceno. Všichni, kteří spadají do určitého časového období, obdrží stejné upozornění.
Vložení dat do polí (viz obrázek 7):
Klepnutím na levý okraj jednoho z testovacích řádků jej zvýrazníme.
Klepnutím na tlačítko Data na textu otevřeme průvodce Vložit databázové sloupce.
Zvolíme přepínač, Pole.
Přesuneme pole databáze, která chceme použít, z levého seznamu do pravého v požadovaném pořadí. Text lze přidat stejně jako na obrázku 9.
Chceme-li na tato pole použít konkrétní styl odstavce, vybereme jej z rozevíracího seznamu Styly odstavce.
Klepneme na OK.
Tip
Vkládání dat do textu se provádí stejným způsobem jako vkládání dat do polí. Jediný rozdíl je v tom, zda vybereme volbu Text, nebo Pole. Rozdíl je ve vzhledu v dokumentu nebo tabulce, jak je uvedeno níže. Vlevo jsou to data na text, vpravo data na pole.
Obrázek 12: Levá strana vložena jako text; pravá strana vložena jako pole
Tip
Po vložení pole lze hodnoty, které se v něm zobrazují, měnit. Vybereme záznam (řádek) s ID = 1 a klepneme na tlačítko Data na pole.
Obrázek 13: Data vložená jako pole se mohou měnit
Tlačítko Hromadná korespondence spustí Průvodce hromadnou korespondencí. Formulářový dopis sestavuje svá data z různých tabulek, takže je třeba nejprve spustit databázi. V databázi pak vytvoříme nový dotaz, který zpřístupní požadovaná data.
Obrázek 14: Ikona Hromadná korespondence na nástrojové liště Tabulka dat
Chceme-li spustit databázi, klepneme pravým tlačítkem myši na samotnou databázi nebo na některou z jejích tabulek či dotazů; tím se okamžitě obnoví zobrazení v prohlížeči zdrojů dat. Poté lze vyvolat Průvodce hromadnou korespondencí klepnutím na příslušné tlačítko.
Klepnutím na tlačítko Zdroj dat aktuálního dokumentu otevřeme přímé zobrazení tabulky, která tvoří základ pro data vložená do dokumentu. Ve výše uvedeném příkladu se zobrazí tabulka Reader z databáze Media.
Přepnutím tlačítka Průzkumník zapnout/vypnout se zobrazí nebo skryje strom adresářů v levé části zobrazení tabulky. To v případě potřeby umožňuje větší prostor pro zobrazení dat. Chceme-li přistupovat k jiné tabulce, musíme Průzkumník znovu zapnout.
Průvodce hromadnou korespondencí je přístupný také z prohlížeče databáze. Tento průvodce umožňuje v malých krocích vytvořit pole adresy a pozdravu ze zdroje dat. V zásadě můžeme tato pole vytvořit bez použití Průvodce. Zde si na příkladu projdeme jednotlivé kroky Průvodce. V následujících krocích k tomu použijeme Průvodce. Tentokrát bude zdrojem dat dotaz, konkrétně Readeradresses společnosti Media. Vyhledáme ji v rozevíracím seznamu Dotaz stejně jako dříve tabulku Reader v rozevíracím seznamu Tabulka.
Tip
Odebrání libovolného textového dokumentu v aplikaci Writer, pokud obsahuje odkazy na databázi. Nelze vytvořit nový odkaz na tento dokument, pokud je starý odkaz stále aktivní. Začneme novým dokumentem, který může být bez názvu, nebo šablonou dopisu, která neobsahuje žádné odkazy.
Obrázek 15: Průvodce hromadnou korespondencí – krok 1
Výchozí dokument pro formulářový dopis je dokument, ke kterému budou připojena pole databáze.
Sloučený dokument je dokument obsahující údaje pro různé osoby, kterým mají být zaslány formulářové dopisy. Ve sloučeném dokumentu není žádná vazba na zdroj dat. Je podobný výstupu funkce Vložit data jako text.
Obrázek 16: Průvodce hromadnou korespondencí – krok 2
Průvodce hromadnou korespondencí může vytvářet dopisy nebo e-maily pomocí záznamů z databáze. V tomto příkladu vytvoříme dopisy pomocí tabulky Reader databáze Media.
Obrázek 17: Průvodce hromadnou korespondencí – krok 3
Zadání bloku adres umožňuje nejrozsáhlejší konfiguraci. Navrhovaný seznam adres pochází z aktuálně vybraného dotazu nebo tabulky v aktuálně vybrané databázi.
Krok 3 určuje celkový vzhled bloku adres, který lze dále přizpůsobit klepnutím na tlačítko Další. Viz obrázek 17. Levá Adresa je již vybrána a tento blok bude použit.
Obrázek 18: Změna obsahu bloku adres pomocí dialogového okna Upravit blok adres
Je třeba doplnit jeden prvek: <Address Line 2>. Provedeme to následovně:
Klepneme na tlačítko Další.
Přetáhneme prvek <Address Line 2> v seznamu Address elements a umístíme jej napravo od prvku <Address Line 1>.
Pokud mezi těmito dvěma prvky není mezera, klepneme na šipku vpravo na pravé straně dialogového okna a vytvoříme mezeru.
Klepneme na OK.
Vybrat blok s adresou: klepneme na OK.
Prvek <Title> je třeba přesunout o řádek níže a umístit jej před prvky <First Name> <Last Name>. Nezapomeneme mezi <Title> a <First Name> udělat mezeru. Pomocí čtyř šipek vpravo přesuneme nejprve <Last Name> a poté <First Name>.
Krok 3 slouží k propojení pojmenovaných polí v bloku adres se správnými poli v databázi. Průvodce zpočátku rozpozná pouze ta databázová pole, která mají přesně stejné názvy jako ta, která Průvodce používá. V tomto příkladu se žádné z polí neshoduje, takže v tomto kroku bude nutné vybrat všechna pole z rozevíracích seznamů.
Pro položku <Title> vybereme možnost Salutation.
Pro položku <FirstName> vybereme First Name.
Pro položku <LastName> vybereme Last Name.
Pro položku <Address Line 1> vybereme Street.
Pro položku <Address Line 2> vybereme možnost No.
Pro položku <City> vybereme Town.
Pro položku <Zip> vybereme Postal code.
Obrázek 19: Přiřazení polí zdroje dat k prvkům adresy pomocí dialogového okna Přiřadit pole
Zde jsou prvky adresy přiřazeny k odpovídajícím prvkům z dotazu databáze úspěšně přeneseného pomocí Průvodce hromadnou korespondencí. Pro náhled se opět použije první záznam v dotazu.
Nastavení databáze v podstatě končí krokem 4. Zde je třeba pouze vybrat, z jakého pole se má pohlaví příjemce převzít. Toto pole již bylo pojmenováno, takže je třeba zadat pouze obsah pole pro příjemce ženského pohlaví.
Poznámka
Protože průvodce má v tomto bodě chybu, osobní pozdrav se vytvoří pomocí převodu dat na text, jak je popsáno výše. Konkrétně pole Salutation poskytne správný titul pro každou osobu. Zbytek pozdravu se vytvoří zadáním do sloučeného dokumentu.
Chceme-li tuto stránku dokončit, zrušíme zaškrtnutí políčka Vložit personalizované oslovení.
V Obecné oslovení neprovádíme žádné změny. Bude nahrazen později, ale je nutný k určení místa, kde má být v dopise pozdrav.
Obrázek 20: Vytvoření pozdravu v kroku 4 Průvodce hromadnou korespondencí
Klepneme na Další >. V kroku 5 můžeme upravit umístění bloku adresy a pozdravu na stránce. (Viz obrázek 21.) Poté klepneme na Dokončit.
Obrázek 21: Průvodce hromadnou korespondencí – krok 5
Nyní dokončíme rozvržení dokumentu hromadné korespondence. Obsahuje pole Address Block, kde jsme je umístili.
Obrázek 22: Dokument Writer po dokončení interakce s Průvodcem hromadnou korespondencí
Nyní pomocí funkce Data na text nahradíme pozdrav.
Nahradíme To whom it may concern za Dear.
Přetáhneme <Salutation> na jedno místo za Dear.
Přetáhneme <FirstName> na jedno místo za <Salutation>.
Přetáhneme položku <LastName> na jedno místo za položku <FirstName>.
Obrázek 23: Aktualizovaný pozdrav
Vybereme horní záznam v okně Zdroj dat na jeho začátku. Poté klepneme na tlačítko Data na text a zobrazíme data zadaná do polí.
Obrázek 24: Data z prvního záznamu zdroje dat zobrazeného v dokumentu Writeru
Nyní máme dokument Writeru, do kterého můžeme psát obsah dopisu. Chceme-li sloučit pole a vytisknout dopisy, zvolíme nabídku Soubor > Tisk. Zobrazí se následující zpráva. Stiskneme tlačítko Ano.
Obrázek 25: Dialog pro potvrzení tisku dopisů hromadné korespondence
Nyní se zobrazí dialogové okno Hromadná korespondence (obrázek 26), kde můžeme volitelně vybrat záznamy, které chceme zahrnout nebo vyloučit, a zvolit tisk dopisů nebo jejich uložení do souboru. Další podrobnosti nalezneme v kapitole 14, Hromadná korespondence, v příručce Průvodce aplikací Writer.
Obrázek 26: Dialogové okno Hromadná korespondence
Soubor > Nový > Štítky spustí Průvodce štítky. Otevře dialogové okno, které zahrnuje všechny otázky formátování a obsahu štítků, a to ještě předtím, než se vytvoří samotné štítky. Nastavení v tomto dialogovém okně se uloží do osobních nastavení uživatele.
Základní nastavení obsahu se nachází na kartě Popisky (obrázek 27). Pokud u textu štítku zaškrtneme políčko Adresa, budou mít všechny štítky stejný obsah převzatý z nastavení LibreOffice pro uživatele programu.
Jako příklad opět použijeme databázi Addresses. Přestože další výběrové pole má nadpis Tabulky, jsou zde uvedeny jak tabulky, tak dotazy, stejně jako v prohlížeči zdrojů dat.
Pomocí tlačítek se šipkami můžeme do editoru vkládat jednotlivá pole databáze. Název databázového pole Surname je zde nastaven na <Addresses.MailMergeQuery.1.Surname>. Sekvence je tedy <database.Table.1.database field>.
V editoru můžeme pracovat s klávesnicí. Tak například můžeme na začátek vložit zalomení řádku, aby se štítky netiskly přímo na horní okraj, ale aby byl obsah vytištěn zcela a jasně viditelný.
Formát lze vybrat na kartě Štítky. Zde je začleněno velké množství značek štítků, takže většina ostatních nastavení na kartě Formát není nutná.
Obrázek 27: Dialogové okno Štítky, karta Štítky
Pomocí karty Formát (obrázek 28) můžeme přesně nastavit velikost štítku. Nastavení má význam pouze v případě, že není známa značka a typ štítků. Pro tisk štítků o šířce 7,00 cm potřebujeme šířku stránky o něco větší než 3*7,00 cm = 21,00 cm. Teprve pak se na stránce vytisknou tři štítky za sebou.
Obrázek 28: Dialogové okno Štítky, karta Formát
Obrázek 29: Dialogové okno Štítky, karta Možnosti
Na kartě Možnosti můžeme určit, zda se má vytvořit pouze jeden štítek, nebo celá stránka štítků. Stránka se pak vyplní postupně údaji ze záznamů databáze, počínaje prvním záznamem. Pokud je záznamů více, než se vejde na stránku, další stránka se automaticky zaplní další sadou záznamů.
Zaškrtávací políčko Synchronizovat obsahy propojí všechny štítky dohromady, takže následné změny v rozvržení kteréhokoli štítku se použijí na všechny ostatní štítky. Chceme-li přenést upravený obsah, použijeme tlačítko Synchronizovat, které se zobrazí při vytváření štítku, pokud jsme toto políčko zaškrtli.
Tlačítkem Nový dokument vytvoříme dokument obsahující vybraná pole.
Po zahájení procesu tisku se zobrazí potvrzovací dialogové okno znázorněné na obrázku 25 (jako u dopisů hromadné korespondence). Výběrem možnosti Ano vyplníme pole databáze adres odpovídajícím obsahem.
Zdroj dat pro tisk štítků není vyhledáván automaticky, pouze je předem vybrána databáze. Vlastní dotaz musí zadat uživatel, protože v tomto případě se nejedná o tabulku.
Po výběru dotazu a příslušných záznamů (v tomto případě Všechny) lze zahájit tisk. Zejména při prvních testech je vhodné v dialogovém okně Hromadné korespondence zvolit Výstup do souboru (obrázek 26), čímž se štítky uloží jako dokument. Možnost uložení do několika dokumentů není vhodná pro tisk štítků, ale spíše pro dopisy různým příjemcům, se kterými lze následně pracovat.
Místo Průvodce můžeme vytvářet dokumenty hromadné korespondence a štítky přímo.
Pole pro hromadnou korespondenci lze přebírat z prohlížeče databáze pomocí myši.
Obrázek 30: Použití myši k vytvoření hromadné korespondence
Levým tlačítkem myši vybereme záhlaví tabulky. Podržíme tlačítko stisknuté a přetáhneme kurzor v textovém dokumentu. Kurzor změní svůj tvar na symbol vložení. Pole MailMerge je vloženo do textového dokumentu, zde je zobrazeno v úplném popisu, který je viditelný pomocí Zobrazit > Názvy polí.
Pole pro hromadnou korespondenci lze vložit pomocí Vložit > Pole > Další pole > Databáze.
Obrázek 31: Použití dialogového okna Pole, karta Databáze pro vložení polí pro hromadnou korespondenci
Zde jsou k dispozici všechny tabulky a dotazy ve vybrané databázi. Pomocí tlačítka Vložit můžeme vkládat různá pole jedno po druhém přímo do textu na aktuální pozici kurzoru.
Pokud chceme vytvořit pozdrav, který je v dopisech hromadné korespondence obvyklý, můžeme použít skrytý odstavec nebo skrytý text: Vložit > Pole > Další pole > Funkce > Skrytý odstavec. U obou variant dbáme na to, aby nebyla splněna námi formulovaná podmínka, protože chceme, aby byl odstavec viditelný.
Aby se formule Vážená paní <Surname> objevila pouze v případě, že se jedná o ženu, postačí splnit následující podmínku:
[Media.Readeraddresses.Salutation] ! = "Mrs."
Jediný problém, který zbývá, je, že možná neexistuje žádné příjmení. Za těchto okolností by se mělo objevit "Vážený pane/paní", takže tuto podmínku musíme vložit. Celkový výraz vypadá takto:
[Media.Readeraddresses.Salutation] ! "Mrs." OR NOT
[Media.Readeraddresses.Salutation]
To vylučuje možnost, že by se tento odstavec objevil v případě, že se nejedná o ženu nebo není uvedeno příjmení.
Stejným způsobem můžeme vytvořit položky pro mužský rod a chybějící položky pro zbývající dva typy pozdravů.
Pozdrav v poli adresy lze samozřejmě vytvořit úplně stejným způsobem, ať už je pohlaví uvedeno kdekoli.
Další informace jsou uvedeny v nápovědě LibreOffice v části Skrytí textu a Podmíněný text.
Samozřejmě by bylo ještě jednodušší, kdyby někdo, kdo rozumí databázím, vložil celý pozdrav přímo do dotazu. To lze provést pomocí korelovaného poddotazu (viz kapitola 5, Dotazy).
Pro štítky je zajímavý zejména typ pole Další záznam. Pokud je tento typ pole zvolen na konci štítku, bude následující štítek vyplněn daty z následujícího záznamu. Typické štítky pro sekvenční tisk štítků vypadají jako na následujícím obrázku, když pomocí Zobrazení > Názvy polí zviditelníme příslušná označení polí:
Obrázek 32: Typický výběr polí pro sekvenční tisk štítků
U posledního štítku na stránce je třeba zohlednit skutečnost, že po přerušení stránky se automaticky vyvolá další záznam. Zde by se typ pole Další záznam neměl vyskytovat. V opačném případě dojde k vynechání záznamu, protože dojde k dvojímu skoku záznamu.
Tip
Vytváření dopisů pro hromadnou korespondenci je možné také přímo z databázového formuláře. Jediným požadavkem je, aby byla databáze zaregistrována v LibreOffice.
Při tvorbě hromadné korespondence nezapomeňme zvolit Zobrazení > Normální. Tím se zajistí správné umístění prvků na stránce. Pokud je pak formulář vytištěn, zobrazí se obvyklý dotaz pro hromadnou korespondenci.
Tento typ hromadné korespondence má tu výhodu, že k tisku nepotřebujeme žádné jiné soubory než soubor *.odb.
Pokud mají být jednoduché vlastnosti formuláře dostupné v LibreOffice použity v jiných komponentách, jako jsou Writer a Calc, stačí zobrazit nástrojovou lištu Návrh formuláře pomocí Zobrazit > Nástrojové lišty > Návrh formuláře a poté otevřít Navigátor formulářem. Můžeme vytvořit formulář, nebo, jak je popsáno v kapitole 4, Formuláře, vytvořit formulářové pole. Karta Data v dialogovém okně Vlastnosti formuláře vypadá trochu jinak než při vytváření formulářů přímo v databázovém souboru ODB.
Obrázek 33: Horní část dialogu Vlastnosti formuláře, karta Data s externím zdrojem dat
Obrázek 34: Horní část dialogu Vlastnosti formuláře, karta Data s interním zdrojem dat.
Při použití externího formuláře je nutné zvolit zdroj dat samostatně. Tlačítkem vpravo od pole se seznamem zdrojů dat otevřeme prohlížeč souborů. Lze vybrat libovolný soubor ODB. Pole pro zdroj dat navíc obsahuje odkaz začínající file:///.
Pokud se místo toho podíváme do obsahu seznamu, uvidíme databáze, které jsou již v LibreOffice zaregistrovány pod svými registrovanými názvy.
Formuláře se vytvářejí úplně stejným způsobem jako v samotné aplikaci Base.
Takto vytvořené formuláře se ve výchozím nastavení zobrazují při každém otevření souboru v režimu úprav, nikoliv chráněné proti zápisu jako v aplikaci Base. Abychom zabránili náhodné úpravě formuláře, můžeme soubor otevřít pouze pro čtení pomocí Soubor > Vlastnosti > Zabezpečení. Soubor můžeme dokonce chránit před změnou pomocí hesla. V kancelářských systémech je také možné prohlásit celý soubor za chráněný proti zápisu. To stále umožňuje vstup do polí formuláře, ale ne pohyb v polích nebo zadávání textu mezi nimi.
Tip
Formuláře lze také rychle vytvářet přetažením. Za tímto účelem otevřeme databázi, vyhledáme příslušnou tabulku nebo dotaz a vybereme záhlaví tabulky.
V aplikaci Writer vybereme pomocí levého tlačítka myši příslušné nadpisy polí, podržíme stisknuté klávesy Shift a Ctrl a kurzor myši se změní na symbol odkazu. Poté přetáhneme nadpisy do dokumentu Writer.
Pole můžeme přetáhnout do souborů Calc bez použití dalších kláves. Symbol kopírování se zobrazí jako kurzor myši.
V obou případech se vytvoří vstupní pole s přiřazeným štítkem. Odkaz na zdroj dat se vytvoří při prvním skutečném zadání dat, takže zadávání dat do takového formuláře může začít ihned po operaci přetažení.
Výhody externích formulářů
Nevýhody externích formulářů
Data lze použít v aplikaci Calc pro účely výpočtu. Za tímto účelem je nejprve nutné zpřístupnit data v listu aplikace Calc.
Do aplikace Calc lze zadávat data různými způsoby.
Vybereme tabulku levým tlačítkem myši a přetáhneme ji do pracovního listu aplikace Calc. Kurzor nastaví levý horní roh tabulky. Vytvoří se tabulka s názvy polí. Prohlížeč zdrojů dat v tomto případě nenabízí možnosti Data na text nebo Data na pole.
Data přetažená do aplikace Calc tímto způsobem vykazují následující vlastnosti:
Při importu se neimportují pouze data, ale také vlastnosti polí, které se během importu načítají a působí na ně. Pole, jako jsou čísla domů, která byla deklarována jako textová pole, jsou po vložení do Calcu formátována jako text.
Z importu se stane oblast aplikace Calc, které je ve výchozím nastavení přiřazen název Import1. K datům lze později přistupovat pomocí této oblasti. Volba Data > Obnovit oblast umožňuje, aby byl rozsah případně doplněn o nová data z databáze.
Obrázek 35: Přetažení tabulky zdroje dat do listu Calc
-
Obrázek 36: Dialogové okno Definice databázové oblasti zobrazující automaticky vytvořenou databázovou oblast Import1
Importovaná data nejsou formátována jinak, než jak to vyžadují vlastnosti databázových polí.
Pomocí místní nabídky tabulky můžeme také vytvořit kopii dat. V tomto případě však nejde o import, ale pouze o kopii. Vlastnosti datových polí nejsou načítány společně s nimi, ale jsou určeny aplikací Calc. Kromě toho jsou názvy polí formátovány jako záhlaví tabulky.
Obrázek 37: Kopírování tabulky z levé strany prohlížeče zdrojů dat
Obrázek 38: Kopírování tabulky z pravé strany prohlížeče zdrojů dat
Rozdíl je vidět zejména v databázových polích, která jsou formátována jako text. Při importu je aplikace Calc změní na textová pole, která jsou zarovnána vlevo jako ostatní text. Tato čísla pak již nelze použít při výpočtech.
Pokud je znovu exportujeme, zůstanou data zachována v původní podobě.
Obrázek 39: Porovnání importovaných a zkopírovaných dat v aplikaci Calc
Tip
Importem dat do aplikace Calc se přepíše předchozí obsah a také veškeré předchozí formátování. Pokud mají být data důsledně exportována do stejné tabulky, měli bychom pro import dat použít samostatný list. Data se pak načtou do druhého listu pomocí výrazu jménotabulky.názevpole. Pole v tomto listu lze vhodně naformátovat bez rizika přepsání formátování.
Tip
Záznamy lze také kopírovat přímo z databáze pomocí schránky nebo přetažením myší. Pokud je tabulka nebo dotaz přetažen do tabulky aplikace Calc, vloží se celý obsah. Pokud je otevřena tabulka nebo dotaz a je vybrán jeden nebo více záznamů, zkopírují se po přetažení pouze tyto záznamy spolu s názvy polí.
Vybereme data v listu aplikace Calc. Podržíme stisknuté levé tlačítko myši a přetáhneme data, která chceme převést do databáze, do oblasti tabulky v prohlížeči databází.
Obrázek 40: Kopírování dat z Calc do databázové tabulky
Kurzor změní svůj vzhled a ukáže, že je možné něco vložit.
Otevře se první okno Průvodce importem. Další kroky průvodce jsou popsány v kapitole 3, Tabulky, v části „Import dat z jiných zdrojů“.
V průzkumníku prohlížeče zdrojů dat lze tabulky kopírovat z jedné databáze do druhé tak, že vybereme zdrojovou tabulku levým tlačítkem myši, podržíme tlačítko stisknuté a přetáhneme ji do cílové databáze v kontejneru tabulek. Tím se zobrazí dialogové okno pro kopírování tabulek.
Tímto způsobem lze například databáze určené pouze pro čtení (zdroje dat, jako jsou adresáře z programu elektronické pošty nebo tabulky v tabulkovém procesoru) použít jako základ pro databázi, ve které jsou data editovatelná. Data lze také přímo kopírovat při přechodu na jiný databázový program (například při přechodu z PostgreSQL na MySQL).
Pokud chceme, aby nová databáze měla jiné relace než původní, můžeme to zařídit pomocí vhodných dotazů. Ti, kteří nejsou dostatečně odborně zdatní, mohou místo toho použít aplikaci Calc. Stačí přetáhnout data do tabulky a připravit je k importu do cílové databáze pomocí prostředků, které aplikace Calc nabízí.
Aby byl import do nové databáze co nejčistší, měly by být tabulky připraveny předem. Díky tomu lze s dostatečným předstihem rozpoznat problémy s formátováním a problémy s vytvářením primárních klíčů.
Pokud jsou záznamy k dispozici v tabulkové podobě, lze je vložit do databáze aplikace Base pomocí schránky a průvodce.
V aplikaci Base se import zahájí klepnutím pravým tlačítkem myši na cílovou tabulku. V místní nabídce pod volbou Kopírovat jsou příkazy Importovat a Importovat obsah. Pokud vybereme Vložit, Průvodce importem již vybere tabulku a Připojit data. Vložit jinak poskytuje pouze dotaz na importní filtr. K dispozici jsou možnosti HTML a RTF.
Pokud místo toho klepneme pravým tlačítkem myši do kontejneru tabulky, Průvodce importem nám nabídne pouze možnost vytvořit novou tabulku.
Pokud chceme importovat data z různých externích zdrojů, je nejlepší zvolit formát, který zabrání úpravám formuláře během zadávání dat. Pomocí Writeru můžeme vytvářet formuláře ve formátu PDF, umístit je online a nechat si vyplněné formuláře vrátit, například jako přílohy e-mailu. Chybí jen co nejjednodušší zadání údajů do databáze aplikace Base. Příklad ilustruje takový způsob importu.
Poznámka
Databáze Example_PDFFormular_Import.odb pro tuto sestavu je obsažena v ukázkových databázích k této knize.
Formulář PDF je vytvořen jako externí formulář bez propojení s databází. Pomocí Zobrazit > Nástrojové lišty > Ovládací prvky formuláře se zobrazí potřebné prvky formuláře, které lze vložit podle potřeby.
Formát PDF bohužel nerozlišuje mezi číselnými poli, daty a textovými poli. Pro zde uvedený příklad stačí pro všechny položky použít textová pole. Ostatní formáty polí ve formuláři aplikace Writer budou při exportu do PDF nevyhnutelně ztraceny.
Formuláře PDF mohou mít v zásadě následující pole:
Tlačítka
Textová pole
Zaškrtávací políčka
Rozevírací seznamy
Seznamy
Obrázek 41: Testovací dokument PDF, který má být načten do databáze Base
Testovací formulář obsahuje celkem 4 textová pole. V části Vlastnosti: Textové pole > Obecné > Název při použití následující metody importu bychom měli vždy zvolit název pole použitý v databázové tabulce, abychom se vyhnuli problémům s názvy polí a jejich obsahem.
Nápovědy se zobrazují při čtení záznamů, ale nezobrazují se v každém prohlížeči PDF.
Aby bylo zajištěno, že formulář skutečně obsahuje záznamy, měl by být po zadání dat uložen v prohlížeči PDF pomocí možnosti nabídky Soubor > Uložit jako. Konkrétní příkaz pro provedení tohoto úkonu se může u různých prohlížečů lišit. Bez tohoto postupu prohlížeč zobrazí záznamy po otevření formuláře v našem počítači, ale ve skutečnosti je načte z dočasně uloženého souboru prohlížeče, nikoli přímo ze souboru PDF. Pokud je pak formulář přenesen do jiného počítače, bude prázdný.
Formulář pro databázi aplikace Base je vzhledově velmi jednoduchý. Je propojen s tabulkou a zobrazuje právě načtené záznamy. Nejnovější záznamy jsou uvedeny v kontrolní tabulce výše.
Obrázek 42: Data formuláře načtená do aplikace Base z dokumentu PDF
Makro pro načítání záznamů se zadává v části Vlastnosti: Tlačítko > Události > Provést akci.
K vyčítání záznamů používáme open source program pdftk. Program je volně dostupný pro Windows i Linux. Linuxové distribuce jej mají většinou jako balíček ve svých repozitářích. Uživatelé systému Windows jej najdou na adrese https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/.
Záznamy načtené pomocí pdftk se zapisují do textového souboru, který vypadá takto:
Každé pole je v souboru zastoupeno pěti až šesti řádky. Pro makro jsou důležité řádky FieldName (měl by být stejný jako FieldName v cílové tabulce), FieldValue (obsah pole po uložení souboru PDF) a FieldJustification (poslední řádek položky).
Celý proces importu je řízen pomocí maker. Formulář PDF musí být uložen ve stejné složce jako databáze. Záznamy se z něj načtou do textového souboru a poté se z něj načtou do databáze. Takto se pokračuje u všech souborů PDF ve složce. Staré záznamy by proto měly být ze složky pokud možno odstraněny, protože funkce nekontroluje duplicitu.
SUB PDF_Form_Import(oEvent AS OBJECT)
DIM inNumber AS INTEGER
DIM stRow AS STRING
DIM i AS INTEGER
DIM k AS INTEGER
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Command AS OBJECT
DIM oResult AS OBJECT
DIM stSql AS STRING
DIM oDB AS OBJECT
DIM oFileAccess AS OBJECT
DIM inFields AS INTEGER
DIM stFieldName AS STRING
DIM stFieldValue AS STRING
DIM stFieldType AS STRING
DIM stDir AS STRING
DIM stDir2 AS STRING
DIM stPDFForm AS STRING
DIM stFile AS STRING
DIM stTable AS STRING
DIM inNull AS INTEGER
DIM aFiles()
DIM aNull()
DIM stCommand AS STRING
DIM stParameter AS STRING
DIM oShell AS OBJECT
Po deklaraci proměnných je uveden počet polí ve formuláři PDF. Počet začíná od 0, takže hodnota 3 ve skutečnosti znamená celkem čtyři pole. Pomocí tohoto počtu lze zjistit, zda byla načtena všechna data pro daný záznam, takže je připraven k přenosu do tabulky.
inFields = 3
stTable = "Name"
oDatasource = ThisComponent.Parent.CurrentController
If NOT (oDatasource.isConnected()) THEN
oDatasource.connect()
END IF
oConnection = oDatasource.ActiveConnection()
oSQL_Command = oConnection.createStatement()
Připojení k databázi je vytvořeno. Čte se cesta k databázovému souboru v souborovém systému. Pomocí této cesty se obsah složky načte do pole aFiles. Smyčka kontroluje každý název souboru v poli, zda nekončí příponou .pdf. Velká a malá písmena se nerozlišují, protože všechny výsledky hledání jsou převedeny na malá písmena pomocí Lcase.
oDB = ThisComponent.Parent
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title))
oFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
aFiles = oFileAccess.getFolderContents(stDir, False)
FOR k = 0 TO uBound(aFiles())
IF LCase(Right(aFiles(k),4)) = ".pdf" THEN
stDir2 = ConvertFromUrl(stDir)
stPDFForm = ConvertFromUrl(aFiles(k))
Pro určení příkazu pro načtení dat je nutné znát konvence adresování souborů v operačním systému. Původní adresa URL začínající na file:// se proto musí přizpůsobit aktuálnímu systému. Příkaz pro spuštění programu pdftk závisí na operačním systému. Může mít příponu .exe nebo třeba úplnou cestu k programu, například
.C:\ Program Files (x86)\pdftk\pdftk.exe nebo přípona nemusí být vůbec vyžadována. GetGuiType slouží k určení typu používaného systému: 1 znamená Windows, 3 macOS a 4 Linux. Následující kroky rozlišují pouze mezi systémem Windows a ostatními systémy.
Poté se použije funkce Shell(), která konzoli předá příslušný příkaz pro spuštění pdftk. Argument True zajistí, že LibreOffice počká, dokud se proces shellu neukončí.
IF GetGuiType = 1 THEN '()
stCommand = "pdftk.exe"
ELSE
stCommand = "pdftk"
END IF
stParameter = stPDFForm & " dump_data_fields_utf8 output "
& stDir2 & "PDF_Form_Data.txt"
Shell(stCommand,0,stParameter,True)
stFile = stDir & "PDF_Form_Data.txt"
i = -1
inNumber = FreeFile
Funkce FreeFile určuje, který další volný datový kanál je v operačním systému k dispozici. Tento kanál se načte jako celé číslo a použije se k přímému připojení k právě vytvořenému datovému souboru PDF. Ke čtení souboru se používá instrukce INPUT. To probíhá mimo kancelářský balík LibreOffice. Externí záznamy se pak načtou do LibreOffice.
OPEN stFile FOR INPUT AS inNumber
DO WHILE NOT Eof(inNumber)
LINE INPUT #inNumber, stRow
Datový soubor PDF se nyní načítá řádek po řádku. Kdykoli se vyskytne výraz FieldName, je zbývající obsah řádku považován za název pole ve formuláři PDF a vzhledem ke způsobu, jakým byl formulář definován, také za název databázového pole, do kterého se mají data zapsat.
Všechny názvy polí jsou přímo kombinovány pro použití v pozdějších příkazech SQL. V praxi to znamená, že názvy polí jsou uzavřeny ve dvojitých uvozovkách a odděleny čárkami.
Kromě toho dotaz pro každý název pole určuje typ pole v tabulce. Datum a desetinné hodnoty se musí přenášet jiným způsobem než text.
IF instr(stRow, "FieldName: ") THEN
IF stFieldName = "" THEN
stFieldName = """"+mid(stRow,12)+""""
ELSE
stFieldName = stFieldName & ",""" + mid(stRow,12)+""""
END IF
stSql = "SELECT TYPE_NAME FROM INFORMATION_SCHEMA.SYSTEM_COLUMNS
WHERE TABLE_NAME = '" + stTable + "' AND
COLUMN_NAME = '" + mid(stRow,12) + "'"
oResult = oSQL_Command.executeQuery(stSql)
WHILE oResult.next
stFieldType = oResult.getString(1)
WEND
END IF
Stejně jako u názvů polí, tak i u hodnot polí. Nesmí však být uvozeny dvojitými uvozovkami, ale musí být připraveny v souladu s požadavky kódu SQL. To znamená, že text musí být uvozen jednoduchými uvozovkami, data musí být převedena tak, aby odpovídala konvencím SQL atd. K tomu slouží dodatečná externí funkce SQL_Value.
IF instr(stRow, "FieldValue: ") THEN
IF stFieldValue = "" THEN
stFieldValue = SQL_Value(mid(stRow,13), stFieldType)
ELSE
stFieldValue = stFieldValue & "," &
SQL_Value(mid(stRow,13), stFieldType)
END IF
END IF
Pokud je nalezen výraz FieldJustification, znamená to konec kombinovaného bloku názvu pole a vlastností. Čítač i, který bude následně porovnán s dříve deklarovaným čítačem polí inFields, se tedy zvýší o 1.
Pokud se i a inFields rovnají, lze příkaz SQL dát dohromady. Musíme však zajistit, aby se z prázdných formulářů nevytvářely prázdné záznamy. Proto se předtím kontroluje, zda jsou všechny hodnoty polí NULL. V takových případech se příkaz SQL spustí okamžitě. V opačném případě je záznam zařazen pro vložení do tabulky Name. Poté se proměnné vrátí na výchozí hodnoty a lze načíst další formulář PDF.
IF instr(stRow, "FieldJustification:") THEN
i = i + 1
END IF
IF i = inFields THEN
aNull = Split(stFieldValue,",")
FOR n = 0 TO Ubound(aNull())
IF aNull(n) = "NULL" THEN inNull = inNull + 1
NEXT
IF inNull < inFields THEN
stSql ="INSERT INTO """ + stTable + """(" + stFieldName + ")"
stSql = stSql + "VALUES (" + stFieldValue + ")"
oSQL_Command.executeUpdate(stSql)
END IF
stFieldName = ""
stFieldValue = ""
stFieldType = ""
i = -1
inNull = 0
END IF
LOOP
CLOSE inNumber
Na konci postupu zůstane jeden soubor PDF_Form_Data.txt. Tento soubor je vymazán. Poté se formulář znovu načte, aby bylo možné zobrazit načtené záznamy.
Kill(stFile)
END IF
NEXT
oEvent.Source.Model.Parent.reload()
END SUB
Pokud text obsahuje znak "'", bude tento znak při vkládání SQL považován za značku konce textu. Kód SQL pro příkaz vložení selže, pokud následuje jakýkoli další text, který není uzavřen v jednoduchých uvozovkách. Aby se tomu zabránilo, musí být každá jednoduchá uvozovka v textu maskována další jednoduchou uvozovkou. To je úkolem funkce String_to_SQL.
FUNCTION String_to_SQL(st AS STRING) AS STRING
IF InStr(st,"'") THEN
st = Join(Split(st,"'"),"''")
END IF
String_to_SQL = st
END FUNCTION
Data v souboru PDF se načítají jako text. Jejich správnost nelze předem zkontrolovat.
Při psaní dat v angličtině se den, měsíc a rok oddělují tečkami nebo častěji pomlčkami. Den a měsíc mohou mít jednu nebo dvě číslice. Rok může mít dvě nebo čtyři číslice.
V kódu SQL musí data začínat čtyřmístným rokem a musí být zapsána ve formátu RRRR-MM-DD. Zadaná data proto musí projít procesem převodu.
Zadané datum je rozděleno na části den, měsíc a rok. Den a měsíc jsou opatřeny počáteční nulou a poté zkráceny na dvě číslice. Tím je ve všech případech zajištěn dvoumístný údaj.
Pokud je část roku již čtyřmístná (větší než 1000), hodnota se nemění. V opačném případě, pokud je rok větší než 30, se předpokládá, že datum patří do minulého století, a je třeba přidat rok 1900. Všechna ostatní data jsou přiřazena k aktuálnímu století.
FUNCTION Date_to_SQLDate(st AS STRING) AS STRING
DIM stDay AS STRING
DIM stMonth AS STRING
DIM stDate AS STRING
DIM inYear AS INTEGER
stDay = Right("0" & Day(CDate(st)), 2)
stMonth = Right("0" & Month(CDate(st)), 2)
inYear = Year(CDate(st))
IF inYear = 0 THEN
inYear = Year(Now())
END IF
IF inYear > 1000 THEN
ELSEIF inYear > 30 THEN
inYear = 1900 + inYear
ELSE
inYear = 2000 + inYear
END IF
stDate = inYear & "-" & stMonth & "-" & stDay
Date_to_SQLDate = stDate
END FUNCTION
Funkce SQL_Value kombinuje tuto funkci s níže uvedeným nastavením NULL a poskytuje tak volající funkci správně formátované hodnoty pro vstup do databáze.
Prázdná pole mají hodnotu NULL. Odpovídající pole v tabulce bude rovněž prázdné.
FUNCTION SQL_Value(st AS STRING, stType AS STRING) AS STRING
DIM stValue AS STRING
IF st = "" THEN
SQL_Value = "NULL"
Pokud se jedná o pole s datem a jeho obsah má být rozpoznatelný jako datum, musí být jeho obsah převeden do formátu data SQL. Pokud není rozpoznatelné jako datum, mělo by pole zůstat prázdné.
ELSEIF stType = "DATE" THEN
IF isDate(st) THEN
SQL_Value = "'" & Date_to_SQLDate(st) & "'"
ELSE
SQL_Value = "NULL"
END IF
Desetinné pole může obsahovat čárky místo desetinných míst a za nimi desetinná místa. V jazycích Basic a SQL je desetinným oddělovačem vždy tečka. Čísla obsahující čárku se proto musí převést. Pole musí obsahovat číslo, takže ostatní znaky, jako jsou jednotky, musí být odstraněny. To provádí funkce Val().
ELSEIF stType = "DECIMAL" THEN
stValue = Str(Val(Join(Split(st,","),".")))
Veškerý ostatní obsah je považován za text. Jednoduché uvozovky jsou maskovány další jednoduchou uvozovkou a celý výraz je opět uzavřen v jednoduchých uvozovkách.
ELSE
SQL_Value = "'" & String_to_SQL(st) & "'"
END IF
END FUNCTION
Další podrobnosti o konstrukci maker nalezneme v kapitole 9, Makra. Tento příklad jednoduše ukazuje, že je možné přenášet data z formulářů PDF do databáze aplikace Base, aniž by bylo nutné kopírovat hodnoty pole po poli pomocí schránky. Konstrukce výše uvedeného postupu byla záměrně ponechána velmi obecná a bylo by třeba ji přizpůsobit konkrétním situacím.