Skip to main content

AccessTr.neT


Liste kutusu işlem yapma ekleme silme de sorun

Liste kutusu işlem yapma ekleme silme de sorun

#1
Herkese kolay gelsin. Ekte URUN_GRUBU formun ekleme silme işlemleri yapıyorum fakat ekleme veya silme yapınca yeni kayıdı listede görmek veya görmemek için formdan çıkmam ve bir daha girmem gerekiyor. Yaptığım ekleme veya silme işleminin sonucunu listede hemen nasıl görebilirim. Teşekkürler.
.rar nightashes.28112016.rar (Dosya Boyutu: 24,35 KB | İndirme Sayısı: 8)
Cevapla
#2
Butonları eklerken karşınıza çıkan sihirbazı kullanmayın. Eğer kullanırsanız katıştırılmış makro ile işlemler yapılır. Bu hem debug ile hata işlemlerini gözlemlemede zorluk yapar hem sonraki Access versiyonlarında sorun çıkartabilir. Bundan dolayı butonlarınıza Vba kodları ile işlem yaptırmanız daha doğru olacaktır.

Ben makro ile değil cevabı Vba kodu ile vermiş olayım. Bir işlem sonrasında bir denetimin kaynağı olan sorguyu tekrar çalıştırmak için:


Visual Basic Code
Me.lst_urungrubu.Requery


demeniz yeterlidir. Bu kodu bir butonun tıklanma olayına yazabilirsiniz.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#3
(28/11/2016 21:07)alpeki99 Adlı Kullanıcıdan Alıntı: Butonları eklerken karşınıza çıkan sihirbazı kullanmayın. Eğer kullanırsanız katıştırılmış makro ile işlemler yapılır. Bu hem debug ile hata işlemlerini gözlemlemede zorluk yapar hem sonraki Access versiyonlarında sorun çıkartabilir. Bundan dolayı butonlarınıza Vba kodları ile işlem yaptırmanız daha doğru olacaktır.

Ben makro ile değil cevabı Vba kodu ile vermiş olayım. Bir işlem sonrasında bir denetimin kaynağı olan sorguyu tekrar çalıştırmak için:


Visual Basic Code
Me.lst_urungrubu.Requery


demeniz yeterlidir. Bu kodu bir butonun tıklanma olayına yazabilirsiniz.

Fakat sihirbazı kullanmadan yaparsam direk VB ye girmiş olurum sanırım ve yeterli bilgim yok ve sizlerin başını daha çok ağrıtmak istemiyorum.

Verdiğiniz kodu her button un tıklama olayı dolu olduğu için yapamadım. Başka nasıl yapabilirim acaba?
Cevapla
#4
Vb ile kod yazmadan bu işlerin içinden çıkamazsınız. Hatasız, hızlı, versiyonlar arası en az uyum sorunu için Vb kodu şart. Ben size tüm butonlar için örnek kodları yazacağım bunları tecrübe edin, takıldığınız yeri sorun.

Öncelikle liste kutusunun özelliklerinden Veri sekmesi Denetim Kaynağı alanındaki yazıları silmelisiniz. Liste kutusunun değerleri zaten hemen bir alttaki Satır Kaynağı alanındaki Sql sorgusundan geliyor.

Yeni butonunun tıklanma olayı:

Visual Basic Code
Private Sub btn_yeni_Click()

    ' Yeni bir kayıt için hazır ol
    DoCmd.GoToRecord , , acNewRec
    
    ' Ürün grubu yazmak için kutuya odaklan
    Me.mtn_urungrubu.SetFocus

End Sub


Kaydet butonunun tıklanma olayı:

Visual Basic Code
Private Sub btn_ekle_Click()

    ' Kaydet
    DoCmd.RunCommand acCmdSaveRecord
    
    ' Listeyi Yenile
    Me.lst_urungrubu.Requery
    
    ' Yeni bir kayıt için hazır ol
    DoCmd.GoToRecord , , acNewRec
    
    ' Ürün grubu yazmak için kutuya odaklan
    Me.mtn_urungrubu.SetFocus

End Sub


Liste kutusunun tıklanma olayı:

Visual Basic Code
Private Sub lst_urungrubu_Click()

' Kayıtları tutacak bir değişken tanımlıyoruz ve ismine rs diyoruz
Dim rs As Object

  ' rs değişkenine değerleri bu formun kayıtlarını atadık
  Set rs = Me.Recordset.Clone
  
  ' rs içinde formdaki kayıtlar vardı. Bu kayıtlar içinde arama yapacağız ve ilk bulduğumuzu filtreleme için kullanacağız.
  ' Filtrelemek istediğimiz alan adı tablodaki Otomatik Sayı olan alan adı yani Kimlik
  ' Kimlik = liste kutusunda Kimlik değeri hangi sütunda ise o kolonun indeksi
  rs.FindFirst "[Kimlik]=" & Me.lst_urungrubu.Column(0)
  
  ' Eğer son kayıt değilse bu formun bookmarkı ile seçilen kaydın bookmarkı aynı olsun yani kayıt gösterilsin
  If Not rs.EOF Then Me.Bookmark = rs.Bookmark

End Sub


Kayıt silme butonunun tıklanma olayı:

Visual Basic Code
Private Sub btn_sil_Click()

    ' Silme işleminden önce kullancıdan onay isteyelim. Eğer evet butonuna basacak olursa alta dallanacak ve kodları uygulayacak
    If MsgBox("Bu kayıt geri döndürülemeyecek şekilde silinecek." & vbCrLf & vbCrLf & "Bu işlemi yapmak istediğinize emin misiniz?", vbQuestion + vbYesNo, "Uyarı") = vbYes Then
    
        ' Accessin kayıt silme uyarısını pasif yapalım çünkü biz üstteki satırda zaten onay aldık
        DoCmd.SetWarnings False
        
        ' kayıt silme komutu
        DoCmd.RunCommand acCmdDeleteRecord
        
        ' listeyi yenile
        Me.lst_urungrubu.Requery
        
        ' yeni kayıta git
        DoCmd.GoToRecord , , acNewRec
        
        ' ürün kodu yazmak için metin kutusuna odaklan
        Me.mtn_urungrubu.SetFocus
        
        ' kapattığımız uyarıları tekrar aktif ettik
        DoCmd.SetWarnings True
    
    End If

End Sub


Bu şekilde işlemlerinizi gerçekleştirebilirsiniz.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#5
(28/11/2016 22:07)alpeki99 Adlı Kullanıcıdan Alıntı: Vb ile kod yazmadan bu işlerin içinden çıkamazsınız. Hatasız, hızlı, versiyonlar arası en az uyum sorunu için Vb kodu şart. Ben size tüm butonlar için örnek kodları yazacağım bunları tecrübe edin, takıldığınız yeri sorun.

Öncelikle liste kutusunun özelliklerinden Veri sekmesi Denetim Kaynağı alanındaki yazıları silmelisiniz. Liste kutusunun değerleri zaten hemen bir alttaki Satır Kaynağı alanındaki Sql sorgusundan geliyor.

Yeni butonunun tıklanma olayı:

Visual Basic Code
Private Sub btn_yeni_Click()

    ' Yeni bir kayıt için hazır ol
    DoCmd.GoToRecord , , acNewRec
    
    ' Ürün grubu yazmak için kutuya odaklan
    Me.mtn_urungrubu.SetFocus

End Sub


Kaydet butonunun tıklanma olayı:

Visual Basic Code
Private Sub btn_ekle_Click()

    ' Kaydet
    DoCmd.RunCommand acCmdSaveRecord
    
    ' Listeyi Yenile
    Me.lst_urungrubu.Requery
    
    ' Yeni bir kayıt için hazır ol
    DoCmd.GoToRecord , , acNewRec
    
    ' Ürün grubu yazmak için kutuya odaklan
    Me.mtn_urungrubu.SetFocus

End Sub


Liste kutusunun tıklanma olayı:

Visual Basic Code
Private Sub lst_urungrubu_Click()

' Kayıtları tutacak bir değişken tanımlıyoruz ve ismine rs diyoruz
Dim rs As Object

  ' rs değişkenine değerleri bu formun kayıtlarını atadık
  Set rs = Me.Recordset.Clone
  
  ' rs içinde formdaki kayıtlar vardı. Bu kayıtlar içinde arama yapacağız ve ilk bulduğumuzu filtreleme için kullanacağız.
  ' Filtrelemek istediğimiz alan adı tablodaki Otomatik Sayı olan alan adı yani Kimlik
  ' Kimlik = liste kutusunda Kimlik değeri hangi sütunda ise o kolonun indeksi
  rs.FindFirst "[Kimlik]=" & Me.lst_urungrubu.Column(0)
  
  ' Eğer son kayıt değilse bu formun bookmarkı ile seçilen kaydın bookmarkı aynı olsun yani kayıt gösterilsin
  If Not rs.EOF Then Me.Bookmark = rs.Bookmark

End Sub


Kayıt silme butonunun tıklanma olayı:

Visual Basic Code
Private Sub btn_sil_Click()

    ' Silme işleminden önce kullancıdan onay isteyelim. Eğer evet butonuna basacak olursa alta dallanacak ve kodları uygulayacak
    If MsgBox("Bu kayıt geri döndürülemeyecek şekilde silinecek." & vbCrLf & vbCrLf & "Bu işlemi yapmak istediğinize emin misiniz?", vbQuestion + vbYesNo, "Uyarı") = vbYes Then
    
        ' Accessin kayıt silme uyarısını pasif yapalım çünkü biz üstteki satırda zaten onay aldık
        DoCmd.SetWarnings False
        
        ' kayıt silme komutu
        DoCmd.RunCommand acCmdDeleteRecord
        
        ' listeyi yenile
        Me.lst_urungrubu.Requery
        
        ' yeni kayıta git
        DoCmd.GoToRecord , , acNewRec
        
        ' ürün kodu yazmak için metin kutusuna odaklan
        Me.mtn_urungrubu.SetFocus
        
        ' kapattığımız uyarıları tekrar aktif ettik
        DoCmd.SetWarnings True
    
    End If

End Sub


Bu şekilde işlemlerinizi gerçekleştirebilirsiniz.

Verdiğiniz örnekleme ve aydınlatıcı tavsiyeler için teşekkür ederim. Bir tane formda denedim hepsini tek tek ufak tefek hatalar verdi ama sonunda mantığı az çok anladım sanırım yada ben öyle umuyorum. Şimdi elimde bir sürü form var ve için için yanıyorum Icon_rolleyes Hepsini tek tek değiştirmek zorunda kalacağım. Genede emin olmak için sorayım bütün formlarda bu şekilde mi yapmalıyım?

Sorunumda tam olarak giderildi bu sayede. Tekrar teşekkürler.
Cevapla
#6
Şimdi vermiş olduğunuz kodlar ile butonları tekrar düzenlemeye başladım. TANIM_DOVIZ ve TANIM_KDV formlarında başarılı bir şekilde uygulayabildim fakat TANIM_OLCU formunda hata alıyorum sebebi nedir acaba?
.rar nightashes.28112016_c.rar (Dosya Boyutu: 35,44 KB | İndirme Sayısı: 17)
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da