iptal butonu
Tarih
20/04/2009 01:38
Konu Sahibi
RkNxSR
Yorumlar
7
Okunma
2733
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy



RkNxSR
Üye
Kullanici Avatari
Üye
7
1
19/04/2009
0
Belirtilmemiş
Ofis 2007
28/04/2009,01:02
Çözüldü 
öncelikle merhaba
forumda access'in otomatik kaydetme sorunuyla ilgili yardım ararken şu başlıkla karşılaştım
"http://www.accesstr.net/konu-kaydet-butonu-hk.html"
gerçektende tam istediğim çözümü verdi. konu kilitli olduğundan teşekkür faslı buraya kaldı Img-grin

benim sorunum yine bu konu ile ilgili. bu başlık altında verilen örnek dosyada (ilgili sayfada kaydet.zip içinde) bir veri değişikliği sonrası form kapatılmak istendiğinde uyarı bilgisi geliyor (değişiklik kaydedilsin mi diye). buraya kadar herşey güzel. ancak bu uyarıda iki seçenek var "Yes ve No". ben birde Cancel butonu istiyorum. bu seçenektede, çıkış iptal olsun ve form'a veri girişi kalındığı yerden devam etsin. VB kodlarıyla aram pek yok (hiç yok Img-grin ). örneği incelemeyle butonu eklemeyi başardım Img-grin ama ne yazıkki bir işe yaramıyor Img-grin tıkladığımda değişikliği kaydetmiş ve formu kapatmış oluyor. özetle MsgBox da cancel butonum olsun ama işede yarasın Img-grin
Şimdiden teşekkürler.
RkNxSR, 19-04-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla


tdsharun
>>> O Şimdi Sivil<<<
Kullanici Avatari
Aktif Üye
778
06/11/2008
225
Kütahya
Ofis 2003
31/12/2011,02:16
Çözüldü 
Anladığım kadarıyla bahsettiğiniz kodlar şunlar:

Kod:
1
2
3
4
5
6
If NewRecord = False Then 
If MsgBox("Kayıtlarda değişiklik görüldü, değişiklik kaydedilsin mi?", vbInformation + vbYesNo, "Onay") = vbNo Then
DoCmd.RunCommand acCmdUndo

End If
End If


Burda iki seçenek var. Gelin önce bunların ne demek olduğuna ve ne yaptıklarına bir bakalım:

Evet: Değişikliği kaydetmesi için onay veririz.
Hayır: Değişikliği geri alır. Yapılan değişiklik onaylanmaz. Peki, onaylanmadığı zaman ne yapar? DoCmd.RunCommand acCmdUndo komutu en son yapılan değişiklikleri geri alır.

Sizin bahsettiğiniz ise 3 seçenekli. Siz 3 seçeneğin 3'ünde de farklı bir olay kullanmak istiyorsanız yapı tamamen değişmeli. Kodlama bilmiyorum diyorsunuz. Size bunu anlatmak çok zor olacak. Yine de bir deneyelim...

Sizin bahsettiğiniz yapı için gerekli olan yapı şu şekilde:

Kod:
1
2
3
4
5
6
7
8
9
10
Select Case MsgBox("Kayıtlarda değişiklik görüldü, değişiklik kaydedilsin mi?", vbYesNoCancel Or vbQuestion Or vbDefaultButton1, "Kaydedilsin mi?")

    Case vbYes
DoCmd.RunCommand acCmdSave
    Case vbNo
DoCmd.RunCommand acCmdUndo
    Case vbCancel
    ad.SetFocus
    Exit Sub
End Select


Select Case (Durum Seç) komutu bu şekilde kullanılır. 3 farklı durum olduğu için 3 ihtimalden seçime göre işlem yaptırmaya yarar.

Hemen bu arada bir noktayı özellikle hatırlatmakta fayda var: Sizin örnek verdiğiniz uygulama olan kaydet.zip dosyasındaki örnekte kapat butonunun olayında DoCmd.Close var. Yani formu kapatma olayı var. Form kapatılmadan önce ise Formun Güncelleştiğinde olayına yazılmış bu kodlar. Formu kapatmaya çalıştığınızda formda bir güncelleme varsa bu İletişim kutusu çıkıyor. Eğer siz de aynı yöntemi kullanıyorsanız bu sizin için doğru bir yöntem olmayacaktır. Çünkü bu kodlarda da evet ve hayır kullanılabilirken iptal için girdiğiniz kod kullanılamayacaktır. Çünkü form kapanmaktadır. Ben bu nedenle soyad alanının güncelleştirme sonrasında olayına yaptım bu kodları... Bu noktaya dikkat edin...

