Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
Ekte gönderdiğim formun en üstünde bulunan 4 lü options butonlu seçeneğin sadece 2 seçeneği çalıştıra biliorum 4 lüsü için yardım ederseniz sevinirim.Şimdiden teşekkürler...
Koyduğunuz butonlarda sorun yok, yazdığınız kod'da sorun var.
Öncelikle, kodunuzu BeforeUpdate event'ına yazmışsınız, AfterUpdate evet'ına yazmalısınız, yani Güncelleştirmeden önce değil sonra olmalı.
Sizin yazdığınız kod şu şekilde:
Private Sub SayacDurumu_BeforeUpdate(Cancel As Integer)
'Me.SAYAC_DURUMU = IIf(SayacDurumu = 1, "Kesik", "Açık")
End Sub
Bu durumda 1 durumunda "Kesik", diğer durumlarda, yani 2, 3 ve 4 nolu seçeneklerde de "Açık" sonucu çıkar.
Bu kodları silip, SayacDurumu nun AfterUpdate event'ına şu şekilde yazın.
Private Sub SayacDurumu_AfterUpdate()
Select Case Me.SayacDurumu
Case 1
Me.SAYAC_DURUMU = "Kesik"
Case 2
Me.SAYAC_DURUMU = "Açık"
Case 3
Me.SAYAC_DURUMU = "Arızalı"
Case 4
Me.SAYAC_DURUMU = "Çalışır"
End Select
End Sub
Sanırım Access'in ingilizce versiyonunu kullanıyorsunuz.
Onun için ingilizceye göre anlatayım.
Bir tabloya veya sorguya bağlı olan formlarda,
TextBox, OptionGroup, ComboBox gibi object'ler 2 türlü kullanılabilir.
Bound ve UnBound, yani form'un bağlı olduğu tablodaki kayıtlara bağımlı
veya bağımsız.
Bağlama işinide ControlSource özelliği ile yapıyoruz.
Abone No, Adı Soyadı gibi TextBox'lar ControlSource ile kayıtlara bağlı.
Yani kayıtlar değiştikçe bu objectlerin değerleri de otomatikman değişir.
Ama sizin kullandığınız SayacDurumu adlı OptionGroup'un ControlSource'unda
kayıt adı belirtilmediği için Unbound yani formun kayıtlarından bağımsız.
Dolayısıyla kayıtlar değişse de o alan değişmiyor. Bu da normal.
Burada klasik bir tasarım hatası yapmışsınız.
SAYAC_DURUMU adlı TextBox'ı tablodaki "SAYAC_DURUMU" adlı kayda bağlamışsınız ancak SayacDurumu adındaki OptionGroup bağlı değil.
Dolayısıyla siz tabloda direkt olarak "Açık","Kesik" gibi açıklamaları saklıyorsunuz. Aslında 1,2,3,4 değerlerini saklamalısınız.
Böyle de çalışır tabii ki, bi sorun olmaz ama veritabanı mantığına ters.
Ancak tabii ki keyif sizin, istediğiniz gibi saklarsınız ancak örnekteki
gibi OptionGroup'lar ile sorunlar yaşarsınız, veritabanınızda gereksiz yere büyür, daha fazla yer kaplar vs..
Yapmanız gereken, Tablodaki SAYAC_DURUMU alanını Text değil, number yapmak, field size ise byte olmalı. Formda ise bu alanı,
SAYAC_DURUMU adlı TextBox'a değil, SayacDurumu adlı OptionGroup'a bağlayın.
Her kayıtta değişmesi için de Form_Current() event'ına
After Update'ki kodu yazmalısınız (aslında yazmaya çalışmışsınız)
veya direkt AfterUpdate fonksiyonunu da çağırabilirsiniz.
Private Sub Form_Current()
Select Case Me.SayacDurumu
Case 1
Me.SAYAC_DURUMU = "Kesik"
Case 2
Me.SAYAC_DURUMU = "Açık"
Case 3
Me.SAYAC_DURUMU = "Arızalı"
Case 4
Me.SAYAC_DURUMU = "Çalışır"
End Select
End Sub
veya
Private Sub Form_Current()
SayacDurumu_AfterUpdate
End Sub
Şimdi dikkatimi çekti, tabii yeni kayıtlarda değer boş geleceği için, Durumun da
boş gelmesi için kodları şu şekilde değiştirin.
Select Case Me.SayacDurumu
Case 1
Me.SAYAC_DURUMU = "Kesik"
Case 2
Me.SAYAC_DURUMU = "Açık"
Case 3
Me.SAYAC_DURUMU = "Arızalı"
Case 4
Me.SAYAC_DURUMU = "Çalışır"
Case Else
Me.SAYAC_DURUMU = ""
End Select
Şimdi örneğinizi inceledikçe başka alanlarda da aynı durum olduğunu görüyorum.
Özellikle sonucu Evet/Hayır olan alanlarda dediklerimi uygulamalısınız.
Bu alanlar için DataType olarak Yes/No kullanabilirsiniz.
Formlarda checkbox'lar ile daha rahat kullanabilirsiniz.
Select Case Me.SAYAC_DURUMU
Case "Kesik"
Me.SayacDurumu = 1
Case "Açık"
Me.SayacDurumu = 2
Case "Arızalı"
Me.SayacDurumu = 3
Case "Çalışır"
Me.SayacDurumu = 4
End Select
Sizlere daha iyi bir deneyim sunabilmek icin sitemizde çerez konumlandırmaktayız, web sitemizi kullanmaya devam ettiğinizde çerezler ile toplanan kişisel verileriniz Veri Politikamız / Bilgilendirmelerimizde belirtilen amaçlar ve yöntemlerle mevzuatına uygun olarak kullanılacaktır.