none
Metin belgesinden veri okuma hakkında yardım RRS feed

  • Soru

  • Herkese merhaba,

    Bir proje için txt uzantılı dosyadan belli koşullara göre satırları alip gridview'de göstermem gerekiyor aşağıdaki kodları kullanarak belli aşamaya kadar geldim ancak şöyle bir durum var gridview'e yazarken koşula uyan  satır sayısı  kadar boş satır türetip akabinde tekrar kodları çalıştırmak için butonu clicklediğimde aldığı boş satırların üstüne dolu satırları ekleyerek getirmekte umarım anlatabilmişimdir derdimi kodlarım aşağıdaki gibidir yardımcı olacak arkadaşlara şimdiden teşekkür ederim.

        public partial class Form1 : Form
        {
            class DETAY
            {
                public string TARIH { get; set; }
                public string ISLEM { get; set; }
                public string TUTAR { get; set; }
                public string KARTNO { get; set; }
    
            }
            public Form1()
            {
                bindingSource1.DataSource = typeof(DETAY);
                this.gridControl1.DataSource = this.bindingSource1;
                InitializeComponent();
               
            }
    
            private void simpleButton1_Click(object sender, EventArgs e)
            {
                StreamReader inputstream = new StreamReader("E:\\ocak\\TOPLU.TXT", Encoding.GetEncoding("windows-1254"));
                string s;
                s = inputstream.ReadLine();
                int i = 0;
                while ((s = inputstream.ReadLine()) != null)
                 
                {
                    if (s.Substring(0, 1) == "H" & s.Substring(75, 3).Trim() == "30x")
                    {
                        gridView1.AddNewRow();
                        
                            gridView1.SetRowCellValue(i,"TARIH", s.Substring(0, 1).Trim().ToString());
                       
                        i = i + 1;
                       
                    }
    
                }
              
                       
    
                inputstream.Close();
            }



    • Düzenleyen Umut Oğuz 26 Şubat 2016 Cuma 12:06
    26 Şubat 2016 Cuma 11:25

Yanıtlar

  • bindingSource1.DataSource = null;
    bindingSource1.DataSource = File.ReadAllLines("c:\\1.txt")
    .Where(p=> p.StartsWith("H") && p.EndsWith("30x"))
    .Select( p = new DETAY() { TARIH = p.SubString(1,8) , ISLEM = p.SubString(9,1), ..... }).ToList();

    dediğim gibi; 2 satır.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    26 Şubat 2016 Cuma 12:20
    Moderatör

Tüm Yanıtlar

  • Text dosya veritabani degildir. Texti veritabaniymis gibi kullanmaya calisacaginiza bir veritabanina yukleyin. En kolayi o olur.

    Text dosyalar, farkli veritabanlari arasinda data aktarmak icin kullanilabilir ve cogunlukla CSV (Comma Separated Value), Delimited ve SDF (System Data Format - Fixed Width Data) seklindedirler. Yukaridaki kodlardan bunlardan hangisi oldugu, ya da herhangi birine uyup uymadigi belli degil. 

    Text dosyanizdan birkac satir verseydiniz daha faydali cevaplar alma sansiniz olurdu. Yukaridaki kodun amaci pek anlasilmadigindan soru da anlasilmiyor.

    26 Şubat 2016 Cuma 11:55
    Yanıtlayıcı
  • Siz gridView'i sanki kodla satır eklenen bir şeymiş gibi kullanamaya çalışmışsınız. Halbuki bindingSource'unuzu yenileseniz yetecek.

    Dosyadaki tek satırı örnek olarak paylaşırsanız 1-2 satırla halledilir gibi görünüyor.

    Çetin hocam; piyasada öyle işler var ki adam text dosyasına export almış, yapacak bişey yok, mecbur parse etmek gerekiyor.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    26 Şubat 2016 Cuma 12:01
    Moderatör
  • H0000100100000600000547850160101133109000200000000000000110000000000000201694x
    G00000000000000000000000000000000000000000000000000000000000000000000000099xxx
    H0000100100000700000547011160101133402001400000000089850110001000000000201630x
    B0000000000000000000000299500002222220002000002                             xx
    S0000000000000002173204180001010000000000000000059900000000010000000000000  06
    E0000000005990000000100000012                    021732              xxxxxxxxx
    S0000000000000002173204180001010000000000000000059900000000010000000000000  06
    E0000000005990000000100000012                    021732              xxxxxxxxx
    S0000000000000002036904180000500000000000000000012900001000010000000000000  05
    E0000000001290000000100000012                    020369              xxxxxxxxx
    S0000000000000002173204180001010000000000000000059900001000010000000000000  06

    Text dosya içeriği yukarıdaki gibi zaten başka bir programın export ettiği format bunu tekrardan veritabanına aktarıp ordan gridviewe alıp rapor sunmaktansa burdan okumak daha mantıklı geldi zaten okuyorum bunu bunda bir sorunum yok ancak ilk butona click yapmamda bulduğu satır kadar boş satır atıyor ikinci clicklememde doğru verileri getiriyor ancak boş satırlarda kalıyor.

    Dahada anlaşılabilir olsun amacım H ile başlayan ve 30x ile biten satırların içeriğini almak istiyorum .


    • Düzenleyen Umut Oğuz 26 Şubat 2016 Cuma 12:11
    26 Şubat 2016 Cuma 12:10
  • bindingSource1.DataSource = null;
    bindingSource1.DataSource = File.ReadAllLines("c:\\1.txt")
    .Where(p=> p.StartsWith("H") && p.EndsWith("30x"))
    .Select( p = new DETAY() { TARIH = p.SubString(1,8) , ISLEM = p.SubString(9,1), ..... }).ToList();

    dediğim gibi; 2 satır.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    26 Şubat 2016 Cuma 12:20
    Moderatör
  • Yardımlarınız için teşekkürler sorunumu datatable kullanarak çözdüm .
    26 Şubat 2016 Cuma 15:46