Docmd.RunSql Vs. CurrentDb.Execute
#1
access-sql-12 
Merhaba arkadaşlar,

Konu başlığından da anlaşılabileceği gibi bu konumuzda Docmd.RunSql ile CurrentDb.Execute arasındaki farkı inceleyeceğiz.

İlk olarak her iki komut için kısa bir bilgi verelim;

Docmd.RunSql komutu Access arayüzü (interface) ile çalışırken, CurrentDb.Execute komutu Database Engine kullanır. (CurrentDb.Execute komutu DAO komutudur. )

Şimdi de gelin iki komut arasındaki farkları (Aslında bu farkların sebebi CurrentDb.Execute komutunun Database Engine kullanmasından kaynaklanmaktadır. ) kısaca sıralayalım;

1)Docmd.RunSql komutu bir Access komutu olduğundan, otomatik olarak form rapor Vs. kontrollerini algılayabilmektedir. Bu sebepten bu komut içinde kontrolleri belirtebiliriz. Örneğin [Forms]![Form1]![MetinKutusu1] komutunu Docmd.RunSql içinde kullanabiliriz. Buna rağmen CurrentDb.Execute komutu içinde formlardaki kontrolleri kullanamayız. (Çünkü DAO form kontrollerini pek sallamıyor Dull ) Bu işlem için VBA'da değişkenleri kullanabiliriz. Örneğin formda hesaplanan bir değer varsa bu değeri VBA'da bir değişken yardımı ile tutabiliriz. Ardından CurrentDb.Execute komutu içinde kullanabiliriz.

2) Docmd.RunSql komutu size sürekli soru sorar. Eeee bu da canımızı sıkar. Yok efendim 2 kayıt ekliyorsunuz, yok efendim 32 kayıt güncelliyorsunuz. Tabii bu durumu engellemenin de bir yolu var. Aşağıdaki kodları kullanıyoruz:

Visual Basic
  1. DoCmd.SetWarnings False
  2. 'Docmd.RunSql komutundan önce yukarıdaki kod ile uyarıları iptal ediyoruz.
  3. Docmd.RunSql "" 'Buraya ilgili kodlar...
  4. 'Sonra da aşağıdaki kodlarla tekrar uyarıları aktif hale getiriyoruz.
  5. DoCmd.SetWarnings True



Şimdi gelelim CurrentDb.Execute komutuna. Bu komut bizi hiç rahatsız etmez. Arka planda kayıtlarını, güncellemelerini, kayıt silme işlemlerini sessiz sedasız gerçekleştirir. (Hiç soru sormaz, bazen diyorum bu komutun bir benzeri hayatta da olsa Chatterbox )

3) Karmaşık sorgularda CurrentDb.Execute komutu Docmd.RunSql komutuna göre çok daha hızlıdır. (Hadi abartmayalım WideeyedHızlıdır diyelim )

4) Eğer yüklenmekte olan bir formda CurrentDb.Execute komutu çalıştırılırsa ve aynı zamanda da bu formda kayıt işlemi gerçekleştirilmeye çalışılırsa Access bizi uyarabilir.. Der ki: Farklı bir kullanıcı kaydı değiştirdi. (Tam olarak böyle demese de buna benzer bir şeyler kesin der. Sorunludur bu Access Twitcy) Bilmez ki bizim Access'imiz, o işlemi yapan başka kullanıcı değil, canımız ciğerimiz ADO'muzdur. Wubclub

Evet arkadaşlar işte bu iki komut arasındaki fark bunlar. Tercih size kalmış ama ben bu şartlar altında CurrentDb.Execute komutunu tek geçerim...

Saygılarımı sunar iyi çalışmalar dilerim. Yeni bir konuda görüşmek üzere, kalın sağlıcaklaWubclub

Not: Bu çalışma hazırlanırken yararlanılan kaynak.



  Alıntı
Bu mesajı beğenenler:
#2
Sağolun, bir ara ingilzicesini görüp sonra okurum diye imlediklerimdendi. Türkçesi olunca bir çırpıda okudum. Temel oalrak access komutunun rahatını dao'nun hızını gördük. DAO kod yazmayı sevenlere docmd ise ben gibilere hitap ediyor. ADO mu DAO mu derken ben ve MS DAO diyor zaten ve ADO'yu harici veri kaynaklarına erişirken tercih ediniz diyor. Bence haklı. VBA ve DAO üstüne ikili yok.

Alıntı: O bizim canımız ciğerimiz ADO'dur.
Burda bir dil sürçmesi olmuş gibi.

Bence aradaki ufak hız konfora değişilmemeli. O akdar büyük çaplı işlerimiz yok. Üretim daha önemli!

Nedense bugünlerde Accessi çok fazla sevmeey başladım. Yetenekleri o akdar gelişti ki! Yakında hepimiz CMS web geliştiricisi oalcağız access hosting yayılınca. Belki de forum yapanlar çıkacak! Aslında şu an bile mümkün!

Diğer ofis bileşenlerine göre ilerde en çok gelişecek olan access bence. Çünkü diğerlerinde gidecek yol kalmadı ve MS burdaki cevheri gördü.
Eek VT:Veri Tabanı, AVT: Access VT, MS:Microsoft, Kapaç: Kapa ve aç (rebot ve açkapa saçmalığına çözümüm)
Twitcy Yazan okuyan sağolsun, çözene saygılar. Kolaylaştırınız, zorlaştırmayınız.
? Cinnet geçirmemek için Access 2010'u SP2 ile kullanalım.
? Sürekli sebepsiz hatalar oluyor da AVT uçuyorsa siz de Ofis kurulmunu uçurun çözülüyor. Sorun kurulum dosyanızda! Farklısını bulun!
? VT dağıtıma çıkana kadar bölmek zaman kaybıdır!
{ Veri Tabanı Mantığı } {Access 2010 çökmelerine çözüm } { 60 Günlük Ofis 2010 Pro Türkçe } { Kayıtları Yan Yana Göstermek }
{ Forma Rapora Resim Fotoğraf Eklemek En kolay En Sağlam En Zengin Teknik }



  Alıntı
Bu mesajı beğenenler:
#3
(18-04-2012, 02:34)Mehmet Eser demiş ki:
Alıntı: O bizim canımız ciğerimiz ADO'dur.
Burda bir dil sürçmesi olmuş gibi.

Merhaba Mehmet Bey,

Kesinlikle yazım hatası var şimdi fark ettim. İlk mesajımı düzenliyorum hemen Bb






  Alıntı
Bu mesajı beğenenler:
#4
Paylaşım için teşekkürler...



  Alıntı
Bu mesajı beğenenler:
#5
teşekkürler.



  Alıntı
Bu mesajı beğenenler:
#6
İlginiz için ben teşekkür ederim arkadaşlarCute



  Alıntı
Bu mesajı beğenenler:


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi