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
						

Veri Kaydını Sadece "KAYDET"Butonuna Bağlamak İçin Ne Yapmalıyım ?

+2 oy
3,800 kez görüntülendi
Otomatik kaydetmesin ve Ben Kaydet butonuna basmadan kaydetmesin.
27, Şubat, 2015 Filemaker Advanced kategorisinde Mehmetblg (42,390 puan) tarafından soruldu

6 Cevaplar

+3 oy
 
En İyi Cevap

Evet arkadaşlar öncelikle bu işlem için 3 adet script'e ihtiyacımız var.

1) KAYIT KONTROL

2) KAYDET

3) KAYDETMEDEN KAPAT

Layout setup içerisinde Save record changes automatically işaretli olmalıdır.

KAYIT KONTROL scriptini, Layout setup>Script Triggers>OnRecordCommit olayına bağlıyoruz.

GENEL: KAYIT KONTROL

If [ Get ( RecordOpenState ) ≠ 0 ]

If [ $$KAYIT=1 ]

Commit Records/Requests

[ Skip data entry validation; No dialog ]

Else

Halt Script

End If

End If

Layot'un içerisine Bir adet kaydet ve bir adet te kapat butonu ekliyoruz.

Kaydet buton setuptan KAYDET GENEL scriptini, Kapat buton setuptan KAPAT GENEL scriptini atıyoruz.

GENEL: KAYDET GENEL

Allow User Abort [ Off ]

Set Variable [ $$KAYIT; Value:1 ]

Commit Records/Requests

[ Skip data entry validation; No dialog ]

Set Variable [ $$KAYIT; Value:0 ]

GENEL: KAPAT GENEL

If [ $$KAYIT=0 and (Get ( RecordOpenState ) = 2 or Get ( RecordOpenState ) = 1) ]

Show Custom Dialog [ Title: "Uyarı"; Message: "Fişi kaydetmek ister misiniz ?"; Default Button: “İptal”, Commit: “No”; Button 2: “Kaydetme” , Commit: “No”; Button 3: “Kaydet” , Commit:

“No” ]

If [ Get ( LastMessageChoice )=2 ]

Revert Record/Request

[ No dialog ]

Close Window [ Current Window ]

Set Variable [ $$KAYIT ; Value:0 ]

Else If [ Get ( LastMessageChoice )=3 ]

Set Variable [ $$KAYIT ; Value:1 ]

Commit Records/Requests

[ Skip data entry validation; No dialog ]

Close Window [ Current Window ]

Set Variable [ $$KAYIT ; Value:0 ]

Else

Halt Script

End If

Else

Close Window [ Current Window ]

Set Variable [ $$KAYIT; Value:0 ]

End If

 

UMARIM FAYDALI OLUR ARKADAŞLAR.

27, Şubat, 2015 mkanlioglu (63,270 puan) tarafından cevaplandı
27, Şubat, 2015 Mehmet KAYA tarafından seçilmiş
Teşekkür ederim.
Fakat bu App uygulamasında düzgün çalışmaz. iwp ve php için geçerli.
Şuan aktif olarak kullanılmakta. Hatta bir örnek göndereyim gün içerisinde.
Commit Records/Requests App alandan çıktığınızda yapar. Bu komuta gerek yok App da. Formu db gönder reverd gibi bir komutta formu göndermeyi iptal eder.
Pek anlayamadım göksel bey bir örnek var ise gönderebilir misiniz ?
Revert Record/Request yolu ile bende calistim ancak hangi cozumler icin bunu kullandigimiza bagli.

Ornegin 1 kerelik kayitin yapilacagi islemlerde sorunsuz calisacaktir ancak kayit yapildiktan sonra 1den fazla degisikliklerin yapilacagi duzenlemelerde bu Revert Record/Request sorun cikaracaktir ve 2ci veya 3cu degisikligi iptal ettigimizde kayitin ilk yapildigi verileri geri getirecektir. Dolayisi ile duzenlemeleri kaydet dedigimizde 1 onceki konuma geri getirmede Revert Record/Request isimize yaramayacaktir.

Ama tek seferlik yapilan kayitlari iptal etmede kullanmakta problemsiz calisacaktir.

Saygilar.
Arkadaşlar tüm yazılımlarda kaydetme mantığı budur. İster 1 defa değişiklik yapın ister 10 defa fark etmez. Herhangi bir kaydı açtığınız da o kayıt üzerinde değişiklik yapmaya başladığınızda kaç tane alan olursa olsun sistem Get ( RecordOpenState ) komutu ile kayıtta değişiklik olup olmadığını algılar. Mantık şudur: kayıtta herhangi bir değişiklik yaptığınız anda sistem sanki o kayıtta bir oturum açar gibi bir düzenleme oturumu açar ve eski halini hafızada tutar, ta ki siz kaydet butonuna basana veya vazgeç butonuna basana kadar. Eğer ki farklı bir durum anlatmaya çalıştıysanız bilemiyorum. Yorumlarınızdan anlayabildiğim kadarı ile cevap vermeye çalıştım sürç-i lisan ettiysek af ola :)
Teşekkürler.Tam olarak kendileri :)
Örnek gelirse seviniriz :)
Sayın MehmetBilgi göndermiş olduğum yetki örneğinin içerisinde mevcut :)
oo indirdim kontrol ettim yorum yaptım bile :P
Değişik örnekler gelirse hayır demeyiz yani :)
Sorunsuz çalışıyordur umarım :)
Ben alacağımı aldım :) teşekkürler
+2 oy
Böyle bir özellik vardı sanırım tam emin değilim. Ben bu gibi durumlarda ayrı bir form yapıp oarada işlem yaptırıyorum. Kaydete tıklanırsa değerleri değişkene atayıp sayfaya kaydediyor ama bu durum hassas sayfalarda kullanıyorum. Excutesql kullanılması durumlarında herşey okeyse kaydet butonu çalışıyor kullanıcı hataları engelleniyor.
27, Şubat, 2015 Goksel_Gokce (98,530 puan) tarafından cevaplandı
Teşekkür ederim
aslında bu söylediğinizi daha önce yapmıştık Mehmet Kaya Bey'le

Fakat "Kaydet"butonu göze daha hoş geliyor ve daha kullanışlı gibi geldi bana.Çünkü büyük yazılımlarda hep bu şekilde gördüm ben.Ondan dolayı bu şekilde yapmak istedim.
Nasıl bir yazılım geliştiriyorsunuz?
Çalıştığım Yerde Safa Eğitim Vakfı,Verenel Yardımlaşma Derneği,Yeni Dünya Dergisi Var.Tüm kurumlar aynı çatı altında.Dolayısıyla yapılacak iş ve malzeme çok :) Halihazırda yapmayı planladığım 6 adet program var.Fakat şu an verenel derneğimize yeni site hazırlanıyor.Taktir edersiniz ki yardım derneklerinde Gönüllülük iş birliği çok önemli.Bundan dolayı da bir veri tabanı lazım oldu.Bir form hazırladık bu formu kağıda bastırdık ve dağıtacağız.Gelen bilgileri de veritabanımıza işlememiz gerek.İstediğimiz zaman istediğimiz bilgilere ulaşabilmek için.Birde aynı formu derneğimizin sitesine de koyacağız.Siteden doldurulan bilgilerin de otomatik olarak veritabanımıza yazdırılması vs gibi işlemler var.İş çok :)
php & mysql ile uğraşıcaksınız yani
Evet öyle gözüküyor :)
Odbc üzerindenmi çekeceksiniz dataları
Hayır.Mysql üzerinden olacak.
Kaydet Butonu (script hatası)
+1 oy

Bu tur islemler ancak script ile mumkun.

Bahsettiginiz ozellige sahip bir yazilim istenildigi durumda ben su sekilde yapiyorum.

Bu islem icin genelde global tablodan faydalaniyorum.

Global tablo icerisindeki butun fieldlerimiz global ozelligine sahip olmasi gerekmekte.

Varsayalim bir musteri kayiti yapilacak.

Yeni kayit buttonuna tiklandiginda asamalarim sirasiyla su sekilde.

  1. Global tablo icerisinde alanlarin icerigini her ihtimal icin sifirliyorum. Bunun icin script icerisinde ornegin Set Field[alan ismi; ""] seklinde global tablo icerisindeki global alanlarimi bosaltiyorum
  2. Kayit icin girmek istedigim verileri giriyorum
  3. Kayit Et buttonuna tikladigimda verileri $variable icerisine ekletiyorum. Ornegin Set Variable [$musteriismi; Value:"GlobalField_Alanismi"] seklinde.
  4. Variable larimi doldurduktan sonra Musteri kayitlarinin yapilacagi layouta gidiyorum ve oraya yeni kayit yapip daha sonra Set Field[Musteri ismi; $musteriismi] seklinde tek tek variable dan verileri alanlara aktartiyoruz.

Bu sekilde yeni bir kayiti sadece biz kaydet dedigimiz zaman kayit edilmesini mumkun etmis oluruz.

Eger muvcut bir kayiti duzenlemek istiyorsak bu kez yukaridaki anlatilimi biraz farkli sekilde tekrarlamamiz gerekir.

Mevcut kayitin duzenlenmesi gerektiginde oncelikle Musteri tablosundaki kayiti global tablomuza aktarmamiz gerekmekte. Bu adimdan sonra yukaridaki yeni kayittaki islemler aynen gecerlidir. Eger kaydet yerine iptal et dedigimizde sistem icerisinde bir islemin yapilmasina gerek yok. cunki duzenlenilen veri global tablosu icerisinde oldugu icin musteriler tablosu uzerindeki hic bir verimiz degistirilmemis olarak kalacaktir.

Saygilar.

27, Şubat, 2015 Hamit Özsönmez (56,720 puan) tarafından cevaplandı
Teşekkür ederim
+1 oy
Arkadaşlar normalde bildiğiniz üzere filemaker da kayıtlar otomatik kayıt edilmekte. Bu otomatik kayıt işlemleride layout setup ayarlarında bulunmakta.(Save record changes automatically). Fakat bu seçeneği kaldırdığımız zaman sanki pek verim alamıyoruz gibi boş bir yere tıkladığımızda sistem hemen kaydetmemişsiniz diye uyarı veriyor. Benimde bununla ilgili bir çözümüm var. Hiç global tablo yapmadan yapılıyor. Birkaç script ile işlemi hallediyoruz.

Hazırlığımı yapayım birazdan paylaşacağım.
27, Şubat, 2015 mkanlioglu (63,270 puan) tarafından cevaplandı
+1 oy

Merhaba arkadaşlar kullanıcı yetkilendirme için hazırladığım örnek çalışmanın içerisine Kaydet butonu çalışmasını da ekledim. Yanlışlık veya eksiklik olabilir. Birlikte tamamlayabiliriz.

Değerli yorumlarınızı bekliyorum.

Kullanıcı adı : admin

Şifre : 123

Örnek dosyayı indirmek için tıklayınız.

Link yenilenmiştir.

27, Şubat, 2015 mkanlioglu (63,270 puan) tarafından cevaplandı
10, Nisan, 2015 mkanlioglu tarafından düzenlendi
bu arkadaş kullanıcı adı ve şifre istiyor :)
Haklısınız bu arkadaş nasıl arkadaş yaw :)
Kaydet Butonu Güzel.İstediğim buydu.
Kullanıcı Yetki Modülünde Standart FileMaker privilege set'i kullanmışsınız zannediyorum.Güzel bence.
Biraz inceledim gerçekten filemaker kullanıcı yetkisi konusunda mükemmel.Programcıyı Sadece iyi planlama ve gayret in kollarına atmış :)
Omit record üzerinden yapmışsın. Bunu düşünmemiştim :)
Bilgi paylaşmak içindir :)
Şimdi inceleme fırsatım oldu. Eğer kayıtlarınıza otoartan bir kayıt numarası veriyorsanız, yöntem sıkıntı çıkarır. Örneğin : Yeni kayıt dediniz ve sistem size bir kayıt üretti sonrada kaydetmeden çıktınız.  Otomatik artan değer database tarafından üretildi bir sonraki kaydın nosu 7 alması gerekirken 8 diye üretecektir. Arada kayıt no eksiklikleri oluşacaktır.
Çok kullanıcılı sistemlerde olabilir evet. Çözümüde basit artan numara vermeyi kaydet butonunun içerisine koyarız olur biter :)
+1 oy
12, Haziran, 2016 Nuri Özbilenler (19,230 puan) tarafından cevaplandı
kontrol ettim :)

elinize sağlık güzel olmuş.fakat burada ufak bir sıkıntı oluyor o da şu;

bir tablo üzerinde ilişki ile konulmuş bir portal olduğunda sistem sadece portaldaki kaydı sildi,adı soyadı kısmını silmedi.

yaptığım işlem;

bir tablo daha açtım adı "data" burada da malzeme adı ve adet field ları açıp sizin "geri alma tablonuza ilişki ile bağlayıp portal olarak ekledim."

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