• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Veritabanından istenen kaydın satırının silinmesi

Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Merhaba arkadaşlar

Ekli dosyada yapmak istediğim şey kısaca şöyle: silmek istediğim kaydı Yetkili Güncelleme sayfasına getireceğim. Kaydı temizle düğmesine bastığımda YETKILI sayfasında bilgilerini getirdiğim satır silinecek (sıra no bozulmadan) ve boşalan satır silinerek veritabanında boş satır kalması önlenecek. Nasıl yapabilirim? Yardımcı olacak arkadaşlarıma şimdiden teşekkür ederim.
 

Ekli dosyalar

Böyle yapmayın.Yetkili sayfanın Sıra nıo yazan yere ID no şeklinde yapın.Bunu o satırda mak fonksiyonunu kullanarak birbirine benzemeyen kayıtlar oluşturabilirsiniz.Ve silineceği zamanda bu ıd noyu girerk silebilirsiniz.Bu şekilde olursa tekrar döngüye girilecek sıra nolar baştan sona tekrar yazılacak.belki ilk başlarda veri az olduğuğ için bunu hssetmessiniz ama veriler 20-30 bine çıktığı zaman bu programı kullanalar bunu yapanda nasıl yapmış derler.Bir programı yaparken en hızlı ve en az kod kullanarak,ve en doğrusunu yapmaktır.yoksa VBA ya excele yük bindirerek onlara hamalık yaptırarkta program yapılabilir.
Benden hatırlatması.Bundan sonrası size kalmış.Kolay gelsin.:cool:
 
Böyle yapmayın.Yetkili sayfanın Sıra nıo yazan yere ID no şeklinde yapın.Bunu o satırda mak fonksiyonunu kullanarak birbirine benzemeyen kayıtlar oluşturabilirsiniz.Ve silineceği zamanda bu ıd noyu girerk silebilirsiniz.Bu şekilde olursa tekrar döngüye girilecek sıra nolar baştan sona tekrar yazılacak.belki ilk başlarda veri az olduğuğ için bunu hssetmessiniz ama veriler 20-30 bine çıktığı zaman bu programı kullanalar bunu yapanda nasıl yapmış derler.Bir programı yaparken en hızlı ve en az kod kullanarak,ve en doğrusunu yapmaktır.yoksa VBA ya excele yük bindirerek onlara hamalık yaptırarkta program yapılabilir.
Benden hatırlatması.Bundan sonrası size kalmış.Kolay gelsin.:cool:

Sayın Evren Gizlen

Önerinizi dikkate alarak şöyle bir soru sorayım. Makrolarımı gördünüz, Yetkili Güncelleme sayfasında Soyadını kullanarak diğer bilgileri sayfaya alıyorum. Aynı sayfada birde ID no kullanırsam bu sorun olmazmı? Sonuçta bu bir telefon rehberi olacak, insanlar konuşacakları kişilerin ID nosuna akıllarında tutamayacaklardır. Bu konuda örnek bir makro verebilirmisiniz acaba? İlginize şimdiden teşekkür ederim.

Not: Telefon rehberi olacağı için en fazla 2000-3000 kayıt olacaktır.
 
ID nolarını zaten insanlar kullanmayacak ki onu siz programınızda kullanacaksınız.Hatta bu ID noları kullanıcıya göstermeyin bile listbox kullanıyorsanız listboxa alın ama sütunu gizleyin .Bu kimsye lazım değil.Bu programcıya lazım.Bir karışıklık olmasın diye.Ama tel no danda belki arama yapabilirsiniz,onda belki mükerrer kayıt olmayacaksa.Yinede bu sıralama işindeki sıra noları tekrardan yazmak pek iyi bir fikir değil.:cool:
 
ID nolarını zaten insanlar kullanmayacak ki onu siz programınızda kullanacaksınız.Hatta bu ID noları kullanıcıya göstermeyin bile listbox kullanıyorsanız listboxa alın ama sütunu gizleyin .Bu kimsye lazım değil.Bu programcıya lazım.Bir karışıklık olmasın diye.Ama tel no danda belki arama yapabilirsiniz,onda belki mükerrer kayıt olmayacaksa.Yinede bu sıralama işindeki sıra noları tekrardan yazmak pek iyi bir fikir değil.:cool:

şimdi anladım, OK dediğiniz gibi yapacağım. Ama bir soruma hala cevap alamadım. Yetkili güncelleme sayfasında sayfa her değiştiğinde aşağıdaki kod çalışıyor. Kaydet dediğim zamanda "Güncelle" koduyla kaydediyor. Ben bu formatta sizin söylediğiniz gibi silme işlemini yapacak makroyu beceremedim. Bu konuda yardımcı olursanız sevinirim.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [b10]) Is Nothing Then Exit Sub
Set s1 = Sheets("Yetkili Güncelleme")
Set s2 = Sheets("YETKILI")

