Checkbox Güncelleme ve Temizleme

  • Konuyu başlatan Konuyu başlatan ilyas25
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

ilyas25

Kullanıcı
Katkı: %0
Değerli hocalarım ekte paylaştığım Formda Checkboxlar vardır.
Kaydetme,Silme ve Güncelleme işlemini Textbox ve Comboboxlarla yapabiliyorum.
Ancak Checkboxlarlada kaydetme işlemini azda olsa yapabildim.
Benim sizden ricam
Formda Güncelleme yaparken Checkboxlarıda günceleyebilim birdeListbox çift tıklama yaparken verileri textboxlara aktardığı gibi Checkboxlara
aynı şekilde aktarmasını istiyorum. Kaydetme sırasında hangi Checkboxlı işaretli olarak kaydetmişsem
çift tıklamada da aynı şekilde göstersin (seçsin).
Temizle yaparken checkboxlarıda temizlesin.

Kısacası Checkbox konusunda ilk defa işlem yaptığım için işin içinden çıkamadım.

Şimdiden teşekkür ederim hocalarıma.
 

Ekli dosyalar

Çözüm
Merhaba, paylaştığınız formdaki sorunun kaynağı tek bir noktada: CheckBox durumları sayfaya "KART AKTİF" gibi bir metin olarak yazılıyor, çift tıklamada ise aynı metin doğrudan CheckBox.Value özelliğine atanıyor. Bu özellik yalnız True, False veya Null kabul ettiği için metin verildiğinde hata bile vermez; değer Null'a düşer ve kutu işaretlenmez. İkinci sorun, Kaydet ile Güncelle prosedürlerinin farklı sütun haritası kullanması: G sütunundan sonrası birer sütun kayıyor. Aşağıdaki kod kaydetme, güncelleme, çift tıklama ve temizlemeyi tek haritaya bağlıyor.

Kod:
Bu kodu görmek için giriş yapmanız gerekmektedir (3 satır). Giriş Yap
Merhaba, paylaştığınız formdaki sorunun kaynağı tek bir noktada: CheckBox durumları sayfaya "KART AKTİF" gibi bir metin olarak yazılıyor, çift tıklamada ise aynı metin doğrudan CheckBox.Value özelliğine atanıyor. Bu özellik yalnız True, False veya Null kabul ettiği için metin verildiğinde hata bile vermez; değer Null'a düşer ve kutu işaretlenmez. İkinci sorun, Kaydet ile Güncelle prosedürlerinin farklı sütun haritası kullanması: G sütunundan sonrası birer sütun kayıyor. Aşağıdaki kod kaydetme, güncelleme, çift tıklama ve temizlemeyi tek haritaya bağlıyor.

Kod:
Bu kodu görmek için giriş yapmanız gerekmektedir (151 satır). Giriş Yap

Kod nasıl çalışır?
  1. ChkTanim: Tek tanım tablosudur. Sekiz kutunun Veri sayfasındaki sütunu (G, I, K, M, O, Q, S, T) ve ikili durum yazıları yalnız burada durur; bir yazıyı değiştirmek için tek yere dokunmak yeterlidir.
  2. ChkMetin: Kutunun durumunu sayfaya yazılacak metne çevirir. İşaretliyse "İPTAL EDİLDİ", değilse "KART AKTİF" döner. Kaydet ve Güncelle bunu kullanır.
  3. ChkKur: Ters yönde çalışır; hücredeki metni True veya False'a çevirir, Caption ve ForeColor'ı da birlikte ayarlar. Boş hücre ile "işaretsiz" metni işaretsiz, bunların dışındaki her metin işaretli sayılır. Bu sayede S sütununda "SİLİNDİ" yazan eski kayıtlar da doğru okunur.
  4. SatirYaz: Kaydet ile Güncelle artık aynı sütun haritasını kullanır. Mevcut Güncelle kodu G sütununa TextBox6'yı, H sütununa CheckBox1 yazısını koyduğu için kart numarası DURUM sütununa, durum yazısı KART sütununa gidiyordu; on iki sütun kayıyordu.
  5. Çift tıklama: Sütun indeksleri sıfır tabanlı olarak düzeltildi. TextBox6 artık 7. indeksten, CheckBox1 ise 6. indeksten okur; sekiz kutu da ChkKur ile doldurulur. Aynı atamayı tekrar eden For X döngüsü kaldırıldı.
  6. TEMIZLE: TextBox1 ile TextBox11, ComboBox1 ve sekiz CheckBox birlikte temizlenir; kutuların yazısı ve rengi varsayılan hâline döner. Mevcut döngü 16'ya kadar gittiği için formda bulunmayan CheckBox9'da hata veriyordu.
  7. Satır denetimi: Güncelle'de listede seçim yokken ListIndex değeri -1 olur ve satır 1'e, yani başlık satırına yazılırdı. Artık uyarı verilip çıkılır.

Notlar
  • Kodu UserForm1'in kod penceresine yapıştırmanız yeterlidir. Mevcut CommandButton1_Click, CommandButton2_Click, ListBox1_DblClick ve TEMIZLE prosedürlerini silip yerine bunları koymanız gerekir; CheckBox1_Click ile CheckBox8_Click prosedürlerine dokunmanıza gerek yoktur.
  • Çift tıklama olayındaki Controls("checkbox" & a - 5) = IIf(ListBox1.Column(a) = 1, 0) satırının tamamen kaldırılması gerekir. IIf üç bağımsız değişken ister ve formda CheckBox9 ile CheckBox15 bulunmaz.
  • Durum sütunları bundan sonra yalnız iki metinden birini taşır. S sütununda "SİLİNDİ" yazan satırlar bir kez güncellendiğinde "PLAKA SİLİNDİ" olarak standartlaşır.
  • Satır eşlemesi liste sırasına dayanır (ListIndex + 2). Veri sayfası elle sıralanırsa bu eşleme bozulur; o durumda satırın A sütunundaki ID üzerinden Match ile bulunması gerekir.
  • Modüle Option Explicit eklenmedi; mevcut TextBox2_Change içindeki KeyCode gibi bildirilmemiş değişkenler buna izin vermiyor.
  • TEMIZLE şu anda Güncelle'nin sonunda çağrılıyor. Ayrı bir temizleme düğmesi eklemek isterseniz düğmenin Click olayından TEMIZLE çağrılması yeterlidir.
 
Çözüm
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst