
Bir alan değerindeki değişiklik doğrudan kaydedilirse (veya "izlenirse") bu tür sorunlarla başa çıkmak çok daha kolaydır. Önceki FileMaker sürümlerinde bu, giriş diyalogları kullanılarak gerçekleştirilebiliyordu, örneğin [OK] düğmesine tıklayarak ve bir Senaryo işlemi kaydetmek için çağrıldı. Daha yeni FileMaker sürümleri ile, tüm bunlar aşağıdakiler sayesinde mümkündür Senaryo tetikleyicisi çok daha kolay hale gelmiştir. Bu makale, ilgili bir örnek dosya ile bunun nasıl yapılacağını göstermektedir.
Olayları kaydetmenin avantajları

İşe koyulalım: Neye ihtiyaç var?
Mevcut bir FileMaker çözümü için bir olay günlüğü geliştirmek, yönetilebilir kaynaklarla gerçekleştirilebilir. İlk olarak, olayları yönetmek için ilgili tüm alanları içeren yeni bir tablo gereklidir. Örnek dosyada tablo "Olay günlüğü" olarak adlandırılmıştır.
Kaydedilen her olay bu tabloda bir veri kaydına karşılık gelir, otomatik birincil anahtar _pk_Ereignis_ID olarak adlandırılır. Olayın ilgili olduğu referans anahtarı _fk_Fremdschlüssel anahtar alanına kaydedilir. Örneğin, bir müşteri veritabanındaki bir alan değiştirilirse, bu alan müşteri veritabanının birincil anahtarı ile doldurulur. Bu alanda hangi anahtarın olduğu alana girilir Yabancı anahtar Yazılı.
Alan değişiklikleri için bu tablo şu alanları da içerir Field_content_before ve Field_content_afteryapılan değişiklikten önceki ve sonraki alan içeriğini içerir.
İki senaryo yeterlidir.
Bir olayı kaydetmek için artık tabloya ek olarak iki komut dosyası gereklidir: Bir komut dosyası tablodaki saf giriş için kullanılır Olay günlüğü ve kod parametreleri ile çağrılır ve alan değişikliklerini kaydetmek için ilgili alanda kod tetikleyicisi aracılığıyla çağrılan başka bir kod gereklidir.
Bir etkinlik girme
İlk olarak aşağıdaki kod parametrelerini kabul eden saf giriş koduna [ts.event log] bakalım:
- Yabancı anahtar
- Dosya
- Menşei (senaryo/alan, vb.)
- Durum (Tamam, hata)
- Tablo
- Metin
- İşlem türü
- Yabancı anahtar türü
- Önce alan içeriği
- Sonrasında alan içeriği
Komut dosyasının kendisi basit bir şekilde yapılandırılmıştır, komut dosyası parametresinde bulunan değerleri önce değişkenlere ve ardından Olay günlüğü tablosundaki yeni bir veri kaydına yazar.
Bu komut dosyası, olay günlüğüne giriş yapacak başka herhangi bir komut dosyası tarafından çağrılabilir. Örnek çözümde, bu komut dosyasının da çağırdığı saha olaylarının kaydı da gerçekleştirilmiştir.
Komut Dosyası [ts.record_field_event]
Senaryo ts.record_field_event her alan için [OnObjectEnter] ve [OnObjectExit] kod tetikleyicisi olarak ayarlanır. Alan bir sekme kontrolünün bir alanında bulunuyorsa, isteğe bağlı bir kod parametresi olarak bir sekme kontrolünün sekmesini kabul edebilir. Bu, günlük veri kaydı oluşturulduktan sonra kodun doğru sekmeye geçebilmesi için gereklidir. Kayıt kontrolü hedef düzende.
Kod ilk olarak sistem değişkeninin $$field dolu veya boş olduğunu belirtir. Bu sistem değişkeni boşsa, kullanıcı bir alan girmiştir ve kod sistem değişkenini doldurur $$field ile aktif alan adı ve $$field_content_before değişiklikten önceki alan içeriğiyle birlikte. Ardından koddan çıkılır, çünkü kodun bir alana girerken başka bir şey yapması gerekmez.
Eğer sistem değişkeni $$field zaten doldurulmuşsa, kullanıcı alan içeriğini değiştirmiş ve alandan çıkmış olabilir. Kod şimdi alan içeriğinin değiştirilip değiştirilmediğini kontrol eder ve alt kodu çağırarak bir değişiklik yapılmışsa olay günlüğünde bir veri kaydı oluşturur ts.olay günlüğü. Alan bir sekme kontrolündeyse ve sekmenin adı bir kod parametresi olarak sağlanmışsa, kod artık belirtilen sekmeye geçer, aksi takdirde girişten sonra varsayılan sekme kontrolüne geçer. Son olarak, kod değişkenleri tekrar siler 1TP4rider, $$field, $$field_content_before ve $$field_content_afterve oyun baştan başlayabilir, çünkü sistem değişkeni $$field artık tekrar boştur.
Kod tetikleyicileriyle alanlar atama
Son adımda, bir alan değiştirildiğinde olay günlüğüne giriş yapılabilmesi için istenen alanlara artık kod tetikleyicileri sağlanmalıdır. Her alan için, her biri aynı komut dosyasını çağıran iki komut dosyası tetikleyicisi ayarlanmalıdır:
- WithObjectEnter ["ts.field_event_record"; {parameter: "tab"}]
- WithObjectExit ["ts.field_event_record"; {parameter: "tab"}]
"Tab" kod parametresi isteğe bağlıdır ve yalnızca alan örnek dosyada olduğu gibi bir sekme kontrolünde bulunuyorsa belirtilir. Sekmenin adı belirtilir ve bu ad Müfettiş içinde [Konum] sekmesi altında İsim belirtilmelidir.
Alan değeri kaydı için örnek dosya
Bu makalenin sonunda FileMaker 12 için alan değeri kaydı ile olay günlüğünün gerçekleştirildiği örnek bir dosya indirebilirsiniz. Bu örnek dosyayı kendi veritabanınız için temel olarak kullanabilir veya işlevleri kendi FileMaker çözümünüze aktarabilirsiniz.
FileMaker 12 için örnek dosyayı indirin
Örnek dosyadaki komut dosyalarını çözümünüze aktarma
Komut dosyaları, pano aracılığıyla bir FileMaker çözümünden diğerine kolayca aktarılabilir. Diyaloğu açmanız yeterlidir Komut dosyalarını yönetmeİstediğiniz kodu fare ile seçin ve [Düzenle - Kopyala] menüsünü veya [Ctrl/Cmd-C] tuş kombinasyonunu kullanarak kodu panoya kopyalayın. Ardından hedef çözümde aynı diyaloğu açın ve [Düzenle - Yapıştır] menü komutunu kullanarak önceden kopyalanan kodu tekrar yapıştırın.
Tabloları örnek dosyadan çözümünüze aktarmak için
Tablolar mevcut bir çözüme birkaç şekilde eklenebilir. En kolay yol, diyalog penceresindeki [İçe Aktar...] düğmesini kullanarak tabloyu içe aktarmaktır Veritabanını yönetin. Kaynak çözümden içe aktarılacak tüm tablolar daha sonra bir diyalog penceresinde seçilebilir. Bu nedenle bu yöntem, aynı anda birden fazla tablo içe aktarılacaksa özellikle uygundur. Yalnızca bir tablo içe aktarılacaksa, bu bir komut dosyası gibi pano aracılığıyla da yapılabilir. Bir tablo verileriyle birlikte içe aktarılacaksa, bu işlem [Dosya > Kayıtları içe aktar > Dosya] komutuyla yapılabilir. İçe aktarma diyaloğunda, hedef tablo Yeni masa belirtilmelidir.
Değer listelerini örnek dosyadan çözümünüze aktarmak için
Değer listeleri, pano aracılığıyla bir FileMaker çözümünden diğerine kolayca aktarılabilir. Bunun için [Dosya/Dosya > Yönet > Değer listeleri] altındaki diyaloğu açmanız, istediğiniz değer listesini seçmeniz ve [İçe aktar] düğmesine tıklamanız yeterlidir. Değer listesi fare ile seçin ve [Düzenle - Kopyala] menüsünü veya [Ctrl/Cmd-C] tuş kombinasyonunu kullanarak değer listesini panoya kopyalayın. Ardından hedef çözümde aynı diyaloğu açın ve [Düzenle - Yapıştır] menü komutunu kullanarak önceden kopyalanan değer listesini yapıştırın.
Kendi fonksiyonlarınızı örnek dosyadan çözümünüze nasıl aktarabilirsiniz?
Dosya > Yönet > Özel fonksiyonlar...] diyaloğunda [İçe aktar] düğmesine tıklayın ve ardından örnek dosyayı seçin. Aşağıdaki diyalogda istediğiniz özel fonksiyonları seçin ve diyalogu onaylayın. Bu işlevin yalnızca FileMaker Pro Advanced'de kullanılabildiğini, FileMaker Pro'da kullanılamadığını lütfen unutmayın.

Markus Schall 1994'ten beri Claris FileMaker tabanlı özelleştirilmiş veritabanları, arayüzler ve iş uygulamaları geliştirmektedir. Kendisi Claris ortağı, 2011 FMM Ödülü sahibi ve ERP yazılımı gFM-Business. Kendisi aynı zamanda bir kitap yazarı ve M. Schall Yayınevleri.







Harika bir şey, bize çok yardımcı oldu. Her şey için çok teşekkürler!