Şimdi 3 ihtimale tek tek bakalım:

vbYes: DoCmd.RunCommand acCmdSave diyerek kaydetmesini sağladık.
vbNo: DoCmd.RunCommand acCmdUndo diyerek geri almasını sağladık.
vbCancel: Güncellenen alandan bir önceki alan olan "ad" alanına ad.SetFocus diyerek odaklanmasını sağladık ve Exit Sub diyerek döngüden çıkmasını sağladık. Güncellenen alana odaklanamaz. Bunun için güncellenen alana değil, başka bir alana odaklandık.

Örnek olmadan anca bu kadar anlatabilirim. Siz bu anlattıklarım doğrultusunda yapmaya çalışın. Eğer yapamayacak olursanız da örneğinizi ekleyin. Örnek üzerinden anlatmaya çalışalım...

Kolay gelsin...

Cevapla


RkNxSR
Üye
Kullanici Avatari
Üye
7
1
19/04/2009
0
Belirtilmemiş
Ofis 2007
28/04/2009,01:02
Çözüldü 
Çok teşekkürler hocam, anlattığınız kodların mantığını anladığımı düşünüyorum.
Ancak uygulama kısmında bir sorun yaşıyorum. dediğiniz gibi deneme amaçlı, önceki (kapanma öncesi form güncelleme) kodlarını kaldırdım ve sizin verdiğiniz kodu "film adı güncelleştirme sonrasına" ekledim. beklendiği gibi uyarı msgbox ekrana geliyor, "yes ve no" seçenekleri düzgün çalışıyor ancak "cancel" seçildiğinde "Run-time error 424... Object required" hatası veriyor. hatayı incelediğimde "ad.setFocus" komutu sarı renkle işaretlenmiş oluyor.
Acaba tools menusunden bir reference mi yüklemem gerekli? bende öyle bir fikir olustu.

Ayrıca bu şekilde her text bölgesi için "güncelleştirme sonrası" diye kod eklemek, kod kalabalığına neden olmaz mı?

Yine de her ihtimale karşın ben hazırladığım programı ekledim, eski haliyle.

Bu arada aklıma gelmişken daha önce hazırladığım bir formda "sonraki kayda git" tuşuna tıklandığında en sonda boş (veri girilmeye hazır) bir sayfa oluşmuyordu. Ancak bu denememde ne yaparsam yapayım bu duruma engel olamadım (en sonda boş bir sayfa geliyor). daha önce ne yaptığımı da bir türlü hatırlayamadım. Yardımı olursanız çok sevinicem.

Son olarak konuyla pek alakalı değil ama merak ettiğimden ve çalıştığım programda olmasını hayal ettiğimden... access'de resim ekelemek gibi (bu programdaki gibi yalnızca adresi saklanıp), video eklemek ve görüntülemek mümkün müdür?

Şimdiden teşekkürler
RkNxSR, 19-04-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla


tdsharun
>>> O Şimdi Sivil<<<
Kullanici Avatari
Aktif Üye
778
06/11/2008
225
Kütahya
Ofis 2003
31/12/2011,02:16
Çözüldü 

Kod:
vbCancel: Güncellenen alandan bir önceki alan olan "ad" alanına ad.SetFocus diyerek odaklanmasını sağladık ve Exit Sub diyerek döngüden çıkmasını sağladık. Güncellenen alana odaklanamaz. Bunun için güncellenen alana değil, başka bir alana odaklandık.


Hata veren ad.SetFocus ile ilgili açıklamayı okumamışsınız. Sizin örnek olarak verdiğiniz kaydet.zip dosyasından çıkan kaydet.mdb dosyasındaki formda iki alan vardı. Biri ad, diğeri soyad... Ben de soyad alının güncelleştirme sonrasında olayına o kodları yazdım ve ad alanına odaklanmasını sağladım. Yani iptal'e bastığınızda döngüyü başa aldım. Siz de bunu kendinize göre düzelteceksiniz. Formunuzdaki alanlardan herhangi birine odaklayacaksınız. Mesela, Deneme.SetFocus

Her text bölgesine yapmayın. Hatta text alanlarına bile yapmayın. Formun Güncelleştirme Sonrasında olayına koymanız bile yeterlidir. O ad.SetFocus bölümünü de film_adı_orijinal.SetFocus olarak değiştirin mesela...

Yalnız, bunlardan daha ziyade, İptal tuşunun bir işlevi olmalı. Siz sadece hiçbir şey yapmasın diyorsunuz. Hiçbir şey yapmaması ne demek? Hiçbir şey yapmasın derseniz kod "son yapılan değişikliği kabul et ve öyle bırak" olarak çalışacaktır. Mesela Evet/Hayır mesaj kutusunda Evet'i tıklayınca kaydediyor. Hayır'ı tıklayınca ise son yapılan değişiklikleri geri alıyor. Peki İptal'i tıklayınca ne olacak? Forma veri girişi kaldığı yerder devam edecekse, o zaman forma geri döndürmemiz lazım. Bunun için de bir alana odaklanmalı ve o alandan devam etmeli... Ha, tabi burda bi noktayı unutmayın: Eğer forma geri döndürülmenize rağmen hiçbir değişiklik yapmadan son yapılan değişikliklerle sonraki kayda falan geçecek olursanız bu defa uyarı almazsınız...

Lütfen dikkatle okuyun...

Kolay gelsin...


Diğer sorularınız için de lütfen forumumuzda arama yapın. O sorularınızın hepsinin cevabı daha önce defalarca verildi...
Cevapla


RkNxSR
Üye
Kullanici Avatari
Üye
7
1
19/04/2009
0
Belirtilmemiş
Ofis 2007
28/04/2009,01:02
Çözüldü 
"ad." konusuyla ilgili olarak çok özür dilerim. ne akla hizmet bilmiyorum ama, ben onu çok farklı yerlere yordum. sanırım bunda saatlerdir bu programla uğraşmam yatıyor.

iptal butonu için... aslında istediğim tam olarak "uyarı msgbox kapansın ve form u kapatma işlemi dursun". şöyle anlatmak daha kolay sanırım. nasıl ki bir metin editöründe yazının ortasında programı kapatmak istersiniz ve bir uyarı menusu gelir. "değişiklikleri kaydetmek istiyormusunuz" (evet, hayır ve iptal seçenekleriyle) diye ve iptal e tıkladığınızda çıkış (programı kapatma) talebiniz iptal edilir ve siz yazmaya devam edersiniz, aynen bu şekilde çalışan bir cancel butonuydu amacım. sanırım olduğu kadar demek daha iyi olucak, sonuçta amatör bir çalışma.

yardım ettiğiniz için çok teşekkür ederim, iyi çalışmalar.
RkNxSR, 19-04-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla


tdsharun
>>> O Şimdi Sivil<<<
Kullanici Avatari
Aktif Üye
778
06/11/2008
225
Kütahya
Ofis 2003
31/12/2011,02:16
Çözüldü 
Zaten anlattığım da tam olarak sizin istediğiniz şey...

İptal butonuna tıklayınca yaptığı tek şey belli bir alana odaklanıp işlemi sonlandırmak. Son yapılan işlemi geri almadan, herhangi bir değişiklik yapmadan formdaki bir alana odaklanarak işleme kaldığı yerden devam etmek...

Lütfen anlattıklarım doğrultusunda birkaç deneme yapın...

NOT: Bir şeyi öğrenmeden yapmaya çalışmak doğal olarak çok zordur. Bu sebeple size Access Dersleri bölümümüzü incelemenizi tavsiye ediyorum...
Cevapla







Konuyu Okuyanlar: 1 Ziyaretçi


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
  Kayıt bul veya kimlik numarasına git butonu yapmak okumas 16 396 25/10/2016, 09:25 okumas
  form kapatma butonu hata mesajı koruyucu 7 328 27/08/2016, 00:05 koruyucu
  ESC Butonu Hakkında notrino 9 373 14/06/2016, 19:38 notrino
  Formu boşalt butonu ankaram 8 605 08/05/2016, 12:06 atoz112
Çözüldü Kayıt Butonu ile verileri tablloya kaydetmek elmariachi 8 678 04/02/2016, 00:34 elmariachi


Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2016 MyBB Group.
DMCA.com Protection Status
© Desing by XSTYLED| Develops by ozanakkaya