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.[
attachment=25917]
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:
Me.lst_urungrubu.Requery
demeniz yeterlidir. Bu kodu bir butonun tıklanma olayına yazabilirsiniz.
(28/11/2016, 21:07)alpeki99 yazdı: [ -> ]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:
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?
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.
(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.
Ş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?[
attachment=25920]