Forum
Merhaba;
Sql Veritabanında 01:47:00.0000000 şeklinde saat değeri tutmaktayım. Bu değerleri datagridview üzerinde Saat ismiyle listeliyorum.
Örn;
1'inci Saat Değeri = 01:47:00.0000000
2'nci Saat Değeri = 23:00:00.0000000
datagridview üzerinden verileri 01:47:00 ve 23:00:00 türünde alıyorum fakat toplama işlemini yapamıyorum. bu iki değeri topladığımda 24:47:00 şeklinde olması gerekiyor
fakat bir türlü yapamadım.
Yardımlarınız için teşekkür ederim.
Hocam TimeSpan kullanın
var date1 = new TimeSpan(0,1,47,00,0000000);
var date2 =new TimeSpan(0,23,00,00,0000000);
var s1 = date1.Hours+ date2.Hours;
iki saat arasındakı toplamı bu sekılde alabıırsınız saniyeleride siztoplayabilirsiniz bunu bir methoda yazıp daha güzel bir hale getirebilirsiniz.
Saygılarımla
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com
Hocam TimeSpan kullanın
var date1 = new TimeSpan(0,1,47,00,0000000);
var date2 =new TimeSpan(0,23,00,00,0000000);
var s1 = date1.Hours+ date2.Hours;
iki saat arasındakı toplamı bu sekılde alabıırsınız saniyeleride siztoplayabilirsiniz bunu bir methoda yazıp daha güzel bir hale getirebilirsiniz.
Saygılarımla
Erdem Hocam Öncelikle İlginiz ve Cevabınız için teşekkür ederim.
Benim saat sayılarım sabit olmadığı için direk olarak
var date1 = new TimeSpan(0,1,47,00,0000000);
var date2 =new TimeSpan(0,23,00,00,0000000);
yazamıyorum. Bunları datagridview'den almam gerekiyor. Bunun için
for (int i = 0; i < ds.Tables["İseGirisCikis"].Rows.Count; i++)
{
var date1 =new TimeSpan(0,Convert.ToDateTime(ds.Tables["İseGirisCikis"].Rows[i]["CALISMASAATI"]).ToString("HH"),00,00,0000000);
}
olarak almaya çalıştığımda hata veriyor. Ayrıca ;
saatler1 = Convert.ToInt32(Convert.ToDateTime(ds.Tables["İseGirisCikis"].Rows[i]["CALISMASAATI"]).ToString("HH"));
dakika1 = Convert.ToInt32(Convert.ToDateTime(ds.Tables["İseGirisCikis"].Rows[i]["CALISMASAATI"]).ToString("mm"));
var date1 = new TimeSpan(0, saatler1, dakika1, 00, 0000000);
bu şekilde yapayım dedim odada Timespan değerini atayamazsınız diye hata verdi.
Saygılarımla;
Erdem Bey Merhaba;
Cevabınız ve yardımlarınız için tekrardan teşekkür ederim. Ben sorunumu çözdüm nasıl çözdüğümüde paylaşmak istedim ki benim gibi bir problem yaşayan arkadaşımız olursa böylece çözmüş olur.
cmd = new SqlCommand("select sum(DATEPART(HOUR, [CALISMASAATI])) as 'Saat', sum(DATEPART(MINUTE, [CALISMASAATI])) as 'DAKIKA' from İseGirisCikis", con);
// sum(DATEPART(HOUR, [CALISMASAATI])) as 'Saat' bu kısım bize sadece saatleri toplayıp getiriyor.
// sum(DATEPART(MINUTE, [CALISMASAATI])) as 'DAKIKA' bu kısımda sadece dakikaları toplayıp getiriyor.
dr = cmd.ExecuteReader();
//burda if sorgusunda hem saati hemde dakikayı sorguluyorum ki aşağıda convert yaptığımda null değer gelip problem yaşamayalım diye.
if (dr.Read() && dr[0].ToString() != "" && dr[1].ToString() != "")
{
//saat değişkene alınıyor.
int saat = Convert.ToInt32(dr[0].ToString());
//dakika değişkene alınıyor.
int dakika = Convert.ToInt32(dr[1].ToString());
/for döngüsündede dakika 60'dan büyükse dön denildiğinde haliyle 60'ncı dakikada dahi dönüp dakikayı 60 dk düşürüp saate 1 saat ekliyor.
for (int i = 0; dakika > 60; i++)
{
dakika = dakika - 60;
saat = saat + 1;
}
//burdada eğer saat ve tarih tek hece ise yani saat 01 ise bunu 1 olarak getirdiğinden uzunluğunu kontrol edip önüne 0 ekledik, Aynı şeyi dakika içinde yaptık ve böylece saati ve dakikayı toplamış oldum.
if (saat.ToString().Length.ToString() == "1" && dakika.ToString().Length.ToString() == "1")
{
toplam_txt.Text = "0" + saat + ":0" + dakika;
}
else if (saat.ToString().Length.ToString() == "1")
{
toplam_txt.Text = "0"+saat + ":" + dakika;
}
else if (dakika.ToString().Length.ToString() == "1")
{
toplam_txt.Text = saat + ":0" + dakika;
}
else
{
toplam_txt.Text = saat + ":" + dakika;
}
}
else
{
toplam_txt.Text = null;
}
con.close();
Çok teşekkür ederim tabi yazılım kısmını siz yaptığınız için şu koda göre benim cevabımın sizi tatmin etmemesi normal. Daha farklı birşey istemişsiniz siz ama halledilmesi ve geri bildirim alınması çok güzel.
Teşekkürler
Saygılarımla
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com