Açılır Kutuda Mükerrer kayıt önleme

26/09/2012, 16:48

saglikci_salih

İyi Günler Arkadaşlar bir konuda engin bilgilerinizden yararlanmak istedim. Müsadeniz olursa. Benim Aile Hekimleri için yapmış olduğum bir form var ve bu formda ayarlar sekmesinde dönem Açılır kutusu var ve bu kutudan kayıt yapılacak dönem seciliyor.bu dönemler değer listesi olarak vb kodları ile yapılıyor.yalnız Aile hekimi bu dönemlerden daha önce kaydettiği dönemi secerse uyarı vermesini ve kaydı geri almasını istedim fakat olmadı mükerrer kayıt kodu

If donem = Dlookup ("[donem]", "[tblana]", "[donem]=forms![frmanaek]!donem") Then
MsgBox "Bu ay daha önce Girilmiştir. Lütfen tekrar deneyiniz!", vbCritical, "Dikkat"
me.undo
End If
bu kod açılan kutuda bir işe yaramıyor daha doğrusu undo kodu işe yaramıyor.tabloya boş kayıt atıyor ben ise boş kayıt atmasını önlemek için formu sildirme sonra kapatıp yeniden açtırma kodu yazdım ama bu seferde aynı dönemi sectiğinde form uyarı verip bu dönem daha önce girilmiştir. mesajını verip kapatıp geri açması buda biraz sıkıcı oluyor. metin kutusu olsa iş tamamda combobox olunca iş değişiyor. ya secilen dönem acılan kutuda gözükmüyecek yada aynı dönemi sectiğinde uyarı verip o döneme odaklanıp yeni bir dönem seçmesini sağlamam gerekiyor. Bu konuda ne yapabilirim. Hangi kod uygun olur bu duruma çünkü aynı durum ölüm formunda ay ve yıl konusu içinde gecerli hadi onları bir nebze hallettim ama bu dönem açılır kutusu tamamen formun ana elemanı herşey onda bitiyor.id bile önemli değil benim için dönem kadar yardımlarınızı bekliyorum. teşekkürler Mesai bittiği için şimdilik offline olacağım kusura bakmayın 1 saate evde olurum.
26/09/2012, 18:21

ozanakkaya

mevzuyu tam anladım mı bilmiyorum
donem açılan kutusunun güncelleştirme öncesinde olayına yazdığın kodu silip güncelleştirme sonrasındaki olayına aşağıdaki kodu ekleyip deneyebilir misin?
If donem = Dlookup ("[donem]", "[tblana]", "[donem]=forms![frmanaek]!donem") Then
MsgBox "Bu ay daha önce Girilmiştir. Lütfen tekrar deneyiniz!", vbCritical, "Dikkat"
DoCmd.RunCommand acCmdUndo
Else
Me.ahidifk = "050401"
Me.ahadisoyadi = "DR.LÜTFİ BOZKURT"
Me.aseadisoyadi = "HATEM LAÇİN"
Me.aseunvani = "ASE"
Me.ailesagmerkezi = "GÜMÜŞHACIKÖY"
Me.tarih = Date
End If
26/09/2012, 21:31

saglikci_salih

hocam gec cevabım için kusura bakmayın çocuğunuz varsa anlarsınız yok okuldan al markete git bu saat oldu eve geldim bilgisayarı actım sizin verdiğiniz kodları hemen yerlerine ekledim lakin geri alma kodu kayıtı geri alıyor ama ıd yide sildiği icin yeni dönem secsenizde yeni kayıtı komple sildiğinden kayıt olmuyor.zaten geri alma komutu altformları geri almadığı için sorun çıkarıyor. benim bütün derdim burada.yeni kayıt yapmıyor.yeni kayıt tuşuna bastığınızda tuş kendini kapattığı için yeni kayıt tuşuna basamıyoruz. kaydet desek kaydetmiyor.şöyle bir yol izlesem olurmu dönemi seçtiğimde dönemi başka bir metin kutusuna atıp o metin kutusu üzerinden işlem yapsam olurmu yoksa kullanışsızmı olur.ne dersiniz
26/09/2012, 23:30

ozanakkaya

Uygulamanızdaki işlemleri çözmeye çalıştım.
Yeni kayıt eklerken daha önce kaydedilen bir dönem seçildiğinde uyarı veriyor ve id alanını siliyordu.
Aşağıdaki kodu kullanarak birkaç deneme yaptım, sorun çıkmadı. Umarım yaptığım deneme doğrudur.

Private Sub donem_AfterUpdate()

If donem = Dlookup ("[donem]", "[tblana]", "[donem]=forms![frmanaek]!donem") Then
MsgBox "Bu ay daha önce Girilmiştir. Lütfen tekrar deneyiniz!", vbCritical, "Dikkat"
Me.Undo
Else
If IsNull(Me.id) Then
Me.id = Nz(DMax("id", "tblana"), 0) + 1
End If
Me.ahidifk = "050401"
Me.ahadisoyadi = "DR.LÜTFİ BOZKURT"
Me.aseadisoyadi = "HATEM LAÇİN"
Me.aseunvani = "ASE"
Me.ailesagmerkezi = "GÜMÜŞHACIKÖY"
Me.tarih = Date
End If
End Sub
27/09/2012, 09:01

saglikci_salih

Teşekkür ederim sayın ozan bey problemimi hallettiniz. Gerçekten pratik bir çözüm.Sağolun