mehmetduran.com - Paylaşmak Güzeldir...
Asp.net ile Arşiv Bölümü Hazırlama - Örnek Uygulama
Bu yazımda hazırladığımız projelerde kullanabileceğimiz arşiv bölümünü nasıl yapabileceğimizi anlatmaya çalışacağım. Öncelikle anlatacağım arşivleme uygulaması kendi sitemde kullandığım arşiv bölümüne benzemektedir. Aylara göre eklediğim verilerin sayısını gösteriyorum ve bunlardan birini seçtiğimizde seçtiğimiz tarihe ait verileri görebiliyoruz. Bu yazımı da tamamen bu örnek üzerine hazırladım. Öncelikle hazırlamış olduğum uygulamayı buradan görebilirsiniz. Şimdi ise bu uygulamanın mantığına ve nasıl yaptığıma bakalım.

Öncelikle bu uygulamayı yapmak için bir class oluşturdum ve tüm işlemleri bu class içerisinde yaptım. Öncelikle arşiv oluşturmak için başlangıç tarihi ve bitiş tarihi olmalıdır. Bu değerleri ister veritabanından alabilir ister kendimiz belirleyebiliriz. Yaptığım örnekte bu değerleri kendim belirledim. Bu değerlere ve arasındaki tarih farkına göre ayları listeleyip her ay için verilerin sayısını bulmalıyız. Bunu da yazdığımız bir method ile halledebiliriz. Aşağıda arşiv oluşturmak için hazırladığım class'ı görebilirsiniz.

public class arsiv_olustur
{
 
  public string[] aylar ={ "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" };
  public DateTime baslangic_zaman, son_zaman;
 
  OleDbConnection bg;
 
  public arsiv_olustur()
  {
    baslangic_zaman = new DateTime(2008, 1, 1);
    son_zaman = new DateTime(2008, 12, 1);
 
    bg = new OleDbConnection("provider=microsoft.jet.oledb.4.0; data source=" + HttpContext.Current.Server.MapPath("~/arsiv.mdb"));
  }
 
  public int kayit_sayisi(int yil, int ay)
  {
    int sonuc = 0;
    OleDbCommand komut = new OleDbCommand("select count(*) from arsiv where year(tarih)=@yil and month(tarih)=@ay", bg);
    komut.Parameters.AddWithValue("@yil", yil);
    komut.Parameters.AddWithValue("@ay", ay);
    bg.Open();
    sonuc = (int)komut.ExecuteScalar();
    bg.Close();
    return sonuc;
  }
 
  public string arsiv_getir()
  {
    string sonuc = "";
 
    for (int i = son_zaman.Month; i >= baslangic_zaman.Month; i--)
    {
      sonuc += "<a href='arsivim.aspx?tarih=" + son_zaman.Year + "/" + i + "'>" + aylar[i - 1] + " " + son_zaman.Year + " (" + kayit_sayisi(son_zaman.Year, i) + ")" + "</a>";
    }
 
    return sonuc;
  }
 
}

Görüldüğü gibi hazırladığım class bu şekilde. Ancak şunu belirtmeliyim ki gerçek uygulamalr için bu kodu biraz daha geliştirmeliyiz. Ben tarih değerlerini kendim belirledim. Halbuki bu değerler sürekli değişen değerler. Onun için yapacağımız uygulamalarda son zaman değerini şimdiki zaman olarak almalı ve işlemlerimizi bu değerlere göre yapmalıyız. Bu şekilde yaptığımızda kodlarımızın uzayacağını görebiliriz. Çünkü hazırlayacağımız döngülerin ne kadar döneceği belli değil. Bu yüzden bazı değerleri kontrol etmeliyiz. Bunu da bu konu ile ilgileneceklere bırakalım. :)

Yaptığım uygulamada önemli bir nokta da veritabanında tarihe göre sorgulama yaparken sql fonskiyonlarından month() ve year() fonksiyonlarını kullanıyoruz. Bu fonksiyonlar ile veritabanında tarih olarak tutulan verilerden ay ya da yıl bilgisini elde edebiliyoruz. Yani; istediğimiz iki tarih arasında sorgulama yaparken bu fonksiyonları kullanıyoruz.

Yaptığım uygulamayı buradan görebilirsiniz.
Buradan da örnek projeyi indirebilirsiniz.

Not : Bu yazıyı bir arkadaşımızın isteği üzerine hazırladım. Umarım ona ve ilgilenenlere faydası olur.

İyi Çalışmalar!
Mehmet Duran 06 Ocak Salı 2009 4 1734 5,0
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Javascript ile Slide Menü Jquery 1.3 Versiyonu için CHM Dokümanı jQuery 1.4 Yayınlandı Asp.net MVC Cheat Sheets Visual Studio 2005 - 2008 Klavye Tuş Bilgileri
Yorumlar
Yorum Yaz
RSS Yorum Takibi
ihsan bulut 08 Ocak Perşembe 2009 17:00 #1
Evet döngüyü baska bir dongu icine alıp yılları kontrol etmemiz gerekiyor sanırım
Mehmet Duran 08 Ocak Perşembe 2009 17:04 #2
Başka bir döngü değilde birkaç döngüyü birleştirmek gerekiyor. Kontrol etmemiz gereken de dediğin gibi yıl farkı olmalı.
ihsan bulut. 08 Ocak Perşembe 2009 18:19 #3
evet kastetigimde bu. ama söyle bir problem cıkıyor. eger son zamanı simdiki zaman olarak alırsam problem cıkıyor. ama DateTime(2050,12,1) sekl`nde kullandigimda problem yok gayet normal.
Mehmet Duran 08 Ocak Perşembe 2009 19:13 #4
Şimdiki zaman derken metottaki ay ve yıl bilgilerini şimdiki zamanın ay ve yıl bilgileri olarak vermek daha doğru.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Bazı yıkılışlar daha parlak kalkınışların teşvikçisidir.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009