Çö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
247
Aldığı beğeni
21
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

Refaz

Destek Ekibi
Kullanıcı Bilgileri
Katılım
11 Ağu 2021
Mesajlar
4,168
Çözümler
496
Aldığı beğeni
3,908
Excel Versiyonu
Office 2021 TR
Aslında bu parametre olayı uzun iş ve gereksiz gibi.Önceden bir videoda izlemiştim sanıyorum güvenlik gibi birşey için yazılıyormuş ama yazılmadanda çalışır bence.
@ işareti ve parametre olayı dediğim gibi benim için gereksiz ama tercih meselesi tabii ve bu sql uzmanları daha iyi bilir benim pek bilgim yok.
 

aeGNoR

Destek Ekibi
Kullanıcı Bilgileri
Katılım
10 Mar 2021
Mesajlar
772
Çözümler
98
Aldığı beğeni
867
Excel Versiyonu
Office 2021 TR
parametrelerin nasıl tanımlanacağı ile ilgili örnek verilmiş. İnceleyebilirsiniz.
 

aeGNoR

Destek Ekibi
Kullanıcı Bilgileri
Katılım
10 Mar 2021
Mesajlar
772
Çözümler
98
Aldığı beğeni
867
Excel Versiyonu
Office 2021 TR
Aslında bu parametre olayı uzun iş ve gereksiz gibi.Önceden bir videoda izlemiştim sanıyorum güvenlik gibi birşey için yazılıyormuş ama yazılmadanda çalışır bence.
@ işareti ve parametre olayı dediğim gibi benim için gereksiz ama tercih meselesi tabii ve bu sql uzmanları daha iyi bilir benim pek bilgim yok.
Aramada parametre ile yapmamızın sebebi null değerler gönderebilmek.

Diyelim ki Adı, Soyadı, Adresi alanlarını temsil eden textboxlarımız var ve aramada bu textboxların hepsini kullanmak istiyoruz. Yani ben Adı textboxına "ref" yazdım, Adres textboxına "excel" yazdım diyelim ve Soyadı textboxı boş kaldı. Boş kalan alanın aramasını null gönderebilmek gerekiyor.

Bunun çözümü olarak Soyadi textboxı boşsa sorguya "%" joker karakteri ile soyadındaki her bir değeri aldırabiliriz ama daha önce bu işin profesyonellerinden gördüğüm kullanım şekli bu değil. Tahminimce performansa bir etkisi olabilir. Yoksa o kadar uzun uzun sorgu yazmaya kimse uğraşmazdı.

burada Adnan hocamın bir bilgisi olabileceğini düşünüyorum SQL uzmanımız o :)
 

aeGNoR

Destek Ekibi
Kullanıcı Bilgileri
Katılım
10 Mar 2021
Mesajlar
772
Çözümler
98
Aldığı beğeni
867
Excel Versiyonu
Office 2021 TR
Aslında bu parametre olayı uzun iş ve gereksiz gibi.Önceden bir videoda izlemiştim sanıyorum güvenlik gibi birşey için yazılıyormuş ama yazılmadanda çalışır bence.
@ işareti ve parametre olayı dediğim gibi benim için gereksiz ama tercih meselesi tabii ve bu sql uzmanları daha iyi bilir benim pek bilgim yok.
Bu yöntemi kullanmamın bir sebebi de VB.NET alışkanlığımdan. Orada da kendime Baglanti Classı yazdım. Bu class üzerinden sadece Query değişkenimi değiştirerek; Insert, Update, Delete, Select sorgularının tamamını tek bir prosedür üzerinden yapabiliyorum.
 

Adnan

Destek Ekibi
Kullanıcı Bilgileri
Katılım
10 Mar 2021
Mesajlar
1,513
Çözümler
267
Aldığı beğeni
1,523
Excel Versiyonu
Office 365 TR
parametrelerde null gönderirsen null sonuçlarını istersin. Parametreler dolu olmalıdır. Bu nedenle sql sorgularının where kısmı tasarlandıktan sonra sorguya eklenebilir.
 

