Forum
Ç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...
Merhaba,
SELECT * FROM CariHareket
WHERE CariID=@CariID and (Tarih BETWEEN @Tarih1 AND @Tarih2)
bu şekilde denediğinizde sonuç alamıyor musunuz?
*********************************************************************
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
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.
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