none
Comboboxtaki tekrar eden veriler hakkında RRS feed

  • Soru

  • Aşağıdaki kod ile veritabanındaki tabloları comboboxa çekiyorum ama aynı tablo isimlerinden birden fazla gösteriyor. Bu durumu nasıl çözerim

    private void baglan()
            {
                baglanti = new SqlConnection(@"Data Source=ERKANKESEMEN\VERITABANI;Initial Catalog=PersonelTakip;Integrated Security=True");
                baglanti.Open();
                DataTable dt = baglanti.GetSchema("Tables");
    
                
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                   
                    comboBoxFİRMA.Items.Add(dt.Rows[i]["TABLE_NAME"]);
                }
               
                baglanti.Close();           
            }

    9 Ocak 2018 Salı 08:06

Yanıtlar

  • Deleted
    • Yanıt Olarak İşaretleyen Erkan KESEMEN 11 Ocak 2018 Perşembe 09:44
    9 Ocak 2018 Salı 11:10
  • Sorun çözüldü hepinize çok teşekkür ederim. emeğinize sağlık sizlerden çok şey öğreniyorum hakkınızı helal edin.

    private void baglan()
            {
                baglanti = new SqlConnection(@"Data Source=ERKANKESEMEN\VERITABANI;Initial Catalog=PersonelTakip;Integrated Security=True");
                baglanti.Open();
                DataTable dt = baglanti.GetSchema("Tables");
    
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                   if(!comboBoxFİRMA.Items.Contains(dt.Rows[i]["TABLE_NAME"]))
                    comboBoxFİRMA.Items.Add(dt.Rows[i]["TABLE_NAME"]);
                }
               
                baglanti.Close();           
            }

    • Yanıt Olarak İşaretleyen Erkan KESEMEN 11 Ocak 2018 Perşembe 09:45
    11 Ocak 2018 Perşembe 09:45

