AccessTr.neT
Parametreli sorguyu VBA içinden çalıştırmak - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Dersleri (https://accesstr.net/forum-access-dersleri.html)
+--- Konu Başlığı: Parametreli sorguyu VBA içinden çalıştırmak (/konu-parametreli-sorguyu-vba-icinden-calistirmak.html)



Parametreli sorguyu VBA içinden çalıştırmak - WiniFred - 20/11/2011

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

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ş:

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.


Cvp: Parametreli sorguyu VBA içinden çalıştırmak - ozanakkaya - 20/11/2011

Paylaşım için teşekkürler. Konu Access Dersleri bölümüne taşınmıştır.


Cvp: Parametreli sorguyu VBA içinden çalıştırmak - WiniFred - 22/11/2011

Yukarıdaki mesajımdaki Vba koduna aşağıdaki kodu ekleyerek güncelledim.

qdf.Close
Set qdf=Nothing



Cvp: Parametreli sorguyu VBA içinden çalıştırmak - 208319 - 26/11/2011

paylaşım için çok teşekkürler


Cvp: Parametreli sorguyu VBA içinden çalıştırmak - WiniFred - 30/05/2015

İ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...


RE: Parametreli sorguyu VBA içinden çalıştırmak - bibib - 01/10/2020

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-currentdb-querydefs-sorguda-olusturulan-degerleri-cagiramiyorum-hata-aliyorum.html