
Takové problémy se řeší mnohem snadněji, pokud je změna hodnoty pole přímo zaznamenána (neboli "sledována"). V dřívějších verzích FileMakeru to bylo možné realizovat pomocí vstupních dialogů, například kliknutím na tlačítko [OK] a na tlačítko Skript byl zavolán, aby proces zaznamenal. V novějších verzích FileMakeru je celá věc možná díky Spouštěč scénáře je mnohem snazší. Tento článek ukazuje, jak to udělat, s odpovídajícím ukázkovým souborem.
Výhody zaznamenávání událostí

Pusťme se do práce: Co je potřeba?
Vývoj protokolu událostí pro existující řešení FileMaker lze realizovat pomocí zvládnutelných prostředků. Nejprve je třeba vytvořit novou tabulku, která obsahuje všechna příslušná pole pro správu událostí. V ukázkovém souboru se tabulka jmenuje "Protokol událostí".
Každé zaznamenané události odpovídá datový záznam v této tabulce, automatický primární klíč se nazývá _pk_Ereignis_ID. Referenční klíč, k němuž se událost vztahuje, je uložen v poli klíče _fk_Fremdschlüssel. Pokud se například změní pole v databázi zákazníků, vyplní se toto pole primárním klíčem databáze zákazníků. Který klíč se v tomto poli nachází, se zadává do pole Cizí klíč napsáno.
Pro změny polí obsahuje tato tabulka také pole Field_content_before a Field_content_afterkteré obsahují obsah pole před a po provedené změně.
Stačí dva skripty.
K zaznamenání události jsou nyní kromě tabulky zapotřebí dva skripty: Jeden skript se používá pro čistý záznam v tabulce. Protokol událostí a má být vyvolán pomocí parametrů skriptu, a další skript je nutný pro záznam změn pole, který je vyvolán pomocí spouštěče skriptu na příslušném poli.
Zadání události
Podívejme se nejprve na čistý vstupní skript [ts.event log], který přijímá následující parametry skriptu:
- Cizí klíč
- Soubor
- Původ (skript/políčko atd.)
- Stav (OK, chyba)
- Tabulka
- Text
- Typ transakce
- Typ cizího klíče
- Obsah pole před
- Obsah pole po
Samotný skript má jednoduchou strukturu, hodnoty obsažené v parametru skriptu zapisuje nejprve do proměnných a poté do nového datového záznamu v tabulce protokolu událostí.
Tento skript může být volán jakýmkoli jiným skriptem, který má provádět záznamy do protokolu událostí. V ukázkovém řešení byl realizován také záznam událostí v terénu, který tento skript také vyvolává.
Skript [ts.record_field_event]
Scénář ts.record_field_event je nastaven pro každé pole jako spouštěč skriptů [OnObjectEnter] a [OnObjectExit]. Jako nepovinný parametr skriptu může přijmout tabulátor ovládacího prvku s ouškem, pokud se pole nachází v oblasti ovládacího prvku s ouškem. To je nutné, aby skript mohl po vytvoření záznamu dat protokolu přepnout na správnou kartu. Kontrola registrů na cílovém rozložení.
Skript nejprve zkontroluje, zda systémová proměnná $$field je naplněný nebo prázdný. Pokud je tato systémová proměnná prázdná, uživatel zadal pole a skript systémovou proměnnou vyplní. $$field s názvem aktivního pole a $$field_content_before s obsahem pole před změnou. Skript se poté ukončí, protože při zadávání pole nemusí skript dělat nic jiného.
Pokud systémová proměnná $$field je již vyplněno, uživatel mohl obsah pole změnit a pole právě opouští. Skript nyní zkontroluje, zda byl obsah pole změněn, a pokud byla změna provedena, vytvoří datový záznam v protokolu událostí voláním subskriptu ts.event log. Pokud je pole v ovládacím prvku s ouškem a název ouška byl zadán jako parametr skriptu, skript se nyní přepne na zadané ouško, protože jinak by se po zadání přepnul na výchozí ovládací prvek s ouškem. Nakonec skript opět odstraní proměnné 1TP4rider, $$field, $$field_content_before a $$field_content_aftera hra může začít znovu od začátku, protože systémová proměnná $$pole je nyní opět prázdná.
Přiřazení polí pomocí spouštěčů skriptů
V posledním kroku je nyní třeba požadovaná pole opatřit spouštěči skriptů, aby při změně pole mohlo dojít k zápisu do protokolu událostí. Pro každé pole je třeba nastavit dva spouštěče skriptů, z nichž každý volá stejný skript:
- WithObjectEnter ["ts.field_event_record"; {parametr: "tab"}]
- WithObjectExit ["ts.field_event_record"; {parametr: "tab"}]
Parametr skriptu "Tab" je nepovinný a zadává se pouze v případě, že se pole nachází v ovládacím prvku s tabulátorem, jako je tomu v příkladovém souboru. Zadává se název záložky, který se použije v příkazu Inspektor na kartě [Pozice] v Název musí být zadán.
Příklad souboru pro záznam hodnoty pole
Na konci tohoto článku si můžete stáhnout ukázkový soubor pro FileMaker 12, ve kterém byl realizován protokol událostí se záznamem hodnot polí. Tento ukázkový soubor můžete použít jako základ pro vlastní databázi nebo pro přenos funkcí do vlastního řešení FileMakeru.
Stáhnout ukázkový soubor pro FileMaker 12
Jak přenést skripty ze vzorového souboru do řešení
Skripty lze snadno přenášet z jednoho řešení FileMakeru do druhého prostřednictvím schránky. Stačí otevřít dialogové okno Správa skriptůVyberte požadovaný skript myší a zkopírujte jej do schránky pomocí nabídky [Úpravy - Kopírovat] nebo kombinace kláves [Ctrl/Cmd-C]. Poté otevřete stejný dialog v cílovém řešení a jednoduše znovu vložte dříve zkopírovaný skript pomocí příkazu nabídky [Úpravy - Vložit].
Přenos tabulek ze vzorového souboru do řešení
Tabulky lze do stávajícího řešení vložit několika způsoby. Nejjednodušší je importovat tabulku pomocí tlačítka [Importovat...] v dialogu Správa databáze. Všechny tabulky, které mají být importovány ze zdrojového řešení, lze poté vybrat v následném dialogu. Tento způsob je proto vhodný zejména v případě, že se má importovat více tabulek najednou. Pokud se má importovat pouze jedna tabulka, lze to provést také prostřednictvím schránky jako skript. Má-li být tabulka importována spolu s daty, lze to provést příkazem [Soubor > Importovat záznamy > Soubor]. V dialogovém okně pro import je cílová tabulka Nová tabulka musí být zadán.
Přenos seznamů hodnot ze vzorového souboru do řešení
Seznamy hodnot lze snadno importovat z jednoho řešení FileMakeru do druhého prostřednictvím schránky. Stačí otevřít dialog v nabídce [Soubor/Soubor > Správa > Seznamy hodnot], vybrat požadovaný seznam hodnot a kliknout na tlačítko [Importovat]. Seznam hodnot myší a zkopírujte seznam hodnot do schránky pomocí nabídky [Úpravy - Kopírovat] nebo kombinace kláves [Ctrl/Cmd-C]. Poté otevřete stejný dialog v cílovém řešení a vložte dříve zkopírovaný seznam hodnot pomocí příkazu nabídky [Úpravy - Vložit].
Jak přenést vlastní funkce z příkladového souboru do řešení
Klikněte na tlačítko [Importovat] v dialogu [Soubor > Správa > Vlastní funkce...] a poté vyberte vzorový soubor. V následujícím dialogu vyberte požadované vlastní funkce a dialog potvrďte. Upozorňujeme, že tato funkce je k dispozici pouze v aplikaci FileMaker Pro Advanced, nikoli však v aplikaci FileMaker Pro.

Markus Schall vyvíjí od roku 1994 databáze, rozhraní a podnikové aplikace na míru založené na Claris FileMaker. Je partnerem společnosti Claris, držitelem ocenění FMM Award 2011 a vývojářem aplikace Software ERP gFM-Business. Je také autorem knih a zakladatelem organizace M. Schall Publishers.







Skvělá věc, hodně nám pomohla. Mnohokrát děkujeme za všechno!