Tüm Yanıtlar

  • private void baglan()
    {
        baglanti = new SqlConnection(@"Data Source=ERKANKESEMEN\VERITABANI;Initial Catalog=PersonelTakip;Integrated Security=True");
        baglanti.Open();
        DataTable dt = baglanti.GetSchema("Tables");
        baglanti.Close();
        comboBoxFİRMA.DisplayMember = "TABLE_NAME";
        comboBoxFİRMA.ValueMember = "TABLE_NAME";
        comboBoxFİRMA.DataSource = dt;
    }



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




    9 Ocak 2018 Salı 08:22
  • öncelikle ilginiz için teşekkür ederim. belirttiğiniz kodu ekledim fakat aşağıdaki kod kısmında koyu renkle belirttiğim yerde  " Additional information: Bağlantı kapatılmadı. Bağlantının geçerli durumu: açık. " tarzında hata alıyorum. verdiğiniz kodun sonuna "baglanti.close();" ekleyerek denedim yine aynı hatayı aldım. 

    private void listele() { string tablo = comboBoxFİRMA.Text; string sorgu = "SELECT *FROM " + tablo; da = new SqlDataAdapter(sorgu, baglanti); ds = new DataSet(); baglanti.Open(); //Hatayı aldığım kısım da.Fill(ds, tablo); dataGridView1.DataSource = ds.Tables[tablo]; baglanti.Close(); }

    private void baglan() { using (baglanti = new SqlConnection(@"Data Source=ERKANKESEMEN\VERITABANI;Initial Catalog=PersonelTakip;Integrated Security=True")) { baglanti.Open(); DataTable dt = baglanti.GetSchema("Tables"); comboBoxFİRMA.DisplayMember = "TABLE_NAME"; comboBoxFİRMA.ValueMember = "TABLE_NAME"; comboBoxFİRMA.DataSource = dt;

    } }




    9 Ocak 2018 Salı 08:40
  • private void baglan()
            {
                baglanti = new SqlConnection(@"Data Source=ERKANKESEMEN\VERITABANI;Initial Catalog=PersonelTakip;Integrated Security=True");
                baglanti.Open();
                DataTable dt = baglanti.GetSchema("Tables");
                var tables = dt.Rows.OfType<DataRow>().Select(=> x["TABLE_NAME"].ToString() ).Distinct();
                comboBoxFİRMA.DataSource = tables;
                baglanti.Close();           
            }
    şeklinde dener misin?
    9 Ocak 2018 Salı 09:52
  • listele metodunu nerede kullanıyorsunuz bilmiyorum. Ama using ile kullanılan bağlantı, blok bitince yok ediliyor. Büyük ihtimalle sorununuzun sebebi budur. Kodu sizin kullanım alışkanlığınıza göre düzenledim. Böylece kullanabilirsiniz...

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

    9 Ocak 2018 Salı 10:28
  • Bu seferde kalın ve altı çizgili olan kısımlarda hata alıyorum.

    listele modülünü gridviewe veri aktarımı için kullanıyorum

    (=> x["TABLE_NAME"].ToString() ).Distinct();

    9 Ocak 2018 Salı 11:47
  • Lütfen anlamama yardımcı olun. Bu sorunda, bir veri kataloğu içerisinde, aynı adlı birden fazla tablo olabileceğini varsayarak çözüm aramak doğru bir yaklaşım mıdır.?.

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


    9 Ocak 2018 Salı 12:17
  • Pardon x=> olacak 

    (x=> x["TABLE_NAME"].ToString() ).Distinct();
    şeklinde

    9 Ocak 2018 Salı 12:37
  • Öncelikle ilgi ve alakanız İçin tekrar teşekkür ederim. Veri tabanında aynı isme ait tablom yok aksine bütün Tablolar Farklı isme sahipler. Comboboxta bu tablol isimleri birden fazla tekrar ediyor. Atıyorum veri tabanımda bir tane “a” isminde tablom var ve bu comboboxta 5 kere tekrar etmiş ama veri tabanımda sadece 1 adet var. Verdiğiniz kodu yarın sabah ofiste tekrar deneyeceğim.
    9 Ocak 2018 Salı 18:20
  • bu seferde böyle bir sorun çıktı. 

    https://i.hizliresim.com/jyzNbg.jpg

    10 Ocak 2018 Çarşamba 09:38
  • Sorun dediğin ne? Sen ne görüyorsun bilmiyorum ama ben boş bir form görüyorum. Detay verirsen yardımcı olmaya çalışalım. Ne bekliyordun, ne olmadı, çalıştırdığın kodlar ne? O X leri sen mi koydun yoksa PictureBox nesnesinin Error için kullandığı resim mi?
    10 Ocak 2018 Çarşamba 11:32
  • Normalde o formum dolu aşağıdaki kodu yazınca linkteki görüntüyü alıyorum ama bu kodu silince herşey normale dönüyor bahsettiğiniz o kırmızı çarpılar felan bu kodu yazınca oluyor.

    private void baglan()
            {
                baglanti = new SqlConnection(@"Data Source=ERKANKESEMEN\VERITABANI;Initial Catalog=PersonelTakip;Integrated Security=True");
                baglanti.Open();
                DataTable dt = baglanti.GetSchema("Tables");
                var tables = dt.Rows.OfType<DataRow>().Select(x=> x["TABLE_NAME"].ToString() ).Distinct();
                comboBoxFİRMA.DataSource = tables;
                baglanti.Close();           
            }

    10 Ocak 2018 Çarşamba 12:29
  • Amacım ise veri tabanındaki tablo isimlerini comboboxa çekiyorum fakat veri tabanındaki tablo isimleri 4-5 kere tekrar ediyor. Amacım tekrarları engellemek
    10 Ocak 2018 Çarşamba 12:32
  • comboBoxFİRMA.DataSource satırına breakpoint koyup kayıt geliyor mu diye tables değişkenine bakarmısın? Bir de comboBox için DisplayMember, ValueMember tanımlanmış mı? Varsa sil.
    10 Ocak 2018 Çarşamba 13:58
  • private void baglan()
    {
        using (SqlConnection bag = new SqlConnection(@"Data Source=ERKANKESEMEN\VERITABANI;Initial Catalog=PersonelTakip;Integrated Security=True"))
        {
            bag.Open();
            DataTable dt = bag.GetSchema("Tables");
            comboBoxFİRMA.DisplayMember = "TABLE_NAME";
            comboBoxFİRMA.ValueMember = "TABLE_NAME";
            comboBoxFİRMA.DataSource = dt;
        }
    }
    Bunu kullanın...

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

    10 Ocak 2018 Çarşamba 19:59
  • if (!comboStokKodu.Items.Contains(dataGridView1.Rows[i].Cells[0].Value)) 
                    {
                        comboStokKodu.Items.Add(dataGridView1.Rows[i].Cells[0].Value.ToString());
                    }

    bu şekilde bir if açarak ben sorunu çözmüştüm. Belki işine yarar

    10 Ocak 2018 Çarşamba 23:58
  • Rows[i] kısmında [i] de problem oluşuyor. 

    if (!comboStokKodu.Items.Contains(dataGridView1.Rows[i].Cells[0].Value)) 
                    {
                        comboStokKodu.Items.Add(dataGridView1.Rows[i].Cells[0].Value.ToString());
                    }

    11 Ocak 2018 Perşembe 07:01
  • Aşağıdaki gibi  comboBoxFİRMA.Items.Clear(); kodunu ekleyince tekrarlardan kurtuldum fakat bu sefer comboboxta listelenen tablolarıma tıklayıp gridviewe veri aktarmada şöyle bir hata alıyorum

    " Additional information: Fill: SourceTable adı için boş olmayan bir dize bekleniyor."    comboBoxFİRMA.Items.Clear(); bu kodu silince yine herşey eskisi gibi tekrar eden tablo isimleri geliyor ama verileri gridviewe aktarıyor.  ne illet bişeymiş ya 1 haftadır bununla uğraşıyorum.
     private void listele()
            {
                
                
                    string tablo = comboBoxFİRMA.Text;
                    string sorgu = "SELECT *FROM " + tablo;
                    da = new SqlDataAdapter(sorgu, baglanti);
                    ds = new DataSet();
                    baglanti.Open();
                    da.Fill(ds, tablo);
                    dataGridView1.DataSource = ds.Tables[tablo];
                    baglanti.Close();
                
            }


     private void baglan()
            {
                comboBoxFİRMA.Items.Clear();
                {
                    baglanti = new SqlConnection(@"Data Source=ERKANKESEMEN\VERITABANI;Initial Catalog=PersonelTakip;Integrated Security=True");
                    baglanti.Open();
                    DataTable dt = baglanti.GetSchema("Tables");
    
    
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
    
                        comboBoxFİRMA.Items.Add(dt.Rows[i]["TABLE_NAME"]);
    
                    }
    
                    baglanti.Close();
                }
            }

    11 Ocak 2018 Perşembe 08:54
  • Sorun çözüldü hepinize çok teşekkür ederim. emeğinize sağlık sizlerden çok şey öğreniyorum hakkınızı helal edin.

    private void baglan()
            {
                baglanti = new SqlConnection(@"Data Source=ERKANKESEMEN\VERITABANI;Initial Catalog=PersonelTakip;Integrated Security=True");
                baglanti.Open();
                DataTable dt = baglanti.GetSchema("Tables");
    
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                   if(!comboBoxFİRMA.Items.Contains(dt.Rows[i]["TABLE_NAME"]))
                    comboBoxFİRMA.Items.Add(dt.Rows[i]["TABLE_NAME"]);
                }
               
                baglanti.Close();           
            }

    • Yanıt Olarak İşaretleyen Erkan KESEMEN 11 Ocak 2018 Perşembe 09:45
    11 Ocak 2018 Perşembe 09:45
  • Bunun çözüm olduğunu düşünmüyorum. Muhtemelen baglan() isimli metodunuz birden fazla çalışıyor. Dolayısıyla her çalıştığında tekrar tekrar ekleme işlemi yapıyor. Asıl düzeltmeniz gereken bu metodun neden birden fazla çalıştığını anlamak olmalı.

    www.cihanyakar.com

    11 Ocak 2018 Perşembe 15:47