C# DataTable “Bu satır başka bir tabloya ait” Hatası Çözümü

C# DataTable “Bu satır başka bir tabloya ait” Hatası Çözümü

27 Kasım 2018 0 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 48
Yaklaşık okuma süresi : 9 DK
C# Thread Sleep ile İşlem Süresini Uzatmak
C# FolderBrowserDialog Kullanımı - Örnekli Anlatım
C# DataTable “Bu satır başka bir tabloya ait” Hatası Çözümü
4 (80%) 1 Oy

C# DataTable “Bu satır başka bir tabloya ait” Hatası Çözümü, yazım ile C sharp eğitim setime yeni bir hata çözümü daha ekliyorum. Bu hatayı bir datatable’den başka bir datatable ‘ye aktarırken yaşadım. Sizlerinde bu hatayı yaşayabilme ihtimalinizi göz önüne alarak bu dersi yazmak istedim.

C# DataTable “Bu satır başka bir tabloya ait” Hatası Çözümü

Bu hatayı yaşamama sebep olan durumun senaryosu şöyledir;

Elimde kolonları aynı olan 5 datatable var. Bu datatable’lerin son satırlarını alarak farklı bir datatable ‘ye atıp onu da gridcontrol de göstermem gerekiyor. Ancak bu 5 datatable’den alınan son satırlar (DataRow) ları, ana datatable’ye atarken  Bu satır başka bir tabloya ait hatası aldım. Bu hatayı daha önce hiç yaşamamıştım. Biraz araştırma yaparak sorunu nasıl çözeceğimi buldum.

Öncelikle DataTable ‘lerden son satıları nasıl aldığımı görelim.

Not: Bu ders içeriğini githup projemde bulabilirsiniz. Aşağıda linkini vereceğim. 😉

            DataTable dt1 = new DataTable();
            dt1.TableName = "Tablo1";
            dr = dt1.Rows[dt1.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            

            DataTable dt2 = new DataTable();
            dt2.TableName = "Tablo2";
            dr = dt2.Rows[dt2.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.


            DataTable dt3 = new DataTable();
            dt3.TableName = "Tablo3";
            dr = dt3.Rows[dt3.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.


            DataTable dt4 = new DataTable();
            dt4.TableName = "Tablo4";
            dr = dt4.Rows[dt4.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.


            DataTable dt5 = new DataTable();
            dt5.TableName = "Tablo5";
            dr = dt5.Rows[dt5.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.

Yukarıda gördüğünüz kodlarla, datatable’nin son satırını alabiliyoruz. Şimdi bu aldığımız satırları dt_Son adı verdiğimiz ana datatable’mize alacağız. Kodlarımıza dt_son datatable’mizi ve dr DataRow’umuzu tanımladıktan sonra, tablolarımızdan aldığımız datarow’ları yeni oluşturduğumuz datarow’a yükledik. O datarow’u da dt_son’a yükledik.

            DataTable dt_son = new DataTable();

            DataRow dr;

            DataTable dt1 = new DataTable();
            dt1.TableName = "Tablo1";
            dr = dt1.Rows[dt1.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            dt_son.Rows.Add(dr);

            DataTable dt2 = new DataTable();
            dt2.TableName = "Tablo2";
            dr = dt2.Rows[dt2.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            dt_son.Rows.Add(dr);

            DataTable dt3 = new DataTable();
            dt3.TableName = "Tablo3";
            dr = dt3.Rows[dt3.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            dt_son.Rows.Add(dr);

            DataTable dt4 = new DataTable();
            dt4.TableName = "Tablo4";
            dr = dt4.Rows[dt4.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            dt_son.Rows.Add(dr);

            DataTable dt5 = new DataTable();
            dt5.TableName = "Tablo5";
            dr = dt5.Rows[dt5.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            dt_son.Rows.Add(dr);

NOT: Buradaki işlemleri kısaltmak açısından aşağıdaki gibi kullanabiliriz.

            DataTable dt5 = new DataTable();
            dt5.TableName = "Tablo5";
            dt_son.Rows.Add(dt5.Rows[dt5.Rows.Count - 1]);

Bu bilgiyi de verdikten sonra hatayı almaya hazırız. Böyle bir senaryoda bu hatayı alıyoruz. Tabi ki datatable’lerimiz içerisinde satırlar olması gerekiyor. Yoksa -1 konumunda satır yok hatası alırız.

İlgili İçerik  C# Mouse Koordinatlarını Almak

Biliyorum konuyu fazla uzattım ama bunları göstermek istedim. Şimdi asıl olaya gelelim.

Bize lazım olan metod İmportRow metodudur. Görelim.

            DataTable dt_son = new DataTable();
            DataRow dr;

            DataTable dt1 = new DataTable();
            dt1.TableName = "Tablo1";
            dr = dt1.Rows[dt1.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            //dt_son.Rows.Add(dr);
            dt_son.ImportRow(dr);

            DataTable dt2 = new DataTable();
            dt2.TableName = "Tablo2";
            dr = dt2.Rows[dt2.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
             //dt_son.Rows.Add(dr);
            dt_son.ImportRow(dr);

            DataTable dt3 = new DataTable();
            dt3.TableName = "Tablo3";
            dr = dt3.Rows[dt3.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            //dt_son.Rows.Add(dr);
            dt_son.ImportRow(dr);

            DataTable dt4 = new DataTable();
            dt4.TableName = "Tablo4";
            dr = dt4.Rows[dt4.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            //dt_son.Rows.Add(dr);
            dt_son.ImportRow(dr);

            DataTable dt5 = new DataTable();
            dt5.TableName = "Tablo5";
            dr = dt5.Rows[dt5.Rows.Count - 1]; // eğer kolon sayısı 0 ise hata verecektir.
            //dt_son.Rows.Add(dr);
            dt_son.ImportRow(dr);

Gördüğünüz gibi, dt_son.importrow metodunu kullanarak başka bir tabloya ait olan satırı başka bir tabloya atabiliyoruz.

Hepsi bu kadar arkadaşlar. Bu dersimizde bu kadardı.  Hata çözüm dersi olduğundan elimden geldiğince açık ve hatanın sebebini de vererek açıklamaya çalıştım.


C# DataTable “Bu satır başka bir tabloya ait” Hatası Çözümü, dersimizde bu kadardı dostlar. Umarım faydalı bir yazı olmuştur.

C# eğitim seti sayfasına gitmek için tıklayabilirsiniz.

Ayrıca kısa süre önce tüm YENİ derslerimi tek bir proje içinde yapıp github’a yükleyeceğim demiştim. Bu dersimde o projenin içerisinde bir klasör olarak yerini almıştır. Buraya tıklayarak projeye ulaşabilirsiniz.

Sağlıcakla ve takipte kalın 😉

Bol kodlu günler…

C# Thread Sleep ile İşlem Süresini Uzatmak
C# FolderBrowserDialog Kullanımı - Örnekli Anlatım
Mustafa Bükülmez

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım.

İlgili İçerik  C# Form Ekran Konumu Ayarlama

Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir.

Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır.Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.