none
SQL SORGUSU RRS feed

  • Soru

  • Merhabalar aşagıdakı sql kodum çalışıyor amacım giris ile cıkıs arasındakı dakikayı bulmak bana bunu bu sql sorgu verdi

    takıldıgım yer c# forma bır turlu adapte edemedım 

    amacım forma bir datapicker ile tarıh secip personel ismini secip dokumanı bu sql sorguya gore  datagridwiem de getırmesı tesekkurler

    WITH    rows AS
    (
    select  ROW_NUMBER() OVER (ORDER BY recordno) AS rn,recordno,persid,name,surname,gateno,gatename,olaybilgisi,gecisdate,gecistime from dbo.Transions
    where name = 'isim'
    and surname = 'soyad'
    and gecisdate = '06.03.2014'
    and gatename in ('TURNİKE 1 ÇIKIŞ','TURNİKE 1 GİRİŞ','TURNİKE 2 ÇIKIŞ','TURNİKE 2 GİRİŞ')

    )
    SELECT mc.recordno,mc.persid,mc.name,mc.surname,mc.gateno,mc.gatename,mc.olaybilgisi,mc.gecisdate,mc.gecistime, DATEDIFF(minute, mc.gecistime, mp.gecistime) as sure_dakika
    FROM    rows mc
    JOIN    rows mp
    ON      mc.rn = mp.rn - 1


    • Düzenleyen Hakan sevim 7 Haziran 2014 Cumartesi 08:18
    7 Haziran 2014 Cumartesi 08:15

Yanıtlar

