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
						

Portalda bir önceki kayıtta değişiklik yapma

+1 oy
1,129 kez görüntülendi

Herkese merhaba

Başlığı biraz açık yazmaya çalıştım ama biraz daha açıklama getireyim. Bir tane portalım var. Bu portaldaki bir field 0 ya da 1 değerini alıyor. 0 olması kaydın eski olduğunu, 1 olması kaydın güncel olduğunu gösteriyor.

Her bir yeni kayıt oluşturduğumda FM güncel kaydı eski hale getiriyor ve yeni kaydı da otomatik güncel halde oluşturuyor. Burada bir sıkıntı yok.

Ama şöyle bir senaryo durumu var. kullanıcı yeni bir portal kaydı oluşturma düğmesine basarsa ve yani bir portal kaydı oluşturma sırasında bundan vazgeçerse son durumda bütün kayıtlar "eski" şekllinde kalıveriyor. Kullanıcı portal kaydı oluşturma sırasında vazgeçerse FM yeniden bir önceki güncel kaydı yeniden güncel hale getimesi gerekiyor.

Bu ihtiyaç için ben aşağıdaki script satırını oluşturdum.

Bu yazdığım script bir önceki kaydı, yani en son tarihli kaydı değil ilk tarihli kaydı güncel yapıyor. Parametreleri ne kadar değiştirdiysem sonuç alamadım. "Last" ı "First" yapım, "Next" yaptım, "Previous" yaptım. Her zaman eski tarihli kaydı güncel yapıyor. Nerede hata yapıyorum sizce?

Şimdiden teşekkürler

11, Şubat, 2019 Tip and Tricks kategorisinde HulusiNeci (5,520 puan) tarafından soruldu

4 Cevaplar

+3 oy
 
En İyi Cevap

Belkide kayit yapma formunuzu degistirmenizde fayda vardir.

Portala kayit girisini diger portal uzerinden degilde global bir form uzerinden yapmanizi oneririm. Ornegin Card window veya popover penceresi icerisine portalinizdaki dolduracaginiz alanlar yerine global alanlar kullaniniz. Bu form doldurulduktan sonra "Kaydet" buttonuna tiklandiktan sonra portal layoutuna script araciligi ile yeni kayit olarak ekletiniz.

Eger form doldururken kullanicinin aklina esip vaz gececek olursa, kaydet scriptiniz cagrilmadigi icin onceki verilerinizde degismemis olacaktir.

 

Portal veri onayi ornek Dosya

http://filemakerturk.com/?qa=blob&qa_blobid=5943372082272875232

11, Şubat, 2019 Hamit Özsönmez (56,720 puan) tarafından cevaplandı
16, Şubat, 2019 Recep Güney tarafından seçilmiş
son zamanlarda biz de bu yöntemi benimsedik, blog sitesine bir örnek dosya koyduk bununla ilgili olarak: http://www.filemakerdestek.com/2017/06/21/scriptler-ile-kaydet-vazgec-kontrolu/
Aynen sizinde ornek calismanizdaki kullandiginiz yontemin kullanilmasini oneririm.

Hatta bu yontemi Yeni kayitlarin yani sira duzenleme islemleri icinde kullanilabilinir. Duzenleme islemi icin tabii ki kayittaki veriler global alana set edilmesi gerekmekte. Ama sonraki prosedur ayni :)
örnek hem yeni hem düzenle için çalışıyor. global alana da ihtiyaç yok esasında. triger'larla commit işlemini kontrol ediyoruz.
Revert Record/Request script adimi ilede tabii ki mumkun yeni kayiti ve duzenlemeleri gecersiz kilmak icin
Osman abi pardon :)
Ben de globalciyim...
Osman hoca'nın gonderdiği linki inceliyorum. Açıklama, arayüz, örnek v.s. çok güzel olmuş. Elinize sağlık.

Detaylı inceledikten sonra bir yorum yazarım ama aklımda bir fikir var bu formla ilgili sizin düşüncelerinizi almak isterim.

