• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü Sql ile Verileri Filtreleme

Bu sorun verilen destek sayesinde çözüme ulaştırılmıştır.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Local

Bronz Üye
Kullanıcı Bilgileri
Katılım
19 Ağu 2023
Mesajlar
254
Aldığı beğeni
22
Excel Versiyonu
Office 2016 TR
Konuyu Başlatan
Merhaba daha öncede foruma yazmıştım sunucu üzerinden veri filtrelemeyi hatta destekten bir kişi ilgileniyordu .Arama formumdaki filtrelemeyi sunucudan verileri alacak şekilde filtreleme olacaktı yardımcı olabilir misiniz ben çözemedim ?
 

Ekli dosyalar

  • Resim ekle1 (1) (1) (1).xlsm
    607.2 KB · Gösterim: 5
Öncelikle cevaplamak gereken bir kaç soru var.

1. Hangi form üzerinde arama yapmak istiyorsunuz?

2. Arama yapacağınız tablonun alanları nelerdir?

3. Aramayı hangi yöntemi kullanarak yapmak istiyorsunuz? (Örnek: TextBox_Change olayında girmeye başlar başlamaz mı arama yapsın? Ya da bütün bir arama metnini girdikten sonra buton ile mi arama yapsın?)

4. Tablonuzdaki hangi alanlara göre arama yapmak istiyorsunuz? (Demek istediğim tablonuzda 10 farklı alan var diyelim, bu alanların bazılarında arama yapmak istemiyor olabilirsiniz?)

5. Arama yaparken birden fazla alanı kullanacak mıyız?
 
Bir Örnek hazırladım. Kontrol eder misiniz?
 

Ekli dosyalar

  • Örnek.zip
    55.8 KB · Gösterim: 13
Çözüm
Burada Access içinde bulunan "AramaSorgusu" adındaki sorgu arama yaparken null değer gönderme ile ilgili güzel bir örnek teşkil ediyor bilmeyenler için.
Bir parametre Hem bir alanla ilişkilendirilip ( "Adi Like [@Adi] gibi" ya da "Adi = [@Adi]" gibi ) hem OR ile IS NULL kontrolü yaptırılarak null değer kontrolü yapılabilir. ilk koşul uyarsa ilk koşula göre veri getirir, ikinci IS NULL koşuluna uyarsa ilgili alanın aramasını gözardı etmiş oluruz.
 
İnceledim hocam çalışıyor programıma uygun bir arama seçeneği bende sizin daha önceki bir örneğinizi uyarlamaya çalışıyordum ..
 
İnceledim hocam çalışıyor programıma uygun bir arama seçeneği bende sizin daha önceki bir örneğinizi uyarlamaya çalışıyordum ..
Bakın yazdığım kodları "orada onu yazmış, burada bunu yazmış" şeklinde ezber değil de hangi satır nerede ne işe yarıyor şeklinde değerlendirirseniz çok daha faydalı olacaktır uyarlama konusunda.

Dediğim gibi Ekleyebiliyorsunuz, Silebiliyorsunuz, Güncelleyebiliyorsunuz, Kayıt çekebiliyorsunuz tek yapamadığınız şey arama yapmak kaldı.
Zaten onu da çözebileceğinize inanıyorum çok basit bir kaç detay var dikkat edilmesi gereken, gerisi zaten hep klasik şeyler, bağlantı aç, sorgu gönder, cevap al, aldığın cevabı bi yerlerde görüntüle vs.
 
Bakın yazdığım kodları "orada onu yazmış, burada bunu yazmış" şeklinde ezber değil de hangi satır nerede ne işe yarıyor şeklinde değerlendirirseniz çok daha faydalı olacaktır uyarlama konusunda.

Dediğim gibi Ekleyebiliyorsunuz, Silebiliyorsunuz, Güncelleyebiliyorsunuz, Kayıt çekebiliyorsunuz tek yapamadığınız şey arama yapmak kaldı.
Zaten onu da çözebileceğinize inanıyorum çok basit bir kaç detay var dikkat edilmesi gereken, gerisi zaten hep klasik şeyler, bağlantı aç, sorgu gönder, cevap al, aldığın cevabı bi yerlerde görüntüle vs.
Hocam mysql'e göre bağlantı yapıyorum ama ekteki hatayı alıyorum
 

Ekli dosyalar

  • mysql hata.JPG
    mysql hata.JPG
    103 KB · Gösterim: 6
Activate kısmına bu şekilde yazıyorum ..


On Error Resume Next
Listele


Dim oconn As ADODB.Connection
Set oconn = New ADODB.Connection
oconn.Open "DRIVER={MYSQL ODBC 8.0 Unicode Driver};SERVER=localhost;DATABASE=ambar;USER=root;PASSWORD=;"
 
Command nesnesine Connection nesnesini yanlış tanımlıyorsun. cmd.ActiveConnection = con değil cmd.ActiveConnection = oconn olacak
 

Ekli dosyalar

  • Adsız.jpg
    Adsız.jpg
    128.1 KB · Gösterim: 6
"İstenen işlem ,geçerli sağlayıcının desteklemediği bir OLE DB Oturum nesnesi gerektiriyor" Hatası aldım
 
Resimdeki boyalı yerin üstüne alttakini ekleyin sonuç 1 ise bağlantı kurulu demektir.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Command nesnesine Connection nesnesini yanlış tanımlıyorsun. cmd.ActiveConnection = con değil cmd.ActiveConnection = oconn olacak
Bu kısmı dediğiniz gibi yaptıktan sonra bu hatayı aldım "Bağlantı bu işlemi gerçekleştirmek için kullanılamıyor.Kapalı veya bu koşullarda geçersiz "


Set rs = cmd.Execute satırında aldım

Bir önceki hatayı atlattırdım tekrar çıkarsa söyleyeceğim
 
Bu kısmı dediğiniz gibi yaptıktan sonra bu hatayı aldım "Bağlantı bu işlemi gerçekleştirmek için kullanılamıyor.Kapalı veya bu koşullarda geçersiz "


Set rs = cmd.Execute satırında aldım

Bir önceki hatayı atlattırdım tekrar çıkarsa söyleyeceğim
üstad Refaz Bey'in dediğini bir dener misiniz? oconn.open "bağlantı dizesi" satırından sonra msgbox oconn.state satırı ekleyip bakar mısınız.
Mesaj kutusunda 1 yazıyorsa problem yok. 0 yazıyorsa bağlantı açılmamış demektir. Bağlantı dizenizde hata vardır o zaman.
 
üstad Refaz Bey'in dediğini bir dener misiniz? oconn.open "bağlantı dizesi" satırından sonra msgbox oconn.state satırı ekleyip bakar mısınız.
Mesaj kutusunda 1 yazıyorsa problem yok. 0 yazıyorsa bağlantı açılmamış demektir. Bağlantı dizenizde hata vardır o zaman.
Hocam 0 yazıyor Üstad Refaz'ın da dediği gibi .
oconn.Open "DRIVER={MYSQL ODBC 8.0 Unicode Driver};SERVER=localhost;DATABASE=ambar;USER=root;PASSWORD=;"

Activate kısmına bu şekilde bağlantıyı yazıyorum..
 
Hocam oldu bağlantı sağladım 1 mesajını aldım verileri çekmeye çalışacağım şimdi..
 

aeGNoR

Hocam mesaj 1 olarak geldi bağlantı sağladım fakat veriler gelmedi ben listview'e göre yapıyorum ondan olabilirmi sizin örnekte listbox vardı.​

 
Hocam Userform1 formuna tekrar hazırladım.Verileri Listview doldur prosedürü ile getiriyorum fakat filtreleme yapınca "Niteliklerin sayısı, sağlanan nitelik değerlerinin sayısından daha fazla" hatasını alıyorum .
 

Ekli dosyalar

  • Örnek.xlsm
    91.7 KB · Gösterim: 5
Hocam Userform1 formuna tekrar hazırladım.Verileri Listview doldur prosedürü ile getiriyorum fakat filtreleme yapınca "Niteliklerin sayısı, sağlanan nitelik değerlerinin sayısından daha fazla" hatasını alıyorum .
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Bu sorgunun karşılığı serverda nedir yazabilir misiniz?
 
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Burada sunucuya 3 tane parametre gönderiyoruz cmd adındaki command nesnesi ile.

Buna karşılık
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
ile sorguladığınız "stokzimmetlist1" sorgusu içinde bunlara karşılık @ ile başlayan değişkenler olmalı.

Örnek verecek olursak "SELECT * FROM stokzimmetlist1" ile çektiğiniz sorgunun sunucudaki karşılığı aşağıdakine benzer bişey olmalı
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Ek Açıklama:

stokzimmetlist1 sorgunuzun içeriğinde @ ile başlayan değişkenlere karşılık aynı sayıda cmd nesnesi ile parametre göndermelisiniz. Yani sorgunuzda yukarıdaki @Stok_Kodu, @Fiş_Numarası, @Ürün_Adı değişkenlerinin hepsi bulunmak zorunda. Ya da bu 3 değişkenden daha fazla değişken sorgunuzda varsa cmd ile o kadar parametre göndermelisiniz.

Parametre sayıları ve tipleri aynı olmazsa hata alırsınız. Buradaki parametre sayılarının aynı olmasına istisna olarak sorguda bir parametre birden fazla kullanılmışsa örnek "WHERE (Adi Like [@Adi] OR [@Adi] IS NULL)" buarada @Adi değişkeni sorguda iki defa geçmesine rağmen parametre olarak 1 defa gönderilmelidir.
 
Son düzenleme:
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Geri
Üst