4 seçenekli Options Buton

Katılım
20 Şubat 2008
Mesajlar
32
Excel Vers. ve Dili
Office 2003 Pro Tr
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...
 
Katılım
20 Şubat 2008
Mesajlar
32
Excel Vers. ve Dili
Office 2003 Pro Tr
formun kod kısmında kod yazdım ama o şekilde yanıt veriyor frame taşıdım 2 li attım 4 lü yaptım sanırım kod kısmında bişi var yapmıyor ?
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
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
 
Katılım
20 Şubat 2008
Mesajlar
32
Excel Vers. ve Dili
Office 2003 Pro Tr
evett budur teşekkür ederim .yalnız sayfa atlayınca işaretlediğimiz yazı kalıyor ama seçenekteki tik kalkıorr bu nedendir ?
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
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
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
Ş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
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
Ş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.
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
evett budur teşekkür ederim .yalnız sayfa atlayınca işaretlediğimiz yazı kalıyor ama seçenekteki tik kalkıorr bu nedendir ?
Form ve tablo alanlarını senin yaptığın gibi bırakacaksan,

Form_current kısmındaki
Me.SayacDurumu = IIf(SAYAC_DURUMU = "Kesik", 2, 0)

formülünü değiştirirsen, istediğin gibi çalışır.

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
 
Üst