none
- RRS feed

Tüm Yanıtlar

  • Tarihi, tarih olarak kaydederseniz bu konu sıkıntı olmayacaktır. Tarih türünde 6 hane 4 hane gibi bir kavram yoktur. Kullanıcıya istediğiniz hanede gösterebilir, tarih olarak saklarsınız.

    Yine de string olarak kaydediyorsanız bunun getireceği performans ve uyum gibi sorunları bir kenara bırakırsak, bu filtreleme işlemini nerede yapmak istediğinizi de yazmalısınız. Yani SQL cümlesi mi gerekli size? Yoksa LINQ sorgusu mu? Yoksa başka bir şey mi?


    2 Ocak 2018 Salı 12:35
  • // Tablonuzdaki tüm alanları string olarak saklamaktan vazgeçmenizi öneririm...
    private DataTable TabloOku()
    {
        DataTable dataTable = new DataTable();
        using (SqlConnection connection = new SqlConnection("Baglantı metnini buraya yazın.!."))
        {
            using (SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM TabloAdi WHERE CONVERT(datetime, SUBSTRING(tarih, 1, 2)+'.'+SUBSTRING(tarih, 3, 2)+'.20'+SUBSTRING(tarih, 5, 2)) BETWEEN @param1 AND @param2", connection))
            {
                dataAdapter.Parameters.AddWithValue("@param1", dateTimePicker1.Value);
                dataAdapter.Parameters.AddWithValue("@param2", dateTimePicker2.Value);
                dataAdapter.Fill(dataTable);
            }
        }
        return dataTable;
    }


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    2 Ocak 2018 Salı 13:38
  • tarihleri datetimepicker ile mi yapıyorsun o sekilde ise benim cözümüm daha once benimde başıma gelmisti  bu belki yardımcı olabilir datetimepicker properties panelinde tarih formatını istedigin gibi ayarlayabilirsin sanırım

     string SelectText = "SELECT ürünler FROM STOKlar WHERE evraktip IN(1))  BETWEEN @tarih1 AND @tarih2)";
        DataTable dTable = new DataTable();
        using (SqlDataAdapter komut = new SqlDataAdapter(SelectText,con))
        {
            komut.SelectCommand.Parameters.AddWithValue("@tarih1", dtpTarih1.Value);
            komut.SelectCommand.Parameters.AddWithValue("@tarih2", dtpTarih2.Value);
            komut.Fill(dTable);
        }
        return dTable;
    }

            private void button1_Click(object sender, EventArgs e)
            {
            dataGridView1.DataSource=VeriOku();

    3 Ocak 2018 Çarşamba 11:27
  • Tarihleri bu şekilde saklayarak düzgün bir sorgu oluşturabileceğini sanmıyorum. Bir şekilde tarihe çevirmen lazım. Bu da kayıt sayısı arttıkça performan sorunlarına yol açacaktır. Sorguların daha yavaş çalışmaya başlayacaktır. Tarihe çevirmediğin zaman ise sorgular yanlış çalışır. Örneğin tabloda tarih adında bir alanın olduğunu düşün. Bu alana göre iki tarih arasındaki kayıtları getirmek istediğini varsayalım. Tarihler 10 Ocak 2017 - 5 Mayıs 2017 olsun. Senin yazım tarzında tarih >= 100117 AND tarih < 050517 şeklinde bir sorgu yazman gerekir. Bu durumda eğer kaydın tarih alanı 11 Ocak 2017 gibi bir tarihse sorgu sonucuna dahil olmayacaktır. Çünkü stringlerde 100117 >= 110117 sonucu false döner

    4 Ocak 2018 Perşembe 06:33