Skip to main content

AccessTr.neT


Sql Sorgusunda Where İfadesindeki In Listesi Parametrik Yapılabilir Mi?

Sql Sorgusunda Where İfadesindeki In Listesi Parametrik Yapılabilir Mi?

Çözüldü #1
Merhaba,
Sorum basit, örnek ekleme gereği yoktur diye umuyorum. Basitçe:

Kod:
SELECT UnvanAdi FROM tblUnvanlar WHERE UnvanKodu IN([UnvanListesi]);
sorgusunda [UnvanListesi] parametresini elle girmeyi veya herhangi bir formdan aldırmayı yapamadım (syntax problemi değil).

Bu listeyi açılan parametre gir İletişim kutusuna elle 10010,10020,10060 şeklinde girersem sorgu sonucu boş dönüyor. Form üzerindeki bir textbox'a da aynı şekilde virgülle ayırarak 10010,10020,10060 şeklinde girersem ve sorguyu buraya yönlendirirsem sorgu sonucu yine boş dönüyor.

Ama tek bir ünvan kodu girersem (10060 gibi) sorgu normal sonucu yani o bir ünvanın bilgilsini döndürüyor.

Yani anladığım kadarıyla 10010,10020,10060 şeklinde girilen listeyi tek bir değer olarak gördüğü için, öyle bir ünvan kodu bulamayıp boş sonuç döndürüyor.

Bu problemi aşmanın bir yolunu biliyor musunuz? Yoksa uzun yolu mu kullanmak gerekiyor?

Saygılarımla...
Cevapla
#2
Dim Sql As String
Dim unvanListesi As String

' TextBox’taki değeri al ve Sql sorgusu için uygun formata getir
unvanListesi = Me.txtUnvanListesi.Value

' Dinamik Sql sorgusunu oluştur
sql = "SELECT UnvanAdi FROM tblUnvanlar WHERE UnvanKodu IN(" & unvanListesi & ")"
Cevapla
#3
Yani uzun yoldan gitmem gerekiyor Img-grin

Teşekkür ederim.
Cevapla
#4
SQL deyimindeki WHERE bir parametre değil değişkendir, bu nedenle sizin tabiriniz ile uzun yoldan gitmek zorundasınız.
Parametre kullanıdığınızda sorgunun kendisi sabit kalır ve çalışma zamanında sadece parametrelerin değerlerine göre sonuçlar değiştirilir. Sizin yapmak istediğiniz ise sorgunun değişkenini belirlemek bunun için Sayın @C*e*l*o*y*c*e Hocamızın belirttiği gibi bu değeri almak istediğiniz form/inputbox vs denetimine başvurmanız gerekir.
Cevapla
#5
(11/11/2024, 15:18)WiniFred yazdı: 10010,10020,10060 şeklinde girilen listeyi tek
bu değerleri nereye giriyorsunuz?
girilen alanın türü ne?
eğer veriler metin kutusundan alınıyorsa ve sayısalsa sorun çıkartmaması gerek
ama eğer veriler metinse kabaca aşağıdakine benzer bir kodun işinizi görmesi gerek
dz = Split(Me.Metin0.Value, ",")
For Each itm In dz
xVeri = xVeri & ",""" & Trim(itm) & """"
Next
xVeri = Mid(xVeri, 2)
Set rs = CurrentDb.OpenRecordset("select * from TabloAdi where AlanAdi in (" & xVeri & ")")
Set Me.Liste3.Recordset = rs
örnek çalışmanızı eklemeniz çözümü kolaylaştırır
Cevapla
#6
Arkadaşlar hızlıca bir örnek oluşturdum. İncelerseniz durum netleşecek sanırım.
Saygılarımla...
.zip accesstr.zip (Dosya Boyutu: 27,42 KB | İndirme Sayısı: 3)
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task