With s2.Range("e4:e10000")
Set bul = .Find(s1.[b10].Value, LookIn:=xlValues, LookAt:=xlWhole)
If Not bul Is Nothing Then
s1.Range("b2,b4,b6,b8,b12,e2,e4,e6,e8,e10").ClearContents

s1.[b2].Value = s2.Cells(bul.Row, "a")
s1.[b4].Value = s2.Cells(bul.Row, "b")
s1.[b6].Value = s2.Cells(bul.Row, "c")
s1.[b8].Value = s2.Cells(bul.Row, "d")
s1.[b10].Value = s2.Cells(bul.Row, "e")
s1.[b12].Value = s2.Cells(bul.Row, "g")

s1.[e2].Value = s2.Cells(bul.Row, "h")
s1.[e4].Value = s2.Cells(bul.Row, "ı")
s1.[e6].Value = s2.Cells(bul.Row, "j")
s1.[e8].Value = s2.Cells(bul.Row, "k")
s1.[e10].Value = s2.Cells(bul.Row, "l")
's1.[e12].Value = s2.Cells(bul.Row, "m")
Else
MsgBox "Aradığınız Kayıt Bulunamadı", vbInformation, "Bilgi"
s1.[b10].Select
End If
End With

Set bul = Nothing
Set s1 = Nothing
Set s2 = Nothing
End Sub

Sub Güncelle()
Set s1 = Sheets("Yetkili Güncelleme")
Set s2 = Sheets("YETKILI")

With s2.Range("e4:e10000")
Set bul = .Find(s1.[b10].Value, LookIn:=xlValues, LookAt:=xlWhole)
If Not bul Is Nothing Then

s2.Cells(bul.Row, "a") = s1.[b2].Value
s2.Cells(bul.Row, "b") = s1.[b4].Value
s2.Cells(bul.Row, "c") = s1.[b6].Value
s2.Cells(bul.Row, "d") = s1.[b8].Value
s2.Cells(bul.Row, "e") = s1.[b10].Value
s2.Cells(bul.Row, "g") = s1.[b12].Value

s2.Cells(bul.Row, "h") = s1.[e2].Value
s2.Cells(bul.Row, "ı") = s1.[e4].Value
s2.Cells(bul.Row, "j") = s1.[e6].Value
s2.Cells(bul.Row, "k") = s1.[e8].Value
s2.Cells(bul.Row, "l") = s1.[e10].Value
's2.Cells(bul.Row, "m") = s1.[e12].Value
s1.Range("b2,b4,b6,b8,b12,e2,e4,e6,e8,e10").ClearContents
Else
MsgBox "Güncellenecek Kayıt Bulunamadı", vbInformation, "Bilgi"
s1.[b10].Select
End If
End With

Set bul = Nothing
Set s1 = Nothing
Set s2 = Nothing
End Sub
 
aşağıdaki gibi bir kod yazdım, sizce uygunmudur?

Not: denemesini yaptım çalıştı. ancak sıra no verirken bir sorun olurmu acaba?

Sub KaydıSil()
If MsgBox("Veri silinecek eminmisiniz..!", vbYesNo + vbInformation) = vbNo Then Exit Sub
ActiveSheet.Unprotect
If Range("b10") = "" Then
MsgBox "Önce silinecek ismi seçmelisiniz.", vbInformation
Exit Sub
End If
Sheets("YETKILI").Select
For sut = 1 To [e65536].End(xlUp).Row
If Range("e" & sut) Like Sheets("Yetkili Güncelleme").Range("b10") Then
Range("a" & sut & ":l" & sut).Delete shift:=xlUp
End If
Next
Sheets("Yetkili Güncelleme").Select
Range("B4:B12").ClearContents
Range("E2:E12").ClearContents
End Sub
 
For döngüsünü kullanacaksanız aşağıda kırmızı renkli veridiğim koduda ekleyin.Ama ben size bu for döngüsünü tavsiye etmiyorum.Find kullanırsanız kodlarınız bununla kıyaslanmayacak kadar çok hızlı çalışcaktır.
Kod:
If Range("e" & sut) Like Sheets("Yetkili Güncelleme").Range("b10") Then
Range("a" & sut & ":l" & sut).Delete shift:=xlUp
[B][COLOR="Red"]exit for[/COLOR][/B]
End If
 
Birde şunu diyecem niye kişinin ID nosuna göre silme yapmıyorsunuz.ID noyu niye yaptınız bunun için.:cool:
 
Birde şunu diyecem niye kişinin ID nosuna göre silme yapmıyorsunuz.ID noyu niye yaptınız bunun için.:cool:

işte onun mantığını kuramadım ya zaten :) sizden yardım etmenizi istediğim find komutunu ve ID noyu kullanarak bu işi nasıl yapıyorsunuz?

diğer söylediğiniz düzeltmeyi yaptım, teşekkür ederim.
 
Geri
Üst