ID ile Getirilen Form Kaydını Yerinde Güncelleme

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

darknwade

Kullanıcı
Katkı: %0
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhabalar,
Yaptığım form üzerinde beyaz alan hücrelere giriş yaparak veri tabanı sayfasına kaydetme işlemini sağlamaktayım.
Bu kaydettiğim dosyaları daha sonra görüntelemek için B33 Hücresine ID yazarak geri listeletebiliyorum fakat bilgi güncellemek istediğimde veri tabanı üzerinden yapmak zorunda kalıyorum bunu yapabilmek için ID numarası ile dosyayı güncelleyebilirmiyim.
 

Ekli dosyalar

Çözüm
Merhaba, güncelleme için kayıt makrosunu ikinci kez yazmaya gerek yoktur. Mevcut Kaydet kodu, yazacağı satırı parametre olarak alacak biçimde küçük bir değişiklikle ortak hâle getirilir: yeni kayıtta son satırın altına, güncellemede ise B33'teki ID'nin bulunduğu satıra yazar.

Module1'deki mevcut Kaydet kodunda şu dört değişiklik yapılır:
  1. Sub Kaydet() satırı Private Sub KaydiYaz(ByVal HedefSatir As Long) olarak değiştirilir.
  2. LastRow = LastRow + 1 satırının hemen altına If HedefSatir > 0 Then LastRow = HedefSatir satırı eklenir.
  3. sh2.Cells(LastRow, 1) = LastRow - 1 satırı If HedefSatir = 0 Then sh2.Cells(LastRow, 1) = LastRow - 1 olarak değiştirilir; böylece güncellemede ID değişmez.
  4. Sondaki mesajda "Sıra No = " & LastRow...
Merhaba, güncelleme için kayıt makrosunu ikinci kez yazmaya gerek yoktur. Mevcut Kaydet kodu, yazacağı satırı parametre olarak alacak biçimde küçük bir değişiklikle ortak hâle getirilir: yeni kayıtta son satırın altına, güncellemede ise B33'teki ID'nin bulunduğu satıra yazar.

Module1'deki mevcut Kaydet kodunda şu dört değişiklik yapılır:
  1. Sub Kaydet() satırı Private Sub KaydiYaz(ByVal HedefSatir As Long) olarak değiştirilir.
  2. LastRow = LastRow + 1 satırının hemen altına If HedefSatir > 0 Then LastRow = HedefSatir satırı eklenir.
  3. sh2.Cells(LastRow, 1) = LastRow - 1 satırı If HedefSatir = 0 Then sh2.Cells(LastRow, 1) = LastRow - 1 olarak değiştirilir; böylece güncellemede ID değişmez.
  4. Sondaki mesajda "Sıra No = " & LastRow - 1 & "" yerine "Sıra No = " & sh2.Cells(LastRow, 1).Value yazılır.
Ardından aynı modülün en altına şu iki makro eklenir:
Kod:
Bu kodu görmek için giriş yapmanız gerekmektedir (21 satır). Giriş Yap
Kod nasıl çalışır?
  1. Kaydet düğmesi eskisi gibi Kaydet makrosuna bağlı kalır; KaydiYaz 0 çağrısı yeni kaydı son satırın altına ekler.
  2. Guncelle makrosu B33'teki ID'yi yalnız Veri Tabanı sayfasının A sütununda, tam eşleşmeyle arar.
  3. Kayıt bulunursa onay sorulur; Evet seçildiğinde formdaki bütün alanlar Kaydet'teki aynı sütun eşlemesiyle o satırın üzerine yazılır, yeni satır açılmaz.
  4. Kaydet'teki zorunlu alan kontrolleri güncellemede de çalışır; eksik alan varsa satıra dokunulmaz.
Notlar
  • Kullanım sırası: B33'e ID yazılır, Listele ile kayıt forma getirilir, değişiklikler yapılır ve Guncelle çalıştırılır. Formda ayrı bir düğmeye sağ tık > Makro Ata ile Guncelle atanabilir.
  • Listele makrosu B33'teki değeri sayfanın bütün hücrelerinde aradığı için aynı sayı başka bir sütunda da geçiyorsa forma farklı bir kayıt gelebilir ve Guncelle bu bilgileri ID satırının üzerine yazar. Bunu önlemek için Listele'deki LastFindRow = sh2.Cells.Find( ifadesi LastFindRow = sh2.Columns(1).Find( olarak değiştirilmelidir; böylece arama da yalnız A sütununda yapılır.
  • GR sütunu (200. sütun) kayıt zamanını tuttuğu için güncellemede güncelleme saatiyle yenilenir. İlk kayıt zamanının korunması isteniyorsa sh2.Cells(LastRow, 200) = Now satırı If HedefSatir = 0 Then sh2.Cells(LastRow, 200) = Now olarak değiştirilebilir.
  • Değişiklikten önce dosyanın bir yedeğinin alınması önerilir.
 
Çözüm
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst