(28/11/2016, 22:07)alpeki99 yazdı: 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ı:
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ı:
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ı:
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ı:
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 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.