C# - SQL Sorgu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Branxian
    Branxian's avatar
    Kayıt Tarihi: 07/Mart/2009
    Erkek

    Hocalar Selam,

    Çalışan bir üretim makinesinden SQL'e veri kaydı yapıyorum.

    Geçmişe yönelik kayıtları kontrol ettiğimde eğerki tabloda kaydedilen veri 200-300 veri ve üstüyse veriyi görüntülemesi 3-4 dakika sürüyor. Çok yavaş çalışıyor. Okadar uzman değilim.

    Başlangıç seviyesi C# eğitimi aldım sadece.

    Verileri daha hızlı nasıl çekebilirim ? Biraz araştırma yaptım bazıları "Stored Procedure" ile daha hızlı yapabileceğimi söylüyorlar. Şuan sistem çalıştığından 1-2 gün müdahale edemicem. Kendi yazdığım kod aşağıda ki gibi.. Bunu nasıl geliştirebilirim ?

    private void TarihSorgu(DateTime bas, DateTime bit)
            {
                if (con_str == "")
                    ConStringOlustur();
    
                ilktarih = SQLDate(bas);
                sontarih = SQLDate(bit);
    
                string sorgu = string.Format("Select distinct({0}) from {1} where {2}>='{3}' and {2} <='{4}' ", AdiRecete, AdiTablo, AdiTarih, ilktarih, sontarih);
                OleDbConnection conn = new OleDbConnection(con_str);
                conn.Open();
                OleDbCommand command = new OleDbCommand(sorgu, conn);
                OleDbDataReader or = command.ExecuteReader();
    
                ListeRecete.Items.Clear();
                ListeRecete.Items.Add("<--->");
    
                while (or.Read())
                {
                    ListeRecete.Items.Add(or[0].ToString());
                }
                or.Close();
                conn.Close();
    
                ListeRecete.SelectedIndex = 0;
            }



     


    Kurtla sevişen mazoşist koyun
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek

    ListeRecete adlı değişkenin tipi List<> ise yerine HashSet'i kullanman daha performanslı olur.

    Can alıcı kısım ise SQL tablolarında index yok onun için yavaş geliyor  ve sorgunda hata var :)

    Connection'ları açarken using bloğunda açman gerekir. Sebebi de using bloğu kullandığın nesnenin dispose edilmesini garanti eder. Şuan kullandığın gibi devam ederseniz kod bloğunda try-catch olsa bile command nesnen execute edilirken oluşacak bir hata, connection nesnenin kapatılmasını engelleyecektir. Veritabanını birden fazla kullanıcının tetiklediğini düşünürsek sıkıntı olabilir. Alttaki linklere göz atarsan ayrıntılı şekilde bilgi alabilirsin.

    https://docs.microsoft.com/tr-tr/dotnet/framework/data/adonet/sql-server-connection-pooling 

    http://www.buraksenyurt.com/post/Connection-Pooling-in-Onemi-bsenyurt-com-dan

     try
        {
            using (SqlConnection con = new SqlConnection("cnn"))
            {
                using (SqlCommand cmd = new SqlCommand("select Count(0) from Hasta", con))
                {
                    con.Open();
                    int hastaSayi = Convert.ToInt32(cmd.ExecuteScalar());
                }
            }
        }
        catch (Exception exp)
        {
            MessageBox.Show(exp.ToString());
        }
    saybirs tarafından 15/Şub/18 19:05 tarihinde düzenlenmiştir
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    KuZeTaR
    KuZeTaR's avatar
    Kayıt Tarihi: 26/Aralık/2009
    Erkek

    1. Store Prosedure ile çekmen hızlandırır, bir de Entity Framework'e bakmanı tavsiye ederim,

    2. Index kavramını araştır, "WHERE" koşulunda belirtmiş olduğun column'lara index ekle,

    3. Veriyi JSON olarak tutarsan ve JSON olarak kullanırsan bir ihtimal daha hızlı olur, data str. vs kullanmaktansa

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zeybekustasi
    zeybekustasi's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek

    Sorgu kadar db de optimize olması lazım.

    Tabloda index tanımlı mı?

    200 / 300 kayıt getirmek bir şey değil. Sorguda da büyük bir problem var gibi durmuyor. 3-4 dk çok fazla. Üst katmanlarda dataları for ile dönüp durum oynuyor olabilir misiniz?

    Başlangıç ve bitiş için bi timer koy kaç sn bekliyor merak ettim.

     

    Select distinct(AdiRecete)

    from AdiTablo

    where AdiTarih>=ilktarih and AdiTarih<=sontarih


    https://www.youtube.com/watch?v=WC3-71NKwPw
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Sorguyu birde sunucuda dene ? 3-4 dk bekliyor mu ? Bence sorun SQL de değil C# da . Yazdığın algoritmayı incele. Fonksiyonda bir sıkıntı yok gibi duruyor.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Branxian
    Branxian's avatar
    Kayıt Tarihi: 07/Mart/2009
    Erkek
    MhmdAlmz bunu yazdı

    Sorguyu birde sunucuda dene ? 3-4 dk bekliyor mu ? Bence sorun SQL de değil C# da . Yazdığın algoritmayı incele. Fonksiyonda bir sıkıntı yok gibi duruyor.

    Hocalar hepinize teşekkürler. Sanırım benim c# algoritmasında sıkıntı var dediğini denedim. Veriyi çektiğim kadar beklemiyor. Çok hızlı bir şekilde veriyi çekebiliyorum.

    Bir daha baştan yazmaya çalışayım bu gece bari sakin kafayla. 


    Kurtla sevişen mazoşist koyun
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    Branxian bunu yazdı
    MhmdAlmz bunu yazdı

    Sorguyu birde sunucuda dene ? 3-4 dk bekliyor mu ? Bence sorun SQL de değil C# da . Yazdığın algoritmayı incele. Fonksiyonda bir sıkıntı yok gibi duruyor.

    Hocalar hepinize teşekkürler. Sanırım benim c# algoritmasında sıkıntı var dediğini denedim. Veriyi çektiğim kadar beklemiyor. Çok hızlı bir şekilde veriyi çekebiliyorum.

    Bir daha baştan yazmaya çalışayım bu gece bari sakin kafayla. 

    Kodu atarsan optimize edebiliriz


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Branxian
    Branxian's avatar
    Kayıt Tarihi: 07/Mart/2009
    Erkek

    Hocam kod biraz karışık ama tamamı aşağıdaki gibi.

    public class Rapor : DataGridView
        {
            public delegate void GRIDLOGDelegate(OleDbDataReader or, int Sira);
            private void GRIDLOG(OleDbDataReader or, int Sira)
            {
                if (this.InvokeRequired)
                {
                    string[] o = new string[or.FieldCount + 1];
                    Color[] o_clr = new Color[or.FieldCount + 1];
    
                    o[0] = Sira.ToString();
                    o_clr[0] = Color.White;
                    
    
                    for (int i = 0; i < or.FieldCount; i++)
                    {
                        //if (or[i].ToString() == "True")
                        //{
                        //    if (RaporData[i - 3].IndexOf(",") == -1)
                        //        o[i + 1] = "OK";
                        //    else
                        //        o[i + 1] = RaporData[i - 3].Substring(RaporData[i - 3].IndexOf(",") + 1, RaporData[i - 3].IndexOf(";") - (RaporData[i - 3].IndexOf(",") + 1));
                        //}
                        //else if (or[i].ToString() == "False")
                        //{
                        //    if (RaporData[i - 3].IndexOf(",") == -1)
                        //        o[i + 1] = "NOK";
                        //    else
                        //        o[i + 1] = RaporData[i - 3].Substring(RaporData[i - 3].IndexOf(";") + 1);
                        //}
                        //else
    
                        if (i >= 2)
                        {
                            if (RaporData[i - 2].IndexOf(",") == -1)
                            {
                                o[i + 1] = or[i].ToString();
                                o_clr[i + 1] = Color.White;
                            }
                            else
                            {
                                List Secenek = new List();
                                List SecenekRenk = new List();
    
                                string Tmp_RaporData = RaporData[i - 2].Substring(RaporData[i - 2].IndexOf(",") + 1);
                                string tmp_sec;
                                do
                                {
                                    if (Tmp_RaporData.IndexOf(",") != -1)
                                    {
                                        tmp_sec = Tmp_RaporData.Substring(0, Tmp_RaporData.IndexOf(","));
    
                                        if (tmp_sec.IndexOf("#") != -1)
                                        {
                                            SecenekRenk.Add(tmp_sec.Substring(tmp_sec.IndexOf("#") + 1));
                                            tmp_sec = tmp_sec.Substring(0, tmp_sec.IndexOf("#"));
    
                                        }
                                        else
                                            SecenekRenk.Add("White");
    
                                        Secenek.Add(tmp_sec);
                                        Tmp_RaporData = Tmp_RaporData.Substring(Tmp_RaporData.IndexOf(",") + 1);
                                    }
    
                                } while (Tmp_RaporData.IndexOf(",") != -1);
    
                                tmp_sec = Tmp_RaporData;
    
                                if (tmp_sec.IndexOf("#") != -1)
                                {
                                    SecenekRenk.Add(tmp_sec.Substring(tmp_sec.IndexOf("#") + 1));
                                    tmp_sec = tmp_sec.Substring(0, tmp_sec.IndexOf("#"));
    
                                }
                                else
                                    SecenekRenk.Add("White");
    
                                Secenek.Add(tmp_sec);
    
                                //Secenek.Add(Tmp_RaporData);
    
                                if (or[i].ToString() == "False" || or[i].ToString() == "0")
                                {
                                    o[i + 1] = Secenek[0];
                                    o_clr[i + 1] = RenkBul(SecenekRenk[0]);
                                }
                                else if (or[i].ToString() == "True" || or[i].ToString() == "1")
                                {
                                    o[i + 1] = Secenek[1];
                                    o_clr[i + 1] = RenkBul(SecenekRenk[1]);
                                }
                                else
                                {
                                    o[i + 1] = Secenek[Convert.ToInt32(or[i])];
                                    o_clr[i + 1] = RenkBul(SecenekRenk[Convert.ToInt32(or[i])]);
                                }
                            }
                        }
                        else
                        {
                            o[i + 1] = or[i].ToString();
                            o_clr[i + 1] = Color.White;
                        }
                    }
    
                    this.Invoke((MethodInvoker)(() => this.Rows.Add(o)));
    
                    for (int i = 0; i < or.FieldCount; i++)
                    {
                        this.Rows[Sira - 1].Cells[i].Style.BackColor = o_clr[i];
                    }
                    
                }
                else
                {
                    //this.Rows.Add(bilgi);
                }
            }
    
            private Color RenkBul(string p)
            {
                if (p.ToLower() == "white")
                    return Color.White;
                else if (p.ToLower() == "lime")
                    return Color.Lime;
                else if (p.ToLower() == "red")
                    return Color.Red;
                else if (p.ToLower() == "gray")
                    return Color.Silver;
                else
                    return Color.Yellow;
            }
    
            public delegate void DelGRIDLOGDelegate();
            private void DelGRIDLOG()
            {
                if (this.InvokeRequired)
                    this.Invoke((MethodInvoker)(() => this.Rows.Clear()));
                else this.Rows.Clear();
            }
    
            public delegate void SayfaKaydetDelegate(bool b);
            private void SayfaKaydetDegistir(bool b)
            {
                if (this.InvokeRequired)
                    this.Invoke((MethodInvoker)(() => SayfaKaydet.Visible = b));
                else { }
            }
    
            public delegate void SayfaKapatDelegate(bool b);
            private void SayfaKapatDegistir(bool b)
            {
                if (this.InvokeRequired)
                    this.Invoke((MethodInvoker)(() => SayfaKapat.Visible = b));
                else { }
            }
    
            Thread YeniThread;
    
            private string con_str = "";
            private string ilktarih="";
            private string sontarih="";
    
            private MonthCalendar _baslangicTarih = null;
            [Category("Yeni (Sorgu Nesneleri)")]
            public MonthCalendar BaslangicTarih 
            {
                get
                {
                    return _baslangicTarih;
                }
                set
                {
                    _baslangicTarih = value;
                }
            }
    
            private MonthCalendar _bitisTarih = null;
            [Category("Yeni (Sorgu Nesneleri)")]
            public MonthCalendar BitisTarih 
            {
                get
                {
                    return _bitisTarih;
                }
                set
                {
                    _bitisTarih = value;
                }
            }
    
            private ListBox _listeRecete = null;
            [Category("Yeni (Sorgu Nesneleri)")]
            public ListBox ListeRecete 
            {
                get
                {
                    return _listeRecete;
                }
                set
                {
                    _listeRecete = value;
                }
            }
    
            private ListBox _listeZamanSecim = null;
            [Category("Yeni (Sorgu Nesneleri)")]
            public ListBox ListeZamanSecim 
            {
                get
                {
                    return _listeZamanSecim;
                }
                set
                {
                    _listeZamanSecim = value;
                }
            }
    
            [Category("Yeni (Baglanti)")]
            public string AyarUDL { get; set; }
    
            [Category("Yeni (Baglanti)")]
            public string AdiTablo { get; set; }
    
            [Category("Yeni (Baglanti)")]
            public string AdiRecete { get; set; }
    
            [Category("Yeni (Baglanti)")]
            public string AdiTarih { get; set; }
    
            [Category("Yeni (Baglanti)")]
            public string[] RaporData { get; set; }
    
            private Frame.Label _receteSorguButon = null;
            [Category("Yeni (Butonlar)")]
            public Frame.Label ReceteSorguButon
            {
                get
                {
                    return _receteSorguButon;
                }
                set
                {
                    _receteSorguButon = value;
                }
            }
    
            [Category("Yeni (Butonlar)")]
            public Frame.Label SayfaKaydet { get; set; }
    
            [Category("Yeni (Butonlar)")]
            public Frame.Label SayfaKapat { get; set; }
    
            [Category("Yeni (Genel)")]
            public int DilSecenek { get; set; }
    
            private bool ListeZamanSecimEventTmm = false;
            private bool BasTarihEventTmm = false;
            private bool BitTarihEvenrTmm = false;
            private bool ListeReceteEventTmm = false;
    
            public string SQLWhereSarti = "";
    
            private void ConStringOlustur()
            {
                try
                {
                    using (StreamReader sr = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "\\" + AyarUDL))
                    {
                        string line;
    
                        while ((line = sr.ReadLine()) != null)
                        {
                            if (sr.EndOfStream)
                                con_str = line;
    
                        }
                    }
                }
                catch (Exception e)
                {
                    if(DilSecenek == 1)
                        Console.WriteLine(string.Format("{0} dosyası bulunamadı. Lütfen Kontrol Ediniz.", AyarUDL));
                    else
                        Console.WriteLine(string.Format("{0} file doesn't exist. Please Check File.", AyarUDL));
    
                    Console.WriteLine(e.Message);
                }
            }
    
            public Rapor()
            {
            }
    
            public void ListBoxDoldur()
            {
                ListeZamanDoldur();
    
                if (ListeZamanSecim != null && !ListeZamanSecimEventTmm)
                {
                    ListeZamanSecimEventTmm = true;
                    ListeZamanSecim.SelectedIndexChanged += new EventHandler(ListeZamanSecim_SelectedIndexChanged);
                }
    
                if (BaslangicTarih != null && !BasTarihEventTmm)
                {
                    BasTarihEventTmm = true;
                    BaslangicTarih.DateChanged += new DateRangeEventHandler(SorguYapTarih);
                }
                if (BitisTarih != null && !BitTarihEvenrTmm)
                {
                    BitTarihEvenrTmm = true;
                    BitisTarih.DateChanged += new DateRangeEventHandler(SorguYapTarih);
                }
    
                if (ReceteSorguButon != null && !ListeReceteEventTmm)
                {
                    ListeReceteEventTmm = true;
                    ReceteSorguButon.Click += new EventHandler(SorguYapReceteYeni);
                }
    
                //if (ListeRecete != null && !ListeReceteEventTmm)
                //{
                //    ListeReceteEventTmm = true;
                //    ListeRecete.SelectedIndexChanged += new EventHandler(SorguYapRecete);
                //}
                IlkSorgu();
            }
    
            private void ListeZamanDoldur()
            {
                if (ListeZamanSecim != null)
                {
                    if (DilSecenek == 1)
                    {
                        ListeZamanSecim.Items.Clear();
                        ListeZamanSecim.Items.Add("<- Tarih ->");
                        ListeZamanSecim.Items.Add("Son 15 dakika");
                        ListeZamanSecim.Items.Add("Son 30 dakika");
                        ListeZamanSecim.Items.Add("Son 1 Saat");
                        ListeZamanSecim.Items.Add("Son 3 Saat");
                        ListeZamanSecim.Items.Add("Son 6 Saat");
                        ListeZamanSecim.Items.Add("Son 12 Saat");
                        ListeZamanSecim.SelectedIndex = 0;
                    }
                    else
                    {
                        ListeZamanSecim.Items.Clear();
                        ListeZamanSecim.Items.Add("<- Date ->");
                        ListeZamanSecim.Items.Add("Last 15 Minute");
                        ListeZamanSecim.Items.Add("Last 30 Minute");
                        ListeZamanSecim.Items.Add("Last 1 Hour");
                        ListeZamanSecim.Items.Add("Last 3 Hour");
                        ListeZamanSecim.Items.Add("Last 6 Hour");
                        ListeZamanSecim.Items.Add("Last 12 Hour");
                        ListeZamanSecim.SelectedIndex = 0;
                    }
                }
            }
    
            private void IlkSorgu()
            {
                TarihSorgu(GunBasi(BaslangicTarih.SelectionEnd), GunSonu(BitisTarih.SelectionEnd));
            }
    
            void ListeZamanSecim_SelectedIndexChanged(object sender, EventArgs e)
            {
                if(ListeZamanSecim.SelectedIndex == 0)
                    TarihSorgu(GunBasi(BaslangicTarih.SelectionEnd), GunSonu(BitisTarih.SelectionEnd));
                else if (ListeZamanSecim.SelectedIndex == 1)
                    TarihSorgu(Convert.ToDateTime(DateTime.Now - new TimeSpan(0,15,0)),DateTime.Now);
                else if (ListeZamanSecim.SelectedIndex == 2)
                    TarihSorgu(Convert.ToDateTime(DateTime.Now - new TimeSpan(0, 30, 0)), DateTime.Now);
                else if (ListeZamanSecim.SelectedIndex == 3)
                    TarihSorgu(Convert.ToDateTime(DateTime.Now - new TimeSpan(1, 0, 0)), DateTime.Now);
                else if (ListeZamanSecim.SelectedIndex == 4)
                    TarihSorgu(Convert.ToDateTime(DateTime.Now - new TimeSpan(3, 0, 0)), DateTime.Now);
                else if (ListeZamanSecim.SelectedIndex == 5)
                    TarihSorgu(Convert.ToDateTime(DateTime.Now - new TimeSpan(6, 0, 0)), DateTime.Now);
                else if (ListeZamanSecim.SelectedIndex == 6)
                    TarihSorgu(Convert.ToDateTime(DateTime.Now - new TimeSpan(12, 0, 0)), DateTime.Now);
            }
    
            void SorguYapTarih(object sender, DateRangeEventArgs e)
            {
                ListeZamanSecim.SelectedIndex = 0;
                TarihSorgu(GunBasi(BaslangicTarih.SelectionEnd), GunSonu(BitisTarih.SelectionEnd));
            }
    
            void SorguYapReceteYeni(object sender, EventArgs e)
            {
                if (YeniThread != null)
                {
                    if (!YeniThread.IsAlive)
                    {
                        if (ListeRecete.SelectedIndex != -1)
                        {
                            string ReceteListeItem = ListeRecete.SelectedItem.ToString();
                            int ReceteListeSira = ListeRecete.SelectedIndex;
    
                            YeniThread = new Thread(() => RaporOlustur(ReceteListeItem, ReceteListeSira));
    
                            YeniThread.Start();
    
    
                        }
                    }
                    else
                    {
                        YeniThread.Abort();
                        if (ListeRecete.SelectedIndex != -1)
                        {
                            string ReceteListeItem = ListeRecete.SelectedItem.ToString();
                            int ReceteListeSira = ListeRecete.SelectedIndex;
    
                            YeniThread = new Thread(() => RaporOlustur(ReceteListeItem, ReceteListeSira));
    
                            YeniThread.Start();
    
    
                        }
                    }
                }
                else
                {
                    if (ListeRecete.SelectedIndex != -1)
                    {
                        string ReceteListeItem = ListeRecete.SelectedItem.ToString();
                        int ReceteListeSira = ListeRecete.SelectedIndex;
    
                        YeniThread = new Thread(() => RaporOlustur(ReceteListeItem, ReceteListeSira));
    
                        YeniThread.Start();
    
    
                    }
                }
    
            }
    
            public void RaporOlustur(string abc, int ListSira)
            {
                //throw new Exception();
    
                SayfaKapatDegistir(false);
                SayfaKaydetDegistir(false);
    
                if (con_str == "")
                    ConStringOlustur();
    
                string sorgu = string.Format("Select {0}, {1}", AdiTarih, AdiRecete);
    
                if (RaporData.Length > 0)
                {
                    for (int i = 0; i < RaporData.Length; i++)
                    {
                        if (RaporData[i].IndexOf(",") == -1)
                            sorgu += ", " + RaporData[i];
                        else
                            sorgu += ", " + RaporData[i].Substring(0, RaporData[i].IndexOf(","));
                    }
                }
    
                sorgu += string.Format(" from {0} where {1} >= '{2}' and {1} <='{3}'", AdiTablo, AdiTarih, ilktarih, sontarih);
    
                SQLWhereSarti = string.Format("{0} >= '{1}' and {0} <='{2}'", AdiTarih, ilktarih, sontarih);
    
                if (ListSira != 0)
                {
                    sorgu += string.Format(" and {0} = '{1}'", AdiRecete, abc);
                    SQLWhereSarti += string.Format(" and {0} = '{1}'", AdiRecete, abc);
                }
    
                sorgu += string.Format(" order by {0} desc", AdiTarih);
                //SQLWhereSarti += string.Format(" order by {0} desc", AdiTarih);
    
                OleDbConnection conn = new OleDbConnection(con_str);
                conn.Open();
                OleDbCommand command = new OleDbCommand(sorgu, conn);
                OleDbDataReader or = command.ExecuteReader();
    
                //this.Rows.Clear();
                DelGRIDLOG();
    
                int sira = 1;
    
                while (or.Read())
                {
                    GRIDLOG(or, sira);
    
                    sira++;
                }
    
                or.Close();
                conn.Close();
    
                SayfaKapatDegistir(true);
                SayfaKaydetDegistir(true);
            }
    
            private void TarihSorgu(DateTime bas, DateTime bit)
            {
                if (con_str == "")
                    ConStringOlustur();
    
                ilktarih = SQLDate(bas);
                sontarih = SQLDate(bit);
    
                string sorgu = string.Format("Select distinct({0}) from {1} where {2}>='{3}' and {2} <='{4}' ", AdiRecete, AdiTablo, AdiTarih, ilktarih, sontarih);
                OleDbConnection conn = new OleDbConnection(con_str);
                conn.Open();
                OleDbCommand command = new OleDbCommand(sorgu, conn);
                OleDbDataReader or = command.ExecuteReader();
    
                ListeRecete.Items.Clear();
                ListeRecete.Items.Add("<--->");
    
                while (or.Read())
                {
                    ListeRecete.Items.Add(or[0].ToString());
                }
                or.Close();
                conn.Close();
    
                ListeRecete.SelectedIndex = 0;
            }
    
            private DateTime GunBasi(DateTime dt)
            {
                return Convert.ToDateTime(string.Format("{0}.{1}.{2} {3}:{4}:{5}",dt.Day,dt.Month,dt.Year,"00","00","00"));
            }
    
            private DateTime GunSonu(DateTime dt)
            {
                return Convert.ToDateTime(string.Format("{0}.{1}.{2} {3}:{4}:{5}", dt.Day, dt.Month, dt.Year, "23", "59", "59"));
            }
    
            private string SQLDate(DateTime dt)
            {
                return string.Format("{0}.{1}.{2} {3}:{4}:{5}", dt.Month.ToString(), dt.Day.ToString(), dt.Year.ToString(), dt.Hour.ToString(), dt.Minute.ToString(), dt.Second.ToString());
            }
    
    
    
        }

    Hocam zaman seçiminden aynı gün içerisinden ise kontrol edeceğim zamanı seçiyorum. (Son 15dk, 30dk, 1saat, 3saat, 12saat) Koddaki adı "ListeZamanSecim"

    İlk Tarih koddaki adı "BaslangicTarih"

    Son Tarih koddaki adı "BitisTarih"

    Referans Adı kısmının koddaki adı "ListeRecete"

     

    Raporu alınmış ne kadar referans varsa ismi buraya düşüyor. Kontrol etmek istediğim herhangi bir referans varsa ona tıklıyorum o isimdeki raporları getiriyor.

    C# kodum yukarıdaki gibi. Biraz karışık olabilir. :)

     

     

    Branxian tarafından 15/Şub/18 19:20 tarihinde düzenlenmiştir

    Kurtla sevişen mazoşist koyun
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    expert
    expert's avatar
    Kayıt Tarihi: 29/Ekim/2002
    Erkek

    Farklı bir çözüm olarak;

    Hocam SQL'de verilerin varsa Microsoft'un ücretsiz sunduğu "Report Builder (3.0)" diye bir porgram var. Raporu bunda oluştur IIS üzerinde çıkan RDL dosyasını publish edersin. Raporuda mis gibi okursun bence. 


    la bi git xD çoğu konuyu okurum. çok azına post atarım :D çok önemliyse pm at.. kaanabak kardeşimm, seni unutmayacağım.. :(
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sysf
    sysf's avatar
    Kayıt Tarihi: 11/Kasım/2007
    Erkek

    ilave olarak   tablo adından sonra with (nolock) yazman where sartındaki alanları indexlemek faydalı olacaktır.

    select * from tabloadi with (nolock)

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Branxian
    Branxian's avatar
    Kayıt Tarihi: 07/Mart/2009
    Erkek

    Programı şu şekilde değiştirdim. Algoritmada sıkıntı var sanırım. Şimdi sadece parametrik hale getirilmesi kaldı.

    Şuan 50.000'e yakın ölçüm raporunu 1 saniye veya daha kısa bir sürede çekebiliyorum. Ama endüstriyel pc atom işlemcili. Onda nasıl tepki vericek bakalım görücez. :)

    Kodu aşağıda ki gibi yaptım.

    public Form1()
            {
                InitializeComponent();
            }
    
            SqlConnection con;
            SqlDataAdapter da;
            SqlCommand cmd;
            DataSet ds;
    
            void griddoldur()
            {
                con = new SqlConnection("Data Source=Branxian\\SQL;Initial Catalog=Branxian_Machine;Integrated Security=True");
                da = new SqlDataAdapter("Select *From tbl_TestRecords", con);
                ds = new DataSet();
                con.Open();
                da.Fill(ds, "tbl_TestRecords");
                dataGridView1.DataSource = ds.Tables["tbl_TestRecords"];
                con.Close();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                dataGridView1.DataSource = null;
                griddoldur();
            }

     


    Kurtla sevişen mazoşist koyun
Toplam Hit: 1978 Toplam Mesaj: 11
c# sql