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
						

Bir alandaki değerin değişmesine bağlı Tarih ve saat kaydı

+2 oy
204 kez görüntülendi
Merhaba Arkadaşlar;

Bir portaldaki değerlerin toplamını bir alana, Calculation  Sum ( field {; field...} ) formülü ile aldıktan sonra toplamını almış olduğumuz alanın içindeki değerin değişmesine bağlı olarak timestamp almak istiyorum. Eğer ki toplamını almış olduğum alanda herhangi bir değişme yoksa timestamp  kısmınında değişmemesini istiyorum. nasıl yapabilirim yardımcı olur musunuz.
16, Eylül, 2023 Raporlama kategorisinde medcezir (12,210 puan) tarafından soruldu

2 Cevaplar

+3 oy

FileMaker'da belirli bir alandaki değerlerin toplamını hesapladıktan sonra, bu toplamın değişip değişmediğini kontrol ederek bir zaman damgası (timestamp) almak için birkaç adımı izleyebilirsiniz. İşte bu işlemi gerçekleştirmeniz için bir yol:

  1. İlk adım olarak, toplamını almak istediğiniz alanlardan bir hesap alanı oluşturun ve bu hesap alanında toplamı hesaplayın. Bu hesap alanı toplamı hesapladığınız alanları kullanacak. Örneğin, "ToplamAlanı" adında bir hesap alanı oluşturun ve bu alanda Sum(field1; field2; field3) gibi bir hesaplama yapın.

  2. Şimdi, bu toplamı kontrol etmek ve zaman damgası almak için bir script oluşturun. İşte temel bir script örneği:

 

filemaker

 

Set Variable [ $oldTotal; TotalField ] // Store the current total
Refresh Window [ Flush cached join results ] // Update the router
Set Field [ TotalField; Sum(field1, field2, field3) ] // Calculate the new total
If [ $oldTotal ≠ TotalField ] // Compare old and new total
     Set Field [ TimestampField; Get(CurrentTimeStamp) ] // Set timestamp
End If

Bu script, toplam alanının değeri değiştiğinde zaman damgası alanına bir zaman damgası ekler. Değer değişmezse, zaman damgası alanını güncellemez.

  1. Bu scripti çalıştırmak için bir tetikleyici (trigger) oluşturun. Hangi olayın bu scripti tetikleyeceğini belirlemelisiniz. Örneğin, kayıt kaydedildiğinde, alanlardan biri değiştiğinde veya belirli bir düğmeye tıklandığında bu scripti çalıştırabilirsiniz.

Bu adımları izlediğinizde, toplam alanındaki değer değiştiğinde bir zaman damgası alacaksınız. Ancak değer değişmezse, zaman damgası alanı güncellenmeyecektir. Bu şekilde, toplam alanının değişikliklerini izleyebilir ve gerektiğinde zaman damgası alabilirsiniz.

16, Eylül, 2023 kurucay2000 (10,170 puan) tarafından cevaplandı
Teşekkür ederim bu cevap işimi gördü.
+3 oy
AI kullanılmamış yanıt da ben ekleyeyim :)

 

Sum fonksiyonunu kullanma şekline göre iki farklı yanıt verilebilir bu soru için:

1. Eğer mevcut tablodaki alanları topluyorsanız, yani ilişki kullanılmıyorsa doğrudan AutoEnter calculation ayarları ile bu alanlardaki değişikliği takip edip güncelleme zamanını yazdırabilirsiniz. Auto enter calculation hesaplaması şu şekilde olabilir;

Let (

   ~tetikle = iliskidenGelmeyenAlan1 & iliskidenGelmeyenAlan2 & iliskidenGelmeyenAlan3 ;

  Get(currentimestamp)

)

Burada önemli şart toplanan alanların ilişki kullanılmadan doğrudan ilgili tabloda kayıtlı olması.

 

 

2. Eğer topladığınız alanlar bir şekilde ilişkili veriye muhtaçsa auto-enter calculation tetiklenmeyecektir. Bu durumda script trigger ile script marifetiyle yapmak. Bunun için;

- Toplamı değiştiren bir kayıt düzenlendiğinde script çalıştır (on commit kullanılabilir)

- Script ise kısaca şunları yapar;

1. İşlem öncesi toplam değerini değişkene alır.

2. İşlem sonrası toplam değişiyor mu kontrol eder.

3. Toplam değişiyorsa ilişkili kayıttaki tarih/saat bilgisini "Set Field" adımı ile günceller.

 

 

Scripteki ilk 2 madde için küçük testler yapıp önceki değeri hesaplamak için farklı yöntemler de kullanılabilir.
18, Eylül, 2023 F. Osman Cabi (200,340 puan) tarafından cevaplandı
...