İster bir layoutun içinde olsun isterde bir portal'ın içinde olsun; Bir "onay" fieldi oluştursak. Bu "onay" field'i 0 ve 1 değerini alsa. Bu alan zorunlu olsa. Bu alan gizli olsa yani layoutun içinde doldurulamasa. Bu alanın doldurulmasını layout içerisinde bir butonun içindeki script üzerinden sağlasak. Böylece ne olacak; Layout içerisinde kaydet tuşuna basmadan o kayıtta bir alan eksik kalacak ve kayıt eklenmemiş olacak. Biz bu arada scripte başka şeyler de ekleyebiliriz. Bize kalmış. Böylece bir form oluşturmadan bir "kaydet" butonu kullanmış olmaz mıyız? Ben aslında bunu yapmaya çalışıyordum ta ki yazdığım script istediğim şeyi yapma konusunda problem çıkartana kadar. Tecrübeli hocalarımın düşüncelerini almak isterim.
Ana mesajimin icerisine bahsettiginiz gibi bir portala veri girme ve veri onaylatma uzerine bir dosya yuklettim.
+1 oy
Scripti debugger ile çalıştırmayı denediniz mi?
11, Şubat, 2019 F. Osman Cabi (200,340 puan) tarafından cevaplandı
+1 oy

Yeni bir kayıt yaratıyor olabilir misiniz!...

 

Edit [ Boş Alan Kontrol  ]; resim

11, Şubat, 2019 Recep Güney (70,020 puan) tarafından cevaplandı
11, Şubat, 2019 Recep Güney tarafından düzenlendi
Yeni bir kayıt yaratmış olsa portalda yaratılan yeni kayıt görüntülenir. Script aslında çalışıyor ama yanlış portal satırını seçiyor.
Custom dialog'daki buttonunuzdaki Commit'ten olabilir mi?
0 oy
Değerli üyeler,

Problemin kaynağını çözdüm. Sizinle de paylaşayım.

Obje adını yanlış yazıyormuşum. Malum filemaker field adını, tablo adını yanlış yazınca hata mesajı veriyor. Ama obje adını yanlış yazınca hiçbir şekilde hata mesajı vermiyor. Obje adında isim hatası yaptığınızda uyarı vermeden çalışmaya devam ediyor portal içerisindeki yanlış portal satırını seçiyor.

Aslında bu da filemakeri "Bug"ı. Git bak objeyi ara. Obje yoksa yok böyle bir obje de, di mi?

Neyse. Bu arada tabi sizlerden başka şeyler öğrendim. Hamit Hocanin yöntemi bana biraz karışık geldi. Var olan ilişki ağına yeni ilişkiler daha eklemek gerekiyor.

Osman hocanın yöntemi güzel ama scriptte çözemediğim bazı yerler var. if ile başlayan bir condition satırı var ama ortada bir conditiion yok. Script çalıştığına göre yanlış birşey yoktur, ben henüz anlayamıyorumdur. Öğrenmeye devam :) Selamlar...
14, Şubat, 2019 HulusiNeci (5,520 puan) tarafından cevaplandı
Bug değil!

Script Debugger'da incelerseniz "Error  [ 116 ] Layout Object is Missing" hatası verdiğini görürsünüz.
Teşekkürler,

Ama şuna da "bug" diyemesek bile bir eksiklik diyemez miyiz? Bir tablo adını değiştirdiğimizde ya da bir field adını değiştirdiğimizde bu tablo adının ve fieldin geçtiği tüm scriptler güncelleniyor. Ama bir objenin adını değiştirdiğimizde o objenin adının geçtiği scriptler güncellenmiyor.
Dediğiniz gibi product ideas kısmına ekledim. teşekkürler
debugger meetup'umuzda verdiğimiz örnek de görünmeyen hatalarla ilgiliydi, bugün youtube'a yüklüyoruz inşallah.
...