aeGNoR

Destek Ekibi
Kullanıcı Bilgileri
Katılım
10 Mar 2021
Mesajlar
772
Çözümler
98
Aldığı beğeni
867
Excel Versiyonu
Office 2021 TR
parametrelerde null gönderirsen null sonuçlarını istersin. Parametreler dolu olmalıdır. Bu nedenle sql sorgularının where kısmı tasarlandıktan sonra sorguya eklenebilir.
Parametreyi null gönderirken Aynı parametreyi 2 defa kullanıyoruz hocam sorgu içerisinde
Örnek olarak;
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
@Adi değişkeni Ya Adi alanı içinde aranan değerleri verecek ya da @Adi değişkeni null olacak. Null olursa Ortalarındaki OR sayesinde doğrudan Adi Like [@Adi] kısmını baypass etmiş oluyoruz.
 

aeGNoR

Destek Ekibi
Kullanıcı Bilgileri
Katılım
10 Mar 2021
Mesajlar
772
Çözümler
98
Aldığı beğeni
867
Excel Versiyonu
Office 2021 TR
İf isnull ile yapılıyor vba da.
Sağolun açıklamalar için.
Bu konuyu da Adnan hocamla sabahlara kadar tartışmışlığımız var. Adını hatırlamadığım bir SQL uzmanının dediğine göre "SQL tarafında çözebileceğimiz bir meseleyi, çözmeyip yazılım tarafına bırakıyorsak o veritabanında yanlış giden bir şeyler vardır." diyordu. Sağlam bir SQL Server kontrol edebileceği şeyleri yazılım tarafına bırakmaz :)

Kısacası SQL uzmanı hata doğurabilecek ya da veritabanında performansı etkileyebilecek şeyleri yazılımcının insafına bırakamaz.
 

Local

Bronz Üye
Kullanıcı Bilgileri
Katılım
19 Ağu 2023
Mesajlar
247
Aldığı beğeni
21
Excel Versiyonu
Office 2016 TR
Konuyu Başlatan
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?
Sql = "insert into stokzimmetlist1(ID,STOK_KODU,FişNumarası,Ürün_Adı,Talep_Eden_Personel,Ürün_Grubu,Grup_Koduİsmi,Stok_Cinsi,GirişDepo,Birim,Adet,ZİMMETEGİRİLEN_ADET,Ürün_Tipi,Üretici_Firma,Marka_1,Marka_2,Durum,Kayıt_Tarihi,Seri_Numarası,Diğer_Bilgiler,Zimmet_Tarihi,Teslim_Edilen_Birim,Teslim_Eden_Anbar_Personeli)values(" & textid1 & " ,'" & text_stokkodu & "','" & text_fişno & "','" & text_stokadı & "','" & text_zimmet & "','" & comboürün & "','" & text_grup & "','" & combo_stok & "','" & combo_giris_yer & "','" & combo_birim & "'," & combo_adet & "," & text_giris & ",'" & combo_ürüntip & "','" & text_üretici_firma & "','" & combo_marka & "','" & text_marka & "','" & combo_durum & "','" & text_kayıt & "','" & text_serino & "','" & text_diğerbilgi & "','" & text_zimmet_tarihi & "','" & combo_teslim_edilen & "','" & combo_anbar_personeli & "')"
 

Refaz

Destek Ekibi
Kullanıcı Bilgileri
Katılım
11 Ağu 2021
Mesajlar
4,168
Çözümler
496
Aldığı beğeni
3,908
Excel Versiyonu
Office 2021 TR
Bu konuyu da Adnan hocamla sabahlara kadar tartışmışlığımız var. Adını hatırlamadığım bir SQL uzmanının dediğine göre "SQL tarafında çözebileceğimiz bir meseleyi, çözmeyip yazılım tarafına bırakıyorsak o veritabanında yanlış giden bir şeyler vardır." diyordu. Sağlam bir SQL Server kontrol edebileceği şeyleri yazılım tarafına bırakmaz :)

Kısacası SQL uzmanı hata doğurabilecek ya da veritabanında performansı etkileyebilecek şeyleri yazılımcının insafına bırakamaz.
Eve haklısınız.
Öncedende tecrübe olarak ado ile listviewe veri alırken EĞER sütunda boş hücreler varsa listviewde kaymalar oluyordu sütun olarak.
Hiç unutmadığım için Ali ÖZ hocamız yardım etmişti galiba başka forumda.

Mobilden yanlış yazabilirim ama alttaki mantıkla boş kontrol yapılıyordu ama sql serverde geçerlimi bilmiyorum.
C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 

aeGNoR

Destek Ekibi
Kullanıcı Bilgileri
Katılım
10 Mar 2021
Mesajlar
772
Çözümler
98
Aldığı beğeni
867
Excel Versiyonu
Office 2021 TR
Sql = "insert into stokzimmetlist1(ID,STOK_KODU,FişNumarası,Ürün_Adı,Talep_Eden_Personel,Ürün_Grubu,Grup_Koduİsmi,Stok_Cinsi,GirişDepo,Birim,Adet,ZİMMETEGİRİLEN_ADET,Ürün_Tipi,Üretici_Firma,Marka_1,Marka_2,Durum,Kayıt_Tarihi,Seri_Numarası,Diğer_Bilgiler,Zimmet_Tarihi,Teslim_Edilen_Birim,Teslim_Eden_Anbar_Personeli)values(" & textid1 & " ,'" & text_stokkodu & "','" & text_fişno & "','" & text_stokadı & "','" & text_zimmet & "','" & comboürün & "','" & text_grup & "','" & combo_stok & "','" & combo_giris_yer & "','" & combo_birim & "'," & combo_adet & "," & text_giris & ",'" & combo_ürüntip & "','" & text_üretici_firma & "','" & combo_marka & "','" & text_marka & "','" & combo_durum & "','" & text_kayıt & "','" & text_serino & "','" & text_diğerbilgi & "','" & text_zimmet_tarihi & "','" & combo_teslim_edilen & "','" & combo_anbar_personeli & "')"
Siz benim örneğimi tamamen yanlış anlamışsınız gibi görünüyor. Size gönderdiğim örnek dosyasında access dosyasını açarsanız orada kullandığım bir sorgu olduğunu göreceksiniz. o sorguya sağ tıklayıp tasarım görünümünde aç derseniz arama sorgusunu nereden çektiğini görebilirsiniz.
Bkz:

Adsız.jpg

Buna access tarafında sorgu deniyor. MySQL ya da MSSQL tarafında Stored Procedure (Saklı Yordam) deniyor. Öncelikle aramanız için bir saklı yordam yazıp o saklı yordam içinden SELECT sorgusu çağırmalısınız.

Örneğimdeki Excel kitabında dikkat ederseniz "SELECT * FROM AramaSorgusu" olduğunu görürsünüz. Doğrudan tablodan select etmiyoruz parametreli yöntemde. Önce Stored Procedure yazıyoruz daha sonra oradan select ediyoruz. Yaptığım bu örnekte @Adi, @Soyadi, @IsUnvani, @Sehir diye değişkenlerim var, bu değişkenlerin her biri için excel tarafında cmd nesnesi ile parametre gönderiyorum.
 

Local

Bronz Üye
Kullanıcı Bilgileri
Katılım
19 Ağu 2023
Mesajlar
247
Aldığı beğeni
21
Excel Versiyonu
Office 2016 TR
Konuyu Başlatan
Tamam hocam şimdi yukarda verdiğiniz örnekleri yazacağım .Diğer paylaştığınız örnek dosyaya bakarak uygulayacağım
 

aeGNoR

Destek Ekibi
Kullanıcı Bilgileri
Katılım
10 Mar 2021
Mesajlar
772
Çözümler
98
Aldığı beğeni
867
Excel Versiyonu
Office 2021 TR
Tamam hocam şimdi yukarda verdiğiniz örnekleri yazacağım .Diğer paylaştığınız örnek dosyaya bakarak uygulayacağım
Bakın şöyle bir durum var, biz bu işi zor yoldan yapıyoruz şuan. Ama bu güne kadar SQL uzmanlarının kullanımlarında gördüğüm şey tam olarak bu tür kullanımlardı.

Önce yarım yamalak öğrenip sonra daha profesyonel kullanımlara geçmek çok daha zor. İlk öğrenirken biraz zorlansak da daha sağlam kullanımlarını öğrenelim ve bir daha bu konular üzerine kafa yormayalım. Ben şimdiye kadar hep öyle yaptım, ve şu an meyvelerini de yiyorum.

Yine örnek vermek gerekirse, Adnan hocamla stok takibi yapan bir program üzerine günlerce kafa patlattım, tecrübelerinden faydalandım. Şuan test aşamasına geldim ve sonuç olarak veritabanını ve programı hiç tasarlamadan önceki kafamda kurduğum senaryo en ince ayrıntısına kadar işliyor. Veritabanımda sonradan ekleyeceğim alanlar için ya da sonradan çıkaracağım alanlar için de testler gerçekleştirdim ve veritabanı kısmını son derece sağlam tasarladığım için kodlarda sadece ufak bir kaç değişiklik yaparak bütün senaryoyu yazılımıma uygulayabiliyorum.
 

Local

Bronz Üye
Kullanıcı Bilgileri
Katılım
19 Ağu 2023
Mesajlar
247
Aldığı beğeni
21
Excel Versiyonu
Office 2016 TR
Konuyu Başlatan
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.

[COLOR=%s]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.[/COLOR]
Hocam bu üç parametreyi değiştirip yukardakini yazacağım yalnız SELECT * FROM stokzimmetlist1 WHERE ile başlayan kodu araya bir yeremi yazacağım
 

Local

Bronz Üye
Kullanıcı Bilgileri
Katılım
19 Ağu 2023
Mesajlar
247
Aldığı beğeni
21
Excel Versiyonu
Office 2016 TR
Konuyu Başlatan
Bakın şöyle bir durum var, biz bu işi zor yoldan yapıyoruz şuan. Ama bu güne kadar SQL uzmanlarının kullanımlarında gördüğüm şey tam olarak bu tür kullanımlardı.

Önce yarım yamalak öğrenip sonra daha profesyonel kullanımlara geçmek çok daha zor. İlk öğrenirken biraz zorlansak da daha sağlam kullanımlarını öğrenelim ve bir daha bu konular üzerine kafa yormayalım. Ben şimdiye kadar hep öyle yaptım, ve şu an meyvelerini de yiyorum.

Yine örnek vermek gerekirse, Adnan hocamla stok takibi yapan bir program üzerine günlerce kafa patlattım, tecrübelerinden faydalandım. Şuan test aşamasına geldim ve sonuç olarak veritabanını ve programı hiç tasarlamadan önceki kafamda kurduğum senaryo en ince ayrıntısına kadar işliyor. Veritabanımda sonradan ekleyeceğim alanlar için ya da sonradan çıkaracağım alanlar için de testler gerçekleştirdim ve veritabanı kısmını son derece sağlam tasarladığım için kodlarda sadece ufak bir kaç değişiklik yaparak bütün senaryoyu yazılımıma uygulayabiliyorum.
Haklısınz hocam bende eklemeler çıkarmalar yapıyorum zaten yazdığım programın ekleme silme güncelleme arama filtreleme v.s işlemleri mevcuttu excel sayfasından verileri çekiyordum ama ileriyi düşünerek veri tabanına aldım ve şuan sizlerin sayesinde ilerleme katettim.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Üst