Cabitaş Mühendislik Tic. Ltd. Şti.

FileMaker: Script Hatalarıyla Başa Çıkma

  • 2021-04-19 18:51:16
  • 61 Görüntülenme

Script kelimesinin Türkçe karşılığı olarak betik veya komut dosyası diyebiliriz. Scriptler temelde yapmak istediğimiz işlemleri otomatikleştirecek komutlar dizininden oluşan senaryolardır. Makineler yaptırmak istediğimiz işlemler olduğunda, söylediğimiz her komutu motamot olarak uyguladığı için yapılacak işlemleri detaylı olarak anlatmak gerekir. Bu sebeple kullanılacak script adımlarının Filemaker’daki davranışlarının iyi bilinmesi ve hesaplamaların buna göre yapılması gerekir. Hesaplamaların düzgün yapılmadığı, gözden kaçan ihtimallerin olduğu ve bu ihtimallerin değerlendirilmediği durumlarda beklenmedik hatalarla karşılaşabiliriz.

 

script-handling

 

Komutlarımızı her ne kadar düzgün yazarsak da beklenmedik durumlar her zaman oluşabilir. Kullanıcıdan veri girişinin alındığı durumlarda kullanıcının uygulayacağı davranışlar her zaman istediğimiz gibi olmayabilir. Kullanıcı number bir alana text değer girerek, yaş bilgisi gibi muhakkak pozitif veri girişinin olması gereken alanlara negatif değerler girmeye çalışarak veya bölme işlemi yaptırmak istediğimizde bölen kısmına 0 girerek tanımsız değerlerin oluşmasına sebep olabilir. Uygulamaya farklı bir konumdan dosyalar dahil ederek çalışmak istediğimizde, dosyalar gerekli konumda olmayabilir. Kullanıcı tarafından silinerek veya başka sebeplerle dosyanın beklenen yerde olamayabileceği bilinmeli ve buna göre dosya işlemleri yapılacağında bu durumlara dikkat edilmelidir. Script’lerin sonucunda tüm kayıtları silmek veya kayıtları topluca güncellemek gibi tehlikeli işlemler varsa özellikle önceki işlemlerin düzgün çalışıp çalışmadığı test edilmelidir. İnternet ortamından veri çekileceği zaman ağ bağlantısının durumu kontrol edilmelidir. Hatalarla karşılaşmamak için dikkatli olunması gereken bunlar gibi daha birçok durum bulunur. Bu nedenle mümkün olduğu kadar dikkatli olmak ve gerektiğinde hataların tespitinin kolay olabilmesi için kodlar düzenli, temiz ve anlaşılır olmalıdır. Hata olması durumlarında iş akışını kolayca düzenleyebilmek için hataların log kaydı tutularak sorunların tespit edilmesi ve çözüme ulaştırılması kolaylaştırılmalıdır.

 

Filemaker’da hatalarla karşılaşılması durumunda, hatanın kaynağını bulmak için Tools menüsünde bulunan Script Debugger aracı ile komutlar adım adım işletilerek sorunun oluştuğu adım tespit edilebilir. Hataların oluşması durumunda Filemaker’ın ürettiği hata kodlarına debugger’daki last error bölümünden ulaşarak, bu hata kodları hakkında daha detaylı araştırmalar yapabilirsiniz. Hata kodlarını incelemek istediğinizde Filemaker hata kodları hakkındaki sayfamızı inceleyebilirsiniz.

 

Hata yönetimi (Error Handling) hakkındaki örnek uygulamaya ve daha fazlasına aşağıdaki Script Hatalarıyla Başa Çıkma konulu Meetup’ımızdan ulaşabilirsiniz.

 

 

Meetup'ta kullanılan örnek dosyaya ve sunum dosyasına aşağıdaki linklerden ulaşabilirsiniz.

Örnek: Inventory

Sunum: Meetup Error Handling

Script: 

Allow User Abort [ Off ]
Set Error Capture [ On ]

#  Girilen bilgileri kontrol et
Set Variable [ $hatalar ; Value: Let (   [     ~kontrol1 = If ( IsEmpty ( Global::GrupSec ) ; "Lütfen grup seçiniz!" ) ;     ~kontrol2 = If ( IsEmpty ( Global::UreticiSec ) ; "Lütfen üretici seçiniz!" ) ;     ~kontrol3 = If ( IsEmpty ( Global::OranGir ) ; "Lütfen oran giriniz!" ) ;  … ] 
If [ not IsEmpty ( $hatalar ) ] 
Show Custom Dialog [ "Uyarı" ; "Lütfen bilgileri kontrol ediniz. Hatalar;¶" & $hatalar ] 
Exit Script [ Text Result:    ] 
End If

Set Variable [ $grup ; Value: Global::GrupSec ] 
Set Variable [ $uretici ; Value: Global::UreticiSec ] 

Close Window [ Current Window ] 

Go to Layout [ "Inventory List" (Products) ; Animation: None ]

Perform Find [ Restore ] 
If [ Get(LastError) = 401 ] 
Show Custom Dialog [ "İleti" ; "Belirttiğiniz kriterlerde kayıt bulunamadı!" ] 
Exit Script [ Text Result:    ] 
Else If [ Get(LastError) ] 
Show Custom Dialog [ "Uyarı" ; "Beklenmedik bir hata oluştu! Hata kodu:" & Get(LastError) ] 
Exit Script [ Text Result:    ] 
End If


Show Custom Dialog [ "İleti" ; "Listelenen " & Get(FoundCount) & " ürün fiyatında %" &  Global::OranGir & " oranında değişiklik ya… ] 
If [ Get(LastMessageChoice) = 2 ] 
Exit Script [ Text Result:    ] 
End If


Replace Field Contents [ With dialog: Off ; Products::Unit Price ; Products::Unit Price * ( 100 + Global::OranGir ) / 100 ] 
If [ Get(LastError) = 201 ] 
Show Custom Dialog [ "ileti" ; "Uyarı, bazı kayıtlar güncellenemedi!" ] 
Exit Script [ Text Result:    ] 
Else If [ Get(LastError) ] 
Show Custom Dialog [ "Uyarı" ; "Beklenmedik bir hata oluştu! Hata kodu:" & Get(LastError) ] 
Exit Script [ Text Result:    ] 
End If

Show Custom Dialog [ "İleti" ; "Fiyatlar güncellendi." ] 


 

Meetup’larımızdan haberdar olmak için Meetup hesabımızı veya Filemaker Destek sitesini takip edebilirsiniz.

Daha önceki Meetup’larımızı izlemek için Youtube kanalımzı takip edebilirsiniz.

Bu web sayfası kullanıcı deneyiminizi geliştirmek için çerezler kullanır.