Forum

C# ve SQL iki tablo...
 
Bildirimler
Hepsini Temizle

C# ve SQL iki tablo arasında tarihe göre filitreleme yapmak (YARDIM!!!)

5 Yazılar
4 Üyeler
0 Reactions
4,087 Görüntüleme
(@OsmanNuriGENCER)
Gönderiler: 2
New Member
Konu başlatıcı
 

Çok Saygı Değer Uzman Arkadaşlarım?

C# ve SQL konusunda fazla bilgim olmamasına rağmen elimden geldiğince yapmaya çalıştığın bir projede yardımınıza ihtiyaç duyuyorum.

Şimdiden hepinize teşekkür ederim.

Bir Cari Kayıt programı geliştiriyorum ve şirkete ait carileri tarihe göre listelemede sorun yaşıyorum.

Programı kullanacak kişi X Şirketinin tüm Cari bilgilerini listeledikten sonra gerek görüldüğünde X Ayına ait Cari bilgilerini tek başına görmek istiyor.

Bununla alakalı kod bloğunu maalesef ki yazamadım. yardımlarınızı bekliyorum.

Denediğin bazı kod blokları aşağıdadır. butonun click eventına yazıyorum.

************************************************************************** 

            string donustur = dateTimePicker1.Value.ToString("yyyy-MM-dd");
            Cari.Clear();
            bag.Open();
            sorgu = "SELECT * FROM CariHareket where CariID='" + secilenID + "' and Tarih Like '" + donustur + "'";
            doldur = new SqlDataAdapter(sorgu, bag);
            doldur.Fill(Cari);
            dgvCariHareket.DataSource = Cari;
            bag.Close();

Yukarıdaki kod bloğu X şirketine ait Cari Kaydını net olarak getiriyor.

Benim istediğim ise X Şirketinin X tarihinde ki Cari Kayıtlarını getirmesi

*********************************************************************
            Cari.Clear();
            bag.Open();
            {
                SqlCommand kmt2 = new SqlCommand("SELECT * FROM CariHareket WHERE Tarih BETWEEN @Tarih1 AND @Tarih2", bag);
                kmt2.Parameters.AddWithValue("@Tarih1", dateTimePicker1.Value.Date);
                kmt2.Parameters.AddWithValue("@Tarih2", dateTimePicker2.Value.Date);
                SqlDataAdapter adtr = new SqlDataAdapter(kmt2);
                adtr.Fill(Cari);
                dgvCariHareket.DataSource = Cari;
            }
            bag.Close();

 

Bu blokta aldığım sonuç ise tüm şirketlerin belirttiğim tarih aralığını bana listeliyor.

*******************************************************************

Özetle X şirketinin iki tarih arasındaki cari kayıtlarına nasıl ulaşırım?

 

Yarıdımlarınız için teşekkür eder saygılar sunarım...

 
Gönderildi : 21/01/2016 17:45

(@enginkulac)
Gönderiler: 118
Estimable Member
 

Merhaba,

SELECT * FROM CariHareket

WHERE CariID=@CariID and (Tarih BETWEEN @Tarih1 AND @Tarih2)

bu şekilde denediğinizde sonuç alamıyor musunuz?

 

 
Gönderildi : 21/01/2016 22:19

(@eravse)
Gönderiler: 1753
Üye
 

*********************************************************************
            Cari.Clear();
            bag.Open();
            {
                SqlCommand kmt2 = new SqlCommand("SELECT * FROM CariHareket WHERE CariID='"+secilenCariId +"' Tarih BETWEEN @Tarih1 AND @Tarih2", bag);
                kmt2.Parameters.AddWithValue("@Tarih1", dateTimePicker1.Value.Date);
                kmt2.Parameters.AddWithValue("@Tarih2", dateTimePicker2.Value.Date);
                SqlDataAdapter adtr = new SqlDataAdapter(kmt2);
                adtr.Fill(Cari);
                dgvCariHareket.DataSource = Cari;
            }
            bag.Close();

 

*****************************************************************

 

where alanında carı ıd yok ? eklersenız duzelebılır

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 22/01/2016 01:51

(@OsmanNuriGENCER)
Gönderiler: 2
New Member
Konu başlatıcı
 

Değerli cevaplarınız için teşekkür ederim

Sorunumu şu yöntem ile çözdüm

Cari.Clear();
bag.Open();
sorgu = @"SELECT * FROM CariHareket where CariID=@id and tarih >= @baslangic and tarih < @bitis";
doldur = new SqlDataAdapter(sorgu, bag);
DateTime baslangic = dateTimePicker1.Value.Date;
DateTime bitis = dateTimePicker2.Value.Date.AddDays(1);
doldur.SelectCommand.Parameters.AddWithValue("@id", secilenID);
doldur.SelectCommand.Parameters.AddWithValue("@baslangic", baslangic);
doldur.SelectCommand.Parameters.AddWithValue("@bitis", bitis);
doldur.Fill(Cari);
dgvCariHareket.DataSource = Cari;
bag.Close();

Zaman ayırıp ilgilendiğiniz için hepinize teşekkür ederim.

 
Gönderildi : 22/01/2016 16:56

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

Can alıcı kısmın SQL komutu olduğunu varsayarak ilk ve son iletilerinizi karşılaştırdım:

SELECT * FROM CariHareket WHERE                          Tarih BETWEEN @Tarih1 AND           @Tarih2

SELECT * FROM CariHareket WHERE CariID=@id AND Tarih          >= @Tarih1 AND Tarih < @Tarih2

Anladığım kadarıyla:

1 - Sorguya CariID anahtarı eklenmiş.

2 - Sorguda SQL BETWEEN yerine "değerden büyüktür veya eşittir" ile "değerden küçüktür" kullanılmış.

Kulaç ve Selçuk Beyler CariID anahtarının eksik olduğunu belirtmişlerdi.

BETWEEN kullansaydınız, Tarih2 tarihine ait kayıtlar da sonuç kümesine dahil olacaktı, çünkü BETWEEN kullanımı, ">= AND <=" için birebir kısaltma; arada bir fark yok (aşağıdaki linkde belirtiliyor).  Fakat Tarih2 dahil olmasın demişsiniz, o nedenle BETWEEN değil, yaptığınız gibi "<" kullanmak gerekiyor.

Kaynak: http://stackoverflow.com/questions/1630239/sql-between-vs-and

 
Gönderildi : 23/01/2016 00:29

Paylaş: