Skip to main content

AccessTr.neT


Parametreli sorguyu VBA içinden çalıştırmak

WiniFred
WiniFred
5
5187

Parametreli sorguyu VBA içinden çalıştırmak

#1
Merhaba,
Bunu daha önce ben forumda sormuştum. Cevap sorguyu Vba içine almak yöntemi olarak gelmişti. Şimdi bir kez daha ihtiyacım oldu ve biraz daha araştırınca çözümü buldum.

Diyelim ki bir sorgu hazırladınız. Bu sorgu bir formdan parametre alıyor. Bu sorguyu Vba içine almakla uğraşmak istemiyorsunuz ama Vba içinden çalıştırmak istiyorsunuz. Bildiğimiz yöntemlerle yapınca, yani

Visual Basic Code
Set rs=CurrentDb.OpenRecordset("Sorgu")


yöntemiyle yapınca Çok az parametre.1 bekleniyor gibi bir hata veriyor.

Parametreli sorguları Vba içinden çalıştırmak için şöyle bir yöntem izlemek gerekiyormuş:

Visual Basic Code
Private Sub YardimTuru_Change()
Dim qdf As QueryDef
Dim rs As Recordset

On Error GoTo hata
 
 Set qdf = CurrentDb.QueryDefs("AyrilisYardimiHesaplamaSorgusu")
 
 qdf![Forms!GenelForm!Sicil] = Forms![GenelForm]![Sicil]
 
 Set rs = qdf.OpenRecordset()
 
 YardimTutari = rs("Net Ödenen")
 
 rs.Close
 Set rs = Nothing

qdf.Close
Set qdf=Nothing
 
 Exit Sub
 
hata:
 MsgBox "HATA OLUŞTU!-" & Err.Number & "-" & Err.Description, vbCritical, "Hata"

End Sub

İhtiyacı olanlar için eklemek istedim.
Saygılarımla...

Edit:
Bir örnek ekledim. umarım anlaşılır olmuştur.

.rar QuerydefOrnek.rar (Dosya Boyutu: 17,22 KB | İndirme Sayısı: 91)
Son Düzenleme: 22/11/2011, 21:35, Düzenleyen: WiniFred.
Cevapla
#2
Paylaşım için teşekkürler. Konu Access Dersleri bölümüne taşınmıştır.
"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
#3
Yukarıdaki mesajımdaki Vba koduna aşağıdaki kodu ekleyerek güncelledim.

Visual Basic Code
qdf.Close
Set qdf=Nothing

Cevapla
#4
paylaşım için çok teşekkürler
Cevapla
#5
İlk mesajımda access'te hazırladığımız bir parametreli SELECT sorgusunu Vba içinde recordsete nasıl alabileceğimiz konusunda örnek vermiştim.

Şimdi ise access'te hazırladığımız parametreli INSERT, UPDATE veya DELETE sorgularını Vba içinden nasıl çalıştırabileceğimizi buldum ve paylaşmak istedim (forumda daha önce paylaşıldıysa bu mesajım silinebilir).

Bu şekilde yapılırsa, sorguların ileride daha kolay incelenip düzenlenebilme ihtimali var. İhtimal diyorum çünkü biliyorsunuz access'te hazırlanan sorguların okunabilirliği sıkıntılı oluyor. Uzun ve karmaşık bir sorguysa içinden çıkmak çok zor olabiliyor.

sonuçta yeni bir yöntem öğrenmenin zararı yok, kim hangi yöntemi isterse onu kullanır  Shy

Ben örneği INSERT sorgusuyla hazırladım ama tabii ki UPDATE ve DELETE sorguları da aynı şekilde çalıştırılabiliyor. Kodumuz şöyle:


Kod:
Private Sub btnKayitEkle_Click()

Dim EtkilenenKayitSayisi As Integer
On Error GoTo hata

   With CurrentDb.QueryDefs("InsertBilgiBankasiKayitEklemeSorgusu")
        .Parameters("ParamSicil") = Me.txtSicil
        .Parameters("ParamAdi") = Me.txtAdi
        .Parameters("ParamSoyadi") = Me.txtSoyadi
        .Parameters("ParamDogumTarihi") = Format(Me.txtDogumTarihi, "mm/dd/yyyy")
        .Parameters("ParamDogumYeri") = Me.txtDogumYeri
        .Execute
        EtkilenenKayitSayisi = .RecordsAffected
   End With

   MsgBox EtkilenenKayitSayisi & " adet kayıt Bilgi Bankası tablosuna eklendi.", vbInformation, "İşlem Tamam"


Exit Sub

hata:
   MsgBox "HATA OLUŞTU-" & Err.Number & "-" & Err.Description, vbCritical, "Hata"

End Sub


Burada RecordsAffected deyimi etkilenen kayıt sayısını döndürüyor. Yani bir UPDATE sorgusunda kaç kayıt güncellendi, DELETE sorgusunda kaç kayıt silindi, INSERT sorgusunda kaç kayıt eklendi ise, ayrıca hesap yapmadan otomatik olarak buradan alabiliyoruz sayıyı.

Saygılarımla...

.rar VBAParametreliSorguOrnekAccess2010.rar (Dosya Boyutu: 25,46 KB | İndirme Sayısı: 29)
Cevapla
#6
ilk mesajınınz da bulunan örneğinizi bende kullandım fakat form içerisinde çalışıtırılan (içiçe form) alt formdan bir değer eşitliyerek benzer olanları çağır deyince aynı hatayı alıyorum alt formdan sorgu çalıştırmak için örneğiniz varmı
https://accesstr.net/konu-set-qdf-curren...yorum.html
Değişimde gelişimde beyinlerin değişmesi ve gelişmesi ile olur. By Bibib
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da