Tüm Yanıtlar

  • Verdiğin SQL kodu üzerinde durmuyorum.

    Ancak giriş ve çıkış zamanı için DatatimeNow kullanabilirsin. ilk girdiğinde alınan veriyi bir yere atarsın çıkarken DateTimeNow yaparsın yine sonra bu veriyi de bir değişkene atarsın. Sonra   giriszamani-cikiszamani yaparak bulabilirsin. Örnek kodlar aşağıdadır. 

    DateTime startTime = DateTime.Parse(time1.Text);
    DateTime endTime = DateTime.Parse(time2.Text);
    TimeSpan span = endTime.Subtract(startTime);
    time3.Value = span.Hours

    Dakika Saniye Hesaplama için 

    SaniyeFark  + span.Seconds);
    DakikaFark + span.Minutes);
    GunFak  + span.Days);

    DateTime bugun = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                DateTime big_date = new DateTime(2013, 09, 29);
                TimeSpan fark = big_date.Subtract(bugun);
                int fark1 = Int32.Parse(fark.TotalDays.ToString());
                if (fark1 < 0)
                {
                    fark1 = 0;
                }
    
                listView1.View = View.Details;
                listView1.LabelEdit = true;
                listView1.AllowColumnReorder = true;
                listView1.FullRowSelect = true;
                listView1.GridLines = true;
                listView1.Sorting = System.Windows.Forms.SortOrder.Ascending;
                listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.None);
                listView1.HeaderStyle = ColumnHeaderStyle.Nonclickable;
    
                listView1.Columns.Add("Başlangıç Tarihi", -3, HorizontalAlignment.Center);
                listView1.Columns.Add("Bitiş Tarihi", -2, HorizontalAlignment.Center);
                listView1.Columns.Add("Gün Farkı", -1, HorizontalAlignment.Center);
                listView1.Columns[0].Width = 90;
                listView1.Columns[1].Width = 90;
                listView1.Columns[2].Width = 80;
    
                ListViewItem subItemL = new ListViewItem(bugun.ToShortDateString());
                subItemL.SubItems.Add(big_date.ToShortDateString());
                subItemL.SubItems.Add(fark1.ToString());
                listView1.Items.Add(subItemL);

    7 Haziran 2014 Cumartesi 09:16
  • string sql = @"WITH    rows AS
    (
    select  ROW_NUMBER() OVER (ORDER BY recordno) AS rn,recordno,persid,name,surname,gateno,gatename,olaybilgisi,gecisdate,gecistime from dbo.Transions
    where name = @name
    and surname = @soyad
    and gecisdate = @date
    and gatename in ('TURNİKE 1 ÇIKIŞ','TURNİKE 1 GİRİŞ','TURNİKE 2 ÇIKIŞ','TURNİKE 2 GİRİŞ') 
    
    )
    SELECT mc.recordno,mc.persid,mc.name,mc.surname,mc.gateno,mc.gatename,mc.olaybilgisi,mc.gecisdate,mc.gecistime, DATEDIFF(minute, mc.gecistime, mp.gecistime) as sure_dakika
    FROM    rows mc
    JOIN    rows mp
    ON      mc.rn = mp.rn - 1";
    
    DataTable tbl = new DataTable();
    using (SqlConnection con = new SqlConnection(@"server=.\SqlExpress;Trusted_Connection=yes;database=dbName"))
    {
    	SqlCommand cmd = new SqlCommand(sql, con);
    	cmd.Parameters.AddWithValue("@name", "isim");
    	cmd.Parameters.AddWithValue("@soyad", "soyad");
    	cmd.Parameters.AddWithValue("@date", new DateTime(2014,6,3));
    	
    	con.Open();
    	tbl.Load( cmd.ExecuteReader() );
    	con.Close();
    }
    dataGrid.DataSource = tbl;

    7 Haziran 2014 Cumartesi 15:58
    Yanıtlayıcı
  • TURNİKE 1 ÇIKIŞ','TURNİKE 1 GİRİŞ','TURNİKE 2 ÇIKIŞ','TURNİKE 2 GİRİŞ

    yazan yerde farklı kapılar mevcut bunu sectırmek ıcın kullanıcıya combobox1.items[combobox1.selectindex].tostring

    mi kullanıcam ???

    7 Haziran 2014 Cumartesi 16:16
  • cevap vermıssınız tesekkurler ama tam anlatamadım sanırım
    sql kodum calısıyor (WITH    rows AS
    (
    select  ROW_NUMBER() OVER (ORDER BY recordno) AS rn,recordno,persid,name,surname,gateno,gatename,olaybilgisi,gecisdate,gecistime from dbo.Transions
    where name = 'isim'
    and surname = 'soyad'
    and gecisdate = '06.03.2014'
    and gatename in ('TURNİKE 1 ÇIKIŞ','TURNİKE 1 GİRİŞ','TURNİKE 2 ÇIKIŞ','TURNİKE 2 GİRİŞ') 

    )
    SELECT mc.recordno,mc.persid,mc.name,mc.surname,mc.gateno,mc.gatename,mc.olaybilgisi,mc.gecisdate,mc.gecistime, DATEDIFF(minute, mc.gecistime, mp.gecistime) as sure_dakika
    FROM    rows mc
    JOIN    rows mp

    ON      mc.rn = mp.rn - 1)

    database ıstedıgım sonucu goruyorum 

    c# form yarattım 2 adet datapicker , belirtilen tarıhlerde secim için koydum
    4 adet combobax var giris cıkıs turnıkelerin secimi için (TURNİKE 1 ÇIKIŞ','TURNİKE 1 GİRİŞ','TURNİKE 2 ÇIKIŞ','TURNİKE 2 GİRİŞ) gibi

    bir adet combobax daha var oda personel ısımlerını sectırıyorum sıkıntı yok

    amac= kullanıcı turnıkelerın giris cıkısını sectı combobaxtan ısmınıde sectı tarihi sectı ve kullanııcya ait turnıke giris cıkısı yaparken molada kaldıgı dakıkayı bulmak ve datagridwiem de gostermek  sql yuaptım c# bu sekılde yerlesımı ıle ılgılı bana kodu yazarsanız sevınırım combobox v.s yerlestırmemıssınız sanırım turnıke ve tarih secimi 
    7 Haziran 2014 Cumartesi 16:38
  • 4 tane combobox'in var ise 4 tane OR ekle, olsun bitsin. SQL server'da nasil olsa IN sorgusunu OR olarak ceviriyor.
    9 Haziran 2014 Pazartesi 13:20
    Yanıtlayıcı