• 07-10-2010, 16:53:58
    #1
    Üyeliği durduruldu
    arkadaşlar datetimepicker ile tarih seçilerek sql'e tarih ekleniyor. format şu şekilde: "07 Ekim 2010 Perşembe"

    sql'de bu bu verinin kaydedildiği veri tipi nvarchar(50)

    datagrid üzerinde order by yaptığım zaman alfabetik olarak listeliyor tarihi hiçe sayıyor. acaba veri tipinin datetime mı olması gerekir? o şekilde yapıncada datetimepicker'dan tarihi ekleyemiyorum. tarih aynen 07 Ekim 2010 Perşembe şeklinde olması gerekiyor proje gereği. yardımlarınızı bekliyorum

    teşekkürler
  • 07-10-2010, 17:13:32
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Datetime formatında olmak zorunda. nvarchar text'tir. Bu nedenle alfabetik sıralar.
    Eğer id integer formatında ise id'ye göre sırala. Zaten "order by id desc" yaptığında en son girilen ilk gelicektir.
  • 07-10-2010, 17:22:59
    #3
    Üyeliği durduruldu
    ancak tarih seçilemez konumda değil. yani o anki tarihi sql'e kaydetmiyor. datetimepicker üzerinden herhangi bir tarih seçilip sql'e kaydediyor. yani id ile sıralatmak yararsız
  • 07-10-2010, 17:28:22
    #4
    Sql veri tipiniz datetime olmak zorunda.
    Datetimepicker ile aldıktan sonra sql'e gönderirken datetime'a çeviripte gönderebilirsiniz veya sql sorgunuzda da çevirebilirsiniz.
    http://www.sql-server-helper.com/tips/date-formats.aspx
  • 07-10-2010, 19:05:48
    #5
    Üyeliği durduruldu
    sql veri tipini datetime olarak ayarladım ancak sql'e gönderirkenki çeviriyi beceremedim :S
  • 07-10-2010, 19:17:15
    #6
    Cast(@colon_adı as datetime)
  • 07-10-2010, 21:08:11
    #7
    Üyeliği durduruldu
    konuyu saat 16:53'te açmışım, o zamandır her yolu deniyorum yapamıyorum. acaba nvarchar olarak kaydedip select sırasında datetime'a convert etsek olurmu?

    yada bir çözüm.. ?
  • 07-10-2010, 21:43:50
    #8
    Belki olabilir. Direk sql'e gönderirken birde convert dener misin.
    CONVERT(datetime, @gonderdigin_deger, 101)
    101 kısmı şekli. Mesela 07/10/2010 veya 07102010 gibi.

    Bana sorarsan autoincrement integer bir değer yarat. Onunla order by int desc şeklinde çek her seferinde. En basit yol bu bence.
  • 07-10-2010, 21:50:05
    #9
    Üyeliği durduruldu
    rob33n adlı üyeden alıntı: mesajı görüntüle
    Belki olabilir. Direk sql'e gönderirken birde convert dener misin.
    CONVERT(datetime, @gonderdigin_deger, 101)
    101 kısmı şekli. Mesela 07/10/2010 veya 07102010 gibi.
    bu şekilde deniyorum:

    aldığım hata:
    Conversion failed when converting datetime from character string.
    kodlarım ise şu şekilde:

     string sqlIns = "INSERT INTO liste (adi_soyadi, telefon, tedavi, durum, tarih, saat, odenen, tutar) VALUES (@adi_soyadi, @telefon, @tedavi, @durum, CONVERT(datetime, @tarih, 101), @saat, @odenen, @tutar)";
    
                SqlCommand com = new SqlCommand(sqlIns, con);
    
                com.Parameters.Add("@adi_soyadi", textBox1.Text);
                com.Parameters.Add("@telefon", maskedTextBox1.Text);
                com.Parameters.Add("@tedavi", textBox3.Text);
                com.Parameters.Add("@durum", "1");
                com.Parameters.Add("@tarih", dateTimePicker2.Text);
                com.Parameters.Add("@saat", dateTimePicker1.Text);
                com.Parameters.Add("@odenen", textBox4.Text);
                com.Parameters.Add("@tutar", textBox7.Text);
    
                    con.Open();
                    com.ExecuteNonQuery();
                    con.Close();
    çıkamadım işin içinden