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 ?
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.
Aramada parametre ile yapmamızın sebebi null değerler gönderebilmek.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.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.
Parametreyi null gönderirken Aynı parametreyi 2 defa kullanıyoruz hocam sorgu içerisindeparametrelerde 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.
İf isnull ile yapılıyor vba da.Aramada parametre ile yapmamızın sebebi null değerler gönderebilmek.
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İf isnull ile yapılıyor vba da.
Sağolun açıklamalar için.
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 & "')"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.
Eve haklısınız.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.
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.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 & "')"
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ı.Tamam hocam şimdi yukarda verdiğiniz örnekleri yazacağım .Diğer paylaştığınız örnek dosyaya bakarak uygulayacağım
Hocam bu üç parametreyi değiştirip yukardakini yazacağım yalnız SELECT * FROM stokzimmetlist1 WHERE ile başlayan kodu araya bir yeremi yazacağımBurada sunucuya 3 tane parametre gönderiyoruz cmd adındaki command nesnesi ile.Kod:Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Buna karşılıkile sorguladığınız "stokzimmetlist1" sorgusu içinde bunlara karşılık @ ile başlayan değişkenler olmalı.Kod:Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Ö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]
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.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.