none
Birden fazla sorgulama işlemi RRS feed

  • Soru

  • Merhaba Arkadaşlar,

    Bu sorgulama işlemini çözemedim, Ürün rapor sayfamda CheckedComboboxEdit içerisinde firma adlarım listelenmekte firma seçtiğimde o firmanın sattığı ürünler firma seçmediğim de ise raporun tamamının gelmesini istiyoroum aşağıdaki bazı sorguları denedim olmadı,
    Acaba !!!  form tarafında sorgumu dinamik yapsam yani

    string cmd="SELECT * FROM URUNRAPOR WHERE BASLANGICTARIH>=@BASLANGICTARIH AND BITISTARIHI<=@BITISTARIHI"
    string firmasorgu=" AND FIRMAID=@FIRMAID";

    if(firmaid>0)
    firmasorgu+=firmasorgu;

    SqlDataReader rdr = cmd.ExecuteDataReader(cmd, con)

    böyle bir şey yapsam mantıksız mı olur yoksa aşağıdaki çalışmayan sorgumu mu düzeltmeliyim ve bunu nasıl yaparım.
    SELECT * FROM URUNRAPOR WHERE FIRMAID=@FIRMAID OR BASLANGICTARIH>=@BASLANGICTARIH AND BITISTARIHI<=@BITISTARIHI

    15 Ocak 2016 Cuma 11:52

Yanıtlar

  • Ben Linq'yu kolay oldugu icin onermistim ama sen bilirsin. SQL ile karisik gorunen, genelde Linq ile oldukca kolay (bence).

    "Normal sorgu yazamaz miyim" ne demek anlamadim, T-SQL demek istedin sanirim, yazarsin niye yazamayasin. Soyledigin sekilde ekleme ornegini de birkac kez vermistim forumda:

    Ornek link


    15 Ocak 2016 Cuma 13:55

Tüm Yanıtlar

  • Adin csharpp olduguna gore buyuk ihtimalle C# ile kullanmak istiyorsun. O zaman, Linq ile kolay bu isler. Ornek:

    DateTime baslangic = ...;
    DateTime bitis = ...;
    
    var sorgu = db.UrunRapor.AsQueryable();
    
    sorgu = sorgu.Where( s => s.BaslangicTarih >= baslangic &&
       s.BitisTarihi <= bitis );
     
    
    if (firmaid > 0)
    {
      sorgu = sorgu.Where( s => s.FirmaId == firmaid);
    }
    
    

    Not: Tarih dedigin alanlar tarihsaat ise, >= and <= ile sorgulamadaki problemlerden haberdar oldugunu var sayiyorum, degilsen forumda tonlarca detayli anlatim var, "tarih araligi sorgu" gibi arat.

    15 Ocak 2016 Cuma 13:14
  • Evet abi csharp da yazıyorum ve abim sorgum okadar karışık ki aslında 7-8 tablodan veri alıyorum ve linq ile olmayacak gibi ve tek firma id değilde daha fazla seçim yapmak için değerlerim var normal bir şekilde sorgu yazamazmıyım acaba yukarıdaki gibi or ile yapmıştım ve o listem çalışmamıştı birde yukarıda gelen değere göre stringler tanımlamış sorguya birleştirme yapıyorum bunu önerir misiniz.
    15 Ocak 2016 Cuma 13:39
  • Ben Linq'yu kolay oldugu icin onermistim ama sen bilirsin. SQL ile karisik gorunen, genelde Linq ile oldukca kolay (bence).

    "Normal sorgu yazamaz miyim" ne demek anlamadim, T-SQL demek istedin sanirim, yazarsin niye yazamayasin. Soyledigin sekilde ekleme ornegini de birkac kez vermistim forumda:

    Ornek link


    15 Ocak 2016 Cuma 13:55
  • Çetin abi bu soruyu sormadan önce arattırdım ve bulamadım ne olarak arama yaparım oradan bakayım abim.
    15 Ocak 2016 Cuma 14:22
  • Merhabalar,

    T-SQL ile yapmayı istiyorsanız bir stored procedure ile gerçekleştirebilirsiniz:

    Örnek olarak aşağıdaki linkten yararlanabilirsiniz;

    http://www.aspsnippets.com/Articles/Return-all-records-when-Parameter-is-Blank-Empty-or-Null-in-SQL-Server-Query.aspx

    Umarım faydalı olur.

    15 Ocak 2016 Cuma 14:51
  • Bir de aşağıdaki gibi deneyebilirsiniz:

    DECLARE @Renk nvarchar(100)
    SET @Renk = NULL
    
    SELECT ProductID, Name,ListPrice, Color
    FROM Production.Product
    WHERE Color = @Renk
          OR ISNULL(@Renk, '') = ''

    Umarım faydalı olur. Eğer sorununuz devam ederse detay verirseniz yardımcı olmaya çalışalım hep beraber.

    15 Ocak 2016 Cuma 14:55
  • Bulamadim diyorsun da, ben zaten link verdim (ve cok kolay buldum).
    15 Ocak 2016 Cuma 16:48
  • Procudure kullanamam abi Abdullah Abi, Çetin abi linki görememişim çok teşekkür ederim her şey için.

    16 Ocak 2016 Cumartesi 08:58