Sayın kouzo,
1)
Alıntı:...Ben aslında "Me.Refresh" komutunu sadece kod içinde "Me.Undo" silince hata vermesin diye eklemiştim...
ifadenize yönelik olarak;
(kısa bir bilgilendirme olması adına)
Me.Refresh komutu:
Mevcut olan kayıt işlemi esnasında veya duruma göre sonrasında,aktif olan kayıt üzerinde kalınmasını sağlamak için Tazeleme yapmak ve o aktif kayıt üzerinde kalmak anlamındadır.
Me.Undo komutu:
Mevcut olan bir kayıt üzerinde iken duruma ve tercihe göre ya kayıt işleminden vazgeçilmesini ve kayıt yapılmamasını sağlamak ya da bir kritere veya bir sonuç durumuna göre edinilen bir veri söz konusu olduğunda bu sonuca göre kayıt işleminden vazgeçilmesini sağlamak için kullanılmaktadır.
Alıntı:...hata vermesin diye eklemiştim...
Hata vermemesinden kast ettiğiniz olası kriter veya durum gelişirse (örneğinizdeki gibi;eğer denetimlerden biri ya da birkaçı boş ise) boş (NULL) hatası vermemesi ya da kod sayfasına yönlendirmemesi için,yapılması gereken;denetime boş (NULL) fonksiyonu yazmakla birlikte mesaj kodunun bir alt satırına Exit Sub kod satırını veya bu kodun da bir üzerine hangi denetim boş ise o denetime odaklanma (.setfocus) ifadesini yazmak yeterlidir.
Alıntı:...Bu sayede undo yaparak formun sıfırlanması engellenmiş oldu...
ifadenize yönelik olarak;
önceki mesajlardaki açıklamalarda da bahsi yapıldığı üzere,sıfırlanma ile kast ettiğiniz id değerinin silinme işlemi olmaksızın bütün denetimlerin boş geçilmeksizin hepsinin doldurulmasını sağlamak.zaten,tüm denetimleri doldurduktan sonra bilerek kayıt silme işlemi olmaksızın direkt olarak id sırasının peşi sıra devam etmesini sağlamış oluyorsunuz.yapılan işlemin özeti bu aslında.
Fakat,yine önceki mesajlardaki açıklamalarda da bahsi geçtiği üzere,bu işlemleri yapmak (kast edilen;tüm denetimleri doldurmak) ile istediğiniz id değerinin kaldığı yerden devam etmesini sağlatmaz.
Aksine,bir ya da birkaç kaydı tablodan kasti olarak silip,akabinde yeni bir kayıt girdiğinizde silinen id değerlerinin sonrasındaki ilk değer ne gelecekse o değerden başlamaya devam eder.örneğin;son kayıt id değeri 10 olsun.fakat,siz,iki kaydı sildiniz.sonrasında,yeni bir kayıt girdiğinizde,yeni kaydın id değeri 11 olur.tüm mesajlarda anlatılmak istenen de bu aslında.
2)
örnek edinmek üzere bağlantısını yazdığınız konu;sizin yapmayı veya olmasını düşündüğünüz sonucu edinmenizi sağlamayacaktır.sizin olmasını istediğinizin aksine,benzer bir işlem gibi görünse de ayrı bir hususa dair bahsi yapılan bir konudur.
O konuda,sayın demiral’ın bahsettikleri husus şu,özetle:otomatik sayı veri türünü içeren tablodaki bu alana dokunmaksızın,yeni bir alan açılıp bu alan üzerinden kayıt sıralaması verdirmek.tercihe göre uygulamada eğer ilişkilendirme kullanılacaksa otomatik sayı veri türü olarak oluşturulan alan üzerinden işlemler sağlanırken,diğer sıralama benzeri işlemlerde ise bu yeni alan üzerinden gerçekleştirilir.
Bu bağlantısı verilen örnek üzerinden bir çalışma yapıldığında,şu ayrıntılara dikkatinizi çekmek gerektiğini de belirtmekte fayda var kanısındayım.
a)
Düşündüğünüz ve istediğiniz gibi otomatik sayı üzerinden bir işlem olmayacaktır.sadece,yeni bir sıralama alanı üzerinden yapılan bir çalışmadır.
b)
Eğer tüm denetimleri doldurma zorunluluğu ve undo işlemi uygulanmayacaksa,örnekteki gibi kullanmanız gerekecektir.yeni alandaki kayıt sırası kaldığı yerden devam edecektir.
c)
Eğer bu mesajdaki 1.maddede örnek vererek bahsi yapıldığı gibi,mevcut kayıtlar içerisinden yine örnek verilecek olunduğunda önceki kayıtlardan bir ya da birkaçı silindiğinde;bu kayıtlar içerisinde herhangi bir yerine sayma veya yerine numara atama gibi bir durum olmayacaktır.
d)
Bağlantısı verilen örnekteki işlemler sadece;mevcut aktif olan bir kayıt üzerinde iken bu kayıt silindikten sonra ya da undo işlemini uygulasanız bile aktif kayıt üzerinde,yeni bir kayıt girildiğinde yeni alan olarak açılan kayıt sayısını gösteren denetimde son kalan değer ne ise bir artırılması demektir.sağlayacağı olumlu sonuç bu olacaktır.
ÖRNEK
Bağlantısı verilen örnek uygulamadaki kod sayfasını açıp, telefonu adlı denetimin ÇIKILDIĞINDA olay yordamını aşağıdaki kodlar ile değiştirdiğinizde dahi;undo komutu ile kaydetmekten vazgeçip sonrasında yeni bir kayıt eklediğinizde,kaldığı yerden devam edecektir.
Kod:
'[enbuyuksayi alt formu].Requery
If MsgBox("İslemi iptal etmek istiyor musunuz?", vbYesNo, "GERİ ALMA UYARISI") = vbYes Then
Cancel = True
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdUndo
DoCmd.SetWarnings True
Me.Requery
Exit Sub
Else
[enbuyuksayi alt formu].Requery
End If
Paylaşılan bilgilendirmelerin faydalı olması temennisi ile.
Son olarak;bahsi yapılmışken,sayın demiral’a bağlantıdaki konusu için teşekkürler.
Bilginize…iyi çalışmalar,saygılar.