AccessTr.neT

Tam Versiyon: Sql Sorgusunda Where İfadesindeki In Listesi Parametrik Yapılabilir Mi?
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2
Formunuzdaki txtunvanListesi textbox'ının AfterUpdate olayına
Private Sub txtUnvanListesi_AfterUpdate()
StrFilter = Replace(txtUnvanListesi, ",", ",")
Me.txtUnvanListesi = StrFilter
DoCmd.OpenQuery "qryDinamikSorgu"
End Sub
şeklinde gireceğiniz kod textboxınıza verilerinizi girdikten sonra sorgunuzdaki WHERE ...IN(...) koşulundaki IN filtresi için gerekli düzenlemeyi yaparak virgülle ayrılmış olarak girdiğiniz ve string veri ifade eden verilerinizi sayısal formda Sql syntaxında kullanmanızı sağlayacak şekilde txtbox verisini update edip sonra sorgunuzu çalıştırarak sonucunu istediğiniz gibi almanızı sağlayacaktır.
Örneğinizde girdiğiniz veriler sayısal ama benzer yaklaşım şayet textboxa girdiğimiz veriler string olarak değerlendirilmeli ise StrFilter bu sefer
StrFilter = "'" & Replace(strUnvanListesi, ",", "','") & "'"
şeklinde, tarih ise
StrFilter = "#" & Replace(StrUnvanListesi, ",", "#, #") & "#"
şeklinde olmalıdır.
Kodlarınızı direkt kopyalayıp uyguladığım örneği de yüklüyorum. Sadece qryDinamikSorgu ismini benim örneğimdeki sorgunun adıyla (FormdanSorgu) olarak değiştirdim. İnceleyebilirseniz sevinirim.

Bir de genel olarak şunu belirteyim. Nokta atışı soru sorduğum için anlaşılır sandım ama mümkün olmadı sanırım. Direkt sorduğum şekilde yapılıp yapılmadığını, yani orada birşey kaçırıp kaçırmadığı öğrenmek istemiştim.

Yoksa ben vba'nın da başka bir sürü yolun da içinden geçerim merak etmeyin. Zaten bunu Vba koduna gömmeye gerek yok. Kendi orjinal projemde textbox'a yazdığımı belirttiğim ünvan kodları için bir temp tablosu oluşturup ünvan kodlarını o tabloya ekledim. Sorguyu da -yine yukarıdaki örnek gibi basite indirgeyip yazarsam-,


Kod:
SELECT UnvanAdi FROM tblUnvanlar WHERE UnvanKodu IN(SELECT UnvanKodu FROM tblUnvanTemp);

şekline getirdim oldu bitti.

Tabii ki orjinal projemdeki Sql böyle basit değil. İç içe bir sürü ön tanımlı fonksiyonlar ve kullanıcı tanımlı fonksiyonlarla dolu, INSERT INTO sorgusunun VALUES kısmını getiren bir karmaşık bir SELECT sorgusu.

Bugün üzerinde çalışmaya devam ettim ve tuhaf bir hata verdi mesela. Gezinti bölmesinden tıklayınca çalışan Sorgu, form üzerinden Vba ile çağırınca çalışmadı. Ben de tüm sorguyu Vba içine almak zorunda kaldım ve sıkıntısız çalıştı.

Neyse galiba bir bug keşfettim, bunun için para veriyorlar mı? Img-grin

Tüm ilginiz, alakanız, emeğiniz için minnettarım. Çok teşekkür ederim.
Saygılarımla...
(12/11/2024, 23:50)WiniFred yazdı: [ -> ]Bugün üzerinde çalışmaya devam ettim ve tuhaf bir hata verdi mesela. Gezinti bölmesinden tıklayınca çalışan Sorgu, form üzerinden Vba ile çağırınca çalışmadı. Ben de tüm sorguyu Vba içine almak zorunda kaldım ve sıkıntısız çalıştı.

Neyse galiba bir bug keşfettim, bunun için para veriyorlar mı?  Img-grin

Office 7 ile 1993'de Vba kullanılmaya başladığından beri zaman zaman karşımıza çıkan ve asla tam nedeni belirlenemeyen saçma bir sorun. Para veriliyorsa da bugüne kadar bu hatayı bildiren MCP ve Developerların sayısını ve paylaşım miktarını düşünecek olursak bildirim butonuna basıp 2 satır hata tanımı yazarken harcadığınız elektrik daha çok bedel tutar sanırım Img-grin
Yıl olmuş 2024, o Sql sorgularını hala formatlı yazamamak, kapatıp açınca tüm satırları karman çorman bir hale getirmesi ve bir sürü ne işe yaradığı belli olmayan parantez eklemesi...

tablo, rapor, sorgu, form ve vba'yı dosya şeklinde taşınabilir hale getiren ve excel'le bu derece entegre kullanılabilen bir alternatifi olmadığı için (ya da ben hiç duymadım) katlanmak zorundayız.
Sayfalar: 1 2