FilemakerTurk, AYS Bilişim ve Beyaz Net tarafından desteklenmektedir.
Filemaker Danışmanınız
AYS Bilişim
Mehmet KAYA
 0532 231 07 27
 0216 318 55 80
 mkaya@aysbilisim.net
						

Kayıtları kim değiştirdi?

0 oy
572 kez görüntülendi
Kayıtlar da üzerinde kimin hangi alanda ne değiltirdiğinin kaydını tutabilir miyiz? Daha doğrusu Anlaşılabilir Log kayıtları.
22, Şubat, 2015 Scripts kategorisinde Mehmet KAYA (166,370 puan) tarafından soruldu

4 Cevaplar

+1 oy
 
En İyi Cevap
ilk olarak Kullanici adında bir text alanı oluşturun. Üzerine çift tıklayarak açılan iletişim penceresinden Modificationı işaretleyin açılır listeden Account Name değerini seçin. Bu alan kayıt değiştirildiğinde Değiştirenin kullanıcı adını alıcaktır. Budan sonraki aşama bir betik yazılarak alandaki adı alıp başka bir tabloya tarih saat bilgisi ile işlemektir. Set Script Triggers ile bu betik ilgili alana bağlanırsa basit bir log işlemi gerçekleştirilmiş olur. Ben bunu Ctrl + z ve Ctrl + Y işlemlerinde kullanmıştım. Her alanda daha karmaşık bir işlem ile alan adı sayfa adı eski değer yeni değer değiştiren... şeklinde kayıtlar tutulmasını sağlıyordum.
22, Şubat, 2015 Goksel_Gokce (98,530 puan) tarafından cevaplandı
22, Şubat, 2015 Mehmet KAYA tarafından seçilmiş
Gökçe Bey, Script trigger ile yapılması yöntemi bence güzel ama bir endişem var  form üzerinde 20 filed varsa tamamının script trigger özelliğine teket teker eklenmesi biraz yorucu olabilir. Bun DB den halledilmezi biraz daha uygun gibi. Ama yine dediğin gibi script yazmak kaçınılmaz. Biraz tartışılsın. Bu konuda Tayfun Beyin elinde örnek var. Açıklarsa seviniriz.
Bununla alakalı bir calcilation görmüş fakat ilgilenmemiştim. Benim yaptığımda işlemler geri alınabiliyordu. eski değer yerine konup tekrar log alıyordu. Zahmetli ama zahmetsizde bir şey olmuyor :)
0 oy
22, Şubat, 2015 Mehmet KAYA (166,370 puan) tarafından cevaplandı
0 oy
Göksel arkadaşımızın bahsettiği betiğe örnek olarak aşağıdaki kodları verebiliriz.

LOG_ALANGIRIS
Set Variable [ $$id; Value:Get ( RecordID ) ]
Set Variable [ $$tablo; Value:Get ( ActiveFieldTableName ) ]
Set Variable [ $$alan; Value:Get ( ActiveFieldName ) ]
Set Variable [ $$icerik; Value:Get ( ActiveFieldContents ) ]

LOG_ALANCIKIS
Freeze Window
Set Error Capture [ On ]
Set Variable [ $ID; Value:Get ( RecordID ) ]
Set Variable [ $yeni_icerik; Value:Get ( ActiveFieldContents ) ]
Go to Layout [ “LOG” (LOG) ]
New Record/Request
Set Field [ LOG::ILGILI ID; $$id ]
Set Field [ LOG::TABLO; $$tablo ]
Set Field [ LOG::ALAN; $$alan ]
Set Field [ LOG::ICERIK_ESKI; $$icerik ]
Set Field [ LOG::ICERIK_YENI; $yeni_icerik ]
Set Field [ LOG::DEGISTIREN; Get(AccountName) ]
Go to Layout [ original layout ]

LOG_ALANGIRIS script'i layout taki tüm alanların SetScriptTriggers taki OnObjectEnter olayına.

LOG_ALANCIKIS script'i layout taki tüm alanların SetScriptTriggers taki OnObjectValidate olayına.

Eklendiğinde her tablodaki her alan için log kaydı tutulabiliyor.
22, Şubat, 2015 mkanlioglu (63,270 puan) tarafından cevaplandı
Guzel bir aciklama eline saglik. Ama tayfun beyden hala calisma bekliyorum. Hic değişken ve script Trigger kullanmadan yapıyor. Tayfun bey aktif değil istanbula gelince ben yazacağım anlaşılan.
0 oy

Cevap vermis olan arkadaslara tesekkurler ederim. Ozellikle LOG olarak degisiklikleri tutmak ve dilendiginde geriye getirmek icin cok faydali bir script anlatimi olmus. Emeklerinize saglik.

Konuya fazla bir katkisi olurmu bilmem ama benim her tablo icerisinde kullandigim 6 veya enaz 5 tane field var.

Resimdede gorulecegi gibi bunlar

Serienummer -> Sira numarasi
UUID -> Unik kayit ID numarasi. Get(UUID) sonucu
Aangemaakt Door Account Name -> Kayitin kim tarafindan yapildiginin kayiti
Gewijzigd Door Account Name -> Kayitin kim tarafindan degistirildiginin kayiti
Aangemaakt timestamp -> Kayitin kim tarafindan hangi tarih ve saatte yapildiginin kayiti
Gewijzigd timestamp -> Kayitin kim tarafindan hangi tarih ve saatte degistirildiginin kayiti

Tablolar icinde kullanilmasi gereken 6 field

24, Şubat, 2015 Hamit Özsönmez (56,720 puan) tarafından cevaplandı
...