Şimdi Ara

iki listbox arası veri tranferi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
14
Cevap
1
Favori
3.437
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar merhaba

    1 formda iki adet Listbox var

    bu listboxlardan 1incisi yani listbox1'e bağlı olan bir databaseden sadece 4 uncu stununda olan telefon numaralarını çekiyor

    listbox2 ise boş. listbox1i kimse görmüyor çalışılacak alan listbox2

    listbox1e bir database bağlı olduğu için item.add(textbox1.text); işlemini yapamıyoruz o sebepten dolayı çalışma alanı listbox2 oluyor

     
    String[] Numaralar = new String[listBox2.Items.Count];
    for (int i = 0; i < listBox2.Items.Count; i++)
    {
    //Numaralar[i] = listBox1.Items[i].ToString();
    listBox1.Items.Add(listBox2.Items[i].ToString());
    }


    böyle bır kod var. litbox1'in itemlerini listbox2 ye atıyoruz. fakat listbox1de görünen 5363280606 yazısı listbox2 de system.data.datarow olarak görünüyor. bunu nasıl düzeltiriz?







  • Merhaba,

    Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.

    Kolay gelsin...
  • quote:

    Orijinalden alıntı: özgür beyin

    Merhaba,

    Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.

    Kolay gelsin...


    Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım

    bu şekil kullanmamın nedeni

    listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için

    fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...




  • quote:

    Orijinalden alıntı: Bay_HaKaN

    quote:

    Orijinalden alıntı: özgür beyin

    Merhaba,

    Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.

    Kolay gelsin...


    Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım

    bu şekil kullanmamın nedeni

    listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için

    fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...

    Kodlarla yaparken kullandığınız sql sorgusunu yazarsanız yardımcı olabilirim bütün satırlardaki 4. sutunu almanıza. Onu söylersem size göre sorun çözülecek ama çok yanlış bir yöntem kullanmış olacaksınız, amacım sizi yanlış yöntemlere sürüklemek değil bu yüzden bu yöntemi önerdim. Neden yanlış bir yöntem; çünkü gereksiz işlemler yapılıyor ve buda programın performansını etkiler. Hem veriler veritabanından çekiliyor, hemde onlar ikinci bir listbox'a aktarılıyor. Performans kaybının yanında birde gereksiz kod yazarak kendinizi de yormuş olacaksınız. Bunu bir şirkette, bir firmada yapmış olsanız iş gücü kaybına neden olurdu. Bu nedenle sizi daha iyi yöntemlere yönlendirmeye çalışıyorum.




  • quote:

    Orijinalden alıntı: özgür beyin

    quote:

    Orijinalden alıntı: Bay_HaKaN

    quote:

    Orijinalden alıntı: özgür beyin

    Merhaba,

    Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.

    Kolay gelsin...


    Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım

    bu şekil kullanmamın nedeni

    listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için

    fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...

    Kodlarla yaparken kullandığınız sql sorgusunu yazarsanız yardımcı olabilirim bütün satırlardaki 4. sutunu almanıza. Onu söylersem size göre sorun çözülecek ama çok yanlış bir yöntem kullanmış olacaksınız, amacım sizi yanlış yöntemlere sürüklemek değil bu yüzden bu yöntemi önerdim. Neden yanlış bir yöntem; çünkü gereksiz işlemler yapılıyor ve buda programın performansını etkiler. Hem veriler veritabanından çekiliyor, hemde onlar ikinci bir listbox'a aktarılıyor. Performans kaybının yanında birde gereksiz kod yazarak kendinizi de yormuş olacaksınız. Bunu bir şirkette, bir firmada yapmış olsanız iş gücü kaybına neden olurdu. Bu nedenle sizi daha iyi yöntemlere yönlendirmeye çalışıyorum.



    datagridden kod ile listbox1 i doldurmak ıstedıgımde

    formun loadına

    listBox1.Items.Add(frm1.müşteri.dataGridView1.Columns[4]);

    kodumu yazıyorum programı çalıştırdığımda listbox1 in içinde resımdekı gıbı bır hata alıyorum

     iki listbox arası veri tranferi


    fakat listbox1i databasee kendi özelliği ile bağladığımda tüm numaraları liste halinde alabılıyorum fakat textboxtan listboxa ekleme yapamıyorum. database bağlantısı olduğu için



    < Bu mesaj bu kişi tarafından değiştirildi Bay_HaKaN -- 17 Ocak 2014; 12:29:14 >




  • quote:

    Orijinalden alıntı: Bay_HaKaN

    quote:

    Orijinalden alıntı: özgür beyin

    quote:

    Orijinalden alıntı: Bay_HaKaN

    quote:

    Orijinalden alıntı: özgür beyin

    Merhaba,

    Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.

    Kolay gelsin...


    Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım

    bu şekil kullanmamın nedeni

    listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için

    fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...

    Kodlarla yaparken kullandığınız sql sorgusunu yazarsanız yardımcı olabilirim bütün satırlardaki 4. sutunu almanıza. Onu söylersem size göre sorun çözülecek ama çok yanlış bir yöntem kullanmış olacaksınız, amacım sizi yanlış yöntemlere sürüklemek değil bu yüzden bu yöntemi önerdim. Neden yanlış bir yöntem; çünkü gereksiz işlemler yapılıyor ve buda programın performansını etkiler. Hem veriler veritabanından çekiliyor, hemde onlar ikinci bir listbox'a aktarılıyor. Performans kaybının yanında birde gereksiz kod yazarak kendinizi de yormuş olacaksınız. Bunu bir şirkette, bir firmada yapmış olsanız iş gücü kaybına neden olurdu. Bu nedenle sizi daha iyi yöntemlere yönlendirmeye çalışıyorum.



    datagridden kod ile listbox1 i doldurmak ıstedıgımde

    formun loadına

    listBox1.Items.Add(frm1.müşteri.dataGridView1.Columns[4]);

    kodumu yazıyorum programı çalıştırdığımda listbox1 in içinde resımdekı gıbı bır hata alıyorum

     iki listbox arası veri tranferi


    fakat listbox1i databasee kendi özelliği ile bağladığımda tüm numaraları liste halinde alabılıyorum fakat textboxtan listboxa ekleme yapamıyorum. database bağlantısı olduğu için

    DataGridView'den değil hocam kodlarla normal bir bağlantı sağlayıp verileri bu bağlantı üzerinden çekmelisiniz. DataGridView'ide bu bağlantı ile doldurmalısınız. Googlede biraz araştırma yaparsanız "C# veritabanı bağlantısı" şeklinde ilgili yazılara ulaşabilirsiniz. Veritabanı bağlantısını manuel olarak kendiniz kodla yapmanız her zaman daha iyidir.




  • quote:

    Orijinalden alıntı: özgür beyin

    quote:

    Orijinalden alıntı: Bay_HaKaN

    quote:

    Orijinalden alıntı: özgür beyin

    quote:

    Orijinalden alıntı: Bay_HaKaN

    quote:

    Orijinalden alıntı: özgür beyin

    Merhaba,

    Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.

    Kolay gelsin...


    Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım

    bu şekil kullanmamın nedeni

    listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için

    fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...

    Kodlarla yaparken kullandığınız sql sorgusunu yazarsanız yardımcı olabilirim bütün satırlardaki 4. sutunu almanıza. Onu söylersem size göre sorun çözülecek ama çok yanlış bir yöntem kullanmış olacaksınız, amacım sizi yanlış yöntemlere sürüklemek değil bu yüzden bu yöntemi önerdim. Neden yanlış bir yöntem; çünkü gereksiz işlemler yapılıyor ve buda programın performansını etkiler. Hem veriler veritabanından çekiliyor, hemde onlar ikinci bir listbox'a aktarılıyor. Performans kaybının yanında birde gereksiz kod yazarak kendinizi de yormuş olacaksınız. Bunu bir şirkette, bir firmada yapmış olsanız iş gücü kaybına neden olurdu. Bu nedenle sizi daha iyi yöntemlere yönlendirmeye çalışıyorum.



    datagridden kod ile listbox1 i doldurmak ıstedıgımde

    formun loadına

    listBox1.Items.Add(frm1.müşteri.dataGridView1.Columns[4]);

    kodumu yazıyorum programı çalıştırdığımda listbox1 in içinde resımdekı gıbı bır hata alıyorum

     iki listbox arası veri tranferi


    fakat listbox1i databasee kendi özelliği ile bağladığımda tüm numaraları liste halinde alabılıyorum fakat textboxtan listboxa ekleme yapamıyorum. database bağlantısı olduğu için

    DataGridView'den değil hocam kodlarla normal bir bağlantı sağlayıp verileri bu bağlantı üzerinden çekmelisiniz. DataGridView'ide bu bağlantı ile doldurmalısınız. Googlede biraz araştırma yaparsanız "C# veritabanı bağlantısı" şeklinde ilgili yazılara ulaşabilirsiniz. Veritabanı bağlantısını manuel olarak kendiniz kodla yapmanız her zaman daha iyidir.



    hocam geç cevap verişimin sebebi dediğiniz yöntemi arayıp nette bulmamdandır. fakat olmuyor. aslında sorunum çok basit ama bulamıyorum

    diyelimki sizin ili adet listboxunuz var

    listbox1 de databaseinizde olan veriler var
    mesela

    1
    2
    3
    4

    şeklinde alt alta geçmiş. bir butonunuz olduğunu var sayalım
    >> işareti olan. bu butona basınca listbox1 deki tüm verileri listbox ikiye atacak... yanı bu uygulamayı günlük hayattada muhakkak bır web sayfasında görmüşsünüzdür.

    bunun komutu nedir?

    sanırım bu sorumun cevabı olacaktır




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • quote:

    Orijinalden alıntı: Bay_HaKaN

    hocam geç cevap verişimin sebebi dediğiniz yöntemi arayıp nette bulmamdandır. fakat olmuyor. aslında sorunum çok basit ama bulamıyorum

    diyelimki sizin ili adet listboxunuz var

    listbox1 de databaseinizde olan veriler var
    mesela

    1
    2
    3
    4

    şeklinde alt alta geçmiş. bir butonunuz olduğunu var sayalım
    >> işareti olan. bu butona basınca listbox1 deki tüm verileri listbox ikiye atacak... yanı bu uygulamayı günlük hayattada muhakkak bır web sayfasında görmüşsünüzdür.

    bunun komutu nedir?

    sanırım bu sorumun cevabı olacaktır

    Anlatamıyorum sanırım hocam, bu kullandığınız yöntem yanlış bir yöntem bu şekilde yapmamanız gerekiyor. Bende direkt o sorunu çözen yöntemi vermek istemiyorum çünkü sizi yanlış yönlendirmiş olurum. Benim önerdiğim yöntemle ilgili bir örnek yaptım isterseniz bunu anlatayım.

    Ben Access veritabanı kullandım basit olaması açısından bunların aynısını mssql yada mysql ile de kullanabilirsiniz sadece bağlantı için kullandığınız sınıfı değiştirmeniz yeterli. Başlayalım:

    Öncelikle formumuza bir adet dataGridView ve listbox nesnesi ekleyelim. Daha sonra kod tarafına geçerek public bir OleDbConnection(mssqlde bu SqlConnection'dır) oluşturun ve connectionstring'inizi kullanarak bir oledbconnection nesnesi yaratın:

    public OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=database.accdb;Persist Security Info=False;");

    Devamında bir method oluşturuyoruz ve ismini GridViewDoldur olarak yapıyoruz yada size kalmış istediğiniz ismi verebilirsiniz fakat türü void olmak zorunda:
    void GridViewDoldur()
    {
    // burada method'umuzu oluşturacağız
    }

    Devamında yorum satırı ile belirttiğim kısmı dolduracağız, yukarıda tanımlamış olduğumuz conn isimli bağlantımızı burada açıyoruz öncelikle:
    conn.Open();

    Daha sonra bir adet OleDbDataAdapter(mssqlde bu SqlDataAdapter nesnesidir.) oluşturuyoruz ve querystringini veritabanımızdaki ilgili tablodan tüm satır ve sutunları alacak şekilde ayarlıyoruz:
    OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Isimler", conn);

    Daha sonra bir adet DataSet oluşturuyoruz:
    DataSet dsIsımler = new DataSet();

    Devam edecek olursak, oluşturduğunuz adapter nesnesini kullanarak dsIsımler adlı dataSet'i dolduruyoruz ve tablomuza bir isim veriyoruz:
    adapter.Fill(dsIsımler, "tablo");

    Daha sonra ise gridView ile ilgili tanımlamaları yapıyoruz:
    dataGridView1.DataSource = dsIsımler; //gridView'ımızın veri kaynağını dsIsımler adlı dataSet'imize bağlıyoruz
    dataGridView1.DataMember = "tablo"; // dataSet'deki tablo ismimizi yazıyoruz.

    ve son olarak açtığınız bağlantıyı kapatıyoruz:
    conn.Close();

    Burada GridViewDoldur isimli methodumuz bitti bunu formun load eventine çağırıyoruz. Daha sonra yeni bir void türünde method oluşturuyoruz ve adını ListBoxDoldur yapıyoruz. ve methodumuzun içini doldurmaya başlıyoruz. Yine önce bağlantımızı açmakla işe başlıyoruz:
    conn.Open();

    Daha sonra bir OleDbCommand(mssql -> SqlCommand) oluşturuyoruz ve querystring'imizi veritabanından sadece telefon numaralarının olduğu kolonu alacak şekilde yazıyoruz:
    OleDbCommand cmd = new OleDbCommand("Select TelefonNo FROM Isimler",conn);

    Daha sonra bir OleDbDataReader oluşturuyoruz ve yukarda oluşturduğunuz cmd isimli OleDbDataCommand'ın ExecuteReader(); isimli methoduna eşitliyoruz bunu:
    OleDbDataReader reader = cmd.ExecuteReader(); //burda commandımız artık bir reader'a dönüşmüş oldu.

    Devamında bir while döngüsü içerisinde listBox'a veri ekleme işlemi yapıyoruz:
    while(reader.Read()) //satır satır verileri okutmak için
    {
    listBox1.Items.Add(reader[0].ToString()); // gelen verinin listbox1'e eklenmesi için
    }

    daha sonra yine açtığımız bağlantıları kapatıyoruz. reader.Close() ve conn.Close() kullanarak. ListBoxDoldur methodumuzda bu kadar bunuda yine formun load eventine çağırabilirsiniz.

    Artık istediğiniz gibi listBox1'e veri ekleme işlemi yapabilirsiniz. Veritabanı bağlantısını her zaman bu şekilde yapmanız sizin ve programın performansı açısından daha faydalı olacaktır. Ayrıca birçok eksiğiniz olduğunu tahmin ediyorum C# ve veritabanı işlemlerini biraz daha çalışmalısınız.

    Umarım anlaşılabilir bi' şekilde anlatabilmişimdir.
    Kolay gelsin...




  • quote:

    Orijinalden alıntı: özgür beyin

    quote:

    Orijinalden alıntı: Bay_HaKaN

    hocam geç cevap verişimin sebebi dediğiniz yöntemi arayıp nette bulmamdandır. fakat olmuyor. aslında sorunum çok basit ama bulamıyorum

    diyelimki sizin ili adet listboxunuz var

    listbox1 de databaseinizde olan veriler var
    mesela

    1
    2
    3
    4

    şeklinde alt alta geçmiş. bir butonunuz olduğunu var sayalım
    >> işareti olan. bu butona basınca listbox1 deki tüm verileri listbox ikiye atacak... yanı bu uygulamayı günlük hayattada muhakkak bır web sayfasında görmüşsünüzdür.

    bunun komutu nedir?

    sanırım bu sorumun cevabı olacaktır

    Anlatamıyorum sanırım hocam, bu kullandığınız yöntem yanlış bir yöntem bu şekilde yapmamanız gerekiyor. Bende direkt o sorunu çözen yöntemi vermek istemiyorum çünkü sizi yanlış yönlendirmiş olurum. Benim önerdiğim yöntemle ilgili bir örnek yaptım isterseniz bunu anlatayım.

    Ben Access veritabanı kullandım basit olaması açısından bunların aynısını mssql yada mysql ile de kullanabilirsiniz sadece bağlantı için kullandığınız sınıfı değiştirmeniz yeterli. Başlayalım:

    Öncelikle formumuza bir adet dataGridView ve listbox nesnesi ekleyelim. Daha sonra kod tarafına geçerek public bir OleDbConnection(mssqlde bu SqlConnection'dır) oluşturun ve connectionstring'inizi kullanarak bir oledbconnection nesnesi yaratın:

    public OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=database.accdb;Persist Security Info=False;");

    Devamında bir method oluşturuyoruz ve ismini GridViewDoldur olarak yapıyoruz yada size kalmış istediğiniz ismi verebilirsiniz fakat türü void olmak zorunda:
    void GridViewDoldur()
    {
    // burada method'umuzu oluşturacağız
    }

    Devamında yorum satırı ile belirttiğim kısmı dolduracağız, yukarıda tanımlamış olduğumuz conn isimli bağlantımızı burada açıyoruz öncelikle:
    conn.Open();

    Daha sonra bir adet OleDbDataAdapter(mssqlde bu SqlDataAdapter nesnesidir.) oluşturuyoruz ve querystringini veritabanımızdaki ilgili tablodan tüm satır ve sutunları alacak şekilde ayarlıyoruz:
    OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Isimler", conn);

    Daha sonra bir adet DataSet oluşturuyoruz:
    DataSet dsIsımler = new DataSet();

    Devam edecek olursak, oluşturduğunuz adapter nesnesini kullanarak dsIsımler adlı dataSet'i dolduruyoruz ve tablomuza bir isim veriyoruz:
    adapter.Fill(dsIsımler, "tablo");

    Daha sonra ise gridView ile ilgili tanımlamaları yapıyoruz:
    dataGridView1.DataSource = dsIsımler; //gridView'ımızın veri kaynağını dsIsımler adlı dataSet'imize bağlıyoruz
    dataGridView1.DataMember = "tablo"; // dataSet'deki tablo ismimizi yazıyoruz.

    ve son olarak açtığınız bağlantıyı kapatıyoruz:
    conn.Close();

    Burada GridViewDoldur isimli methodumuz bitti bunu formun load eventine çağırıyoruz. Daha sonra yeni bir void türünde method oluşturuyoruz ve adını ListBoxDoldur yapıyoruz. ve methodumuzun içini doldurmaya başlıyoruz. Yine önce bağlantımızı açmakla işe başlıyoruz:
    conn.Open();

    Daha sonra bir OleDbCommand(mssql -> SqlCommand) oluşturuyoruz ve querystring'imizi veritabanından sadece telefon numaralarının olduğu kolonu alacak şekilde yazıyoruz:
    OleDbCommand cmd = new OleDbCommand("Select TelefonNo FROM Isimler",conn);

    Daha sonra bir OleDbDataReader oluşturuyoruz ve yukarda oluşturduğunuz cmd isimli OleDbDataCommand'ın ExecuteReader(); isimli methoduna eşitliyoruz bunu:
    OleDbDataReader reader = cmd.ExecuteReader(); //burda commandımız artık bir reader'a dönüşmüş oldu.

    Devamında bir while döngüsü içerisinde listBox'a veri ekleme işlemi yapıyoruz:
    while(reader.Read()) //satır satır verileri okutmak için
    {
    listBox1.Items.Add(reader[0].ToString()); // gelen verinin listbox1'e eklenmesi için
    }

    daha sonra yine açtığımız bağlantıları kapatıyoruz. reader.Close() ve conn.Close() kullanarak. ListBoxDoldur methodumuzda bu kadar bunuda yine formun load eventine çağırabilirsiniz.

    Artık istediğiniz gibi listBox1'e veri ekleme işlemi yapabilirsiniz. Veritabanı bağlantısını her zaman bu şekilde yapmanız sizin ve programın performansı açısından daha faydalı olacaktır. Ayrıca birçok eksiğiniz olduğunu tahmin ediyorum C# ve veritabanı işlemlerini biraz daha çalışmalısınız.

    Umarım anlaşılabilir bi' şekilde anlatabilmişimdir.
    Kolay gelsin...


    daha önce dediğini yaptım

    şuan kod ile bağlıyorum

    bak

     
    string sağlayıcı = ("Provider=Microsoft.Ace.OleDb.12.0;Data Source=Bilgi.accdb;Persist Security Info=True;Jet OLEDB:Database Password=z6e9u8mez");
    OleDbConnection bağlanti;
    OleDbDataAdapter verial;
    DataSet veri;
    string sorgu = "Select No1 From Tablo5";
    bağlanti = new OleDbConnection(sağlayıcı);
    verial = new OleDbDataAdapter(sorgu, bağlanti);
    veri = new DataSet();
    verial.Fill(veri);
    listBox2.DataSource = veri.Tables[0];
    listBox2.DisplayMember = "No1";


    şuan listbox1 e veri aktarmak için kullandığım kod bu. aynen senın dediğin gibi kod ile bağla dedin kod ile bağladım

    şimdi deneme şansın varsa eğer denermisin lütfen senın dediğin kodlada aynı şey oluyor... listbox1'e exktradan numara ekleyelim

    Virtual studio diyorki listbox1'in datasource özelliği etkin olduğundan bu işlemi gerçekleştiremezsiniz.

    peki numara silelim ? yine aynı hata. Listbox1in koleksiyonu veritabanından geliyor. ister kodla bağla istersen listboxun sağ ust köşesindeki kendi özelliği ile bağla sonuç aynı...

    şimdi burada yapılmak isteneni net olarak anlatayım

    benim 1000 tane telefon numaram var... bunların hepsı database de ve listbox1e aktardım

    ben bu 1000 tane numaranın 200 tanesine SMS atacağım dıyelım kı. eğer dediğin yolla devam edersek

    1. bu numaraları silemem
    2. buaraya numara ekleyemem


    peki benim yapmak istediğim nedir.

    listbox1e databaseden numara gelsin

     
    string sağlayıcı = ("Provider=Microsoft.Ace.OleDb.12.0;Data Source=Bilgi.accdb;Persist Security Info=True;Jet OLEDB:Database Password=z6e9u8mez");
    OleDbConnection bağlanti;
    OleDbDataAdapter verial;
    DataSet veri;
    string sorgu = "Select No1 From Tablo5";
    bağlanti = new OleDbConnection(sağlayıcı);
    verial = new OleDbDataAdapter(sorgu, bağlanti);
    veri = new DataSet();
    verial.Fill(veri);
    listBox2.DataSource = veri.Tables[0];
    listBox2.DisplayMember = "No1";


    geliyor.

    benim bir butonum olsun hepsini seçsin

     

    listBox2.SelectionMode = SelectionMode.MultiExtended;
    for (int i = 0; i < listBox1.Items.Count; i++)
    listBox1.SetSelected(i, true);


    Seçiyor.

    simdi bu seçtiğim itemlerin sadece TEXT özelliklerini listbox2 ye koyalamalıyım kı yeni numaralar ekleyeyim yada aralarından bazı numaraları çıkartabıleyım...

    şuan listbox2.item.add(listbox1.select.items yada items.tostring()); dediğimde listbox2 ye gelen item system.data.datarow şeklinde dönüyor.

    ama şöyle dersek listbox2.items.add(listbox1.text) işte ozaman numara geliyor ama döngüye girmediğinden sadece 1 numara geliyor.

    peki döngüye soktuğumuzda

    for (int i = 0; i < listBox2.Items.Count; i++)
    {
    listbox2.items.add(listbox1.text.tostring())
    }

    aşağıdaki sonuç oluyor
    3
    5

    ben listbox1i database ınden cektıgım ıcın bır suru değişkenle geliyor anladığım kadari ile yanı item değil index değil Text lazım bana

    bir döngü içerisinde itemlerin sadece tex özelliğini almalıyım




  • ListBox1'e verileri bu şekilde ekleyin:

    conn.Open();

    OleDbCommand cmd = new OleDbCommand("Select No1 From Tablo5",conn);
    OleDbDataReader reader = cmd.ExecuteReader();

    while(reader.Read())
    {
    listBox1.Items.Add(reader[0].ToString());
    }

    reader.Close();
    conn.Close();

    daha sonra listBox2 ye bu şekilde aktarabilirsiniz:
    for(int i = 0; i<listBox1.Items.Count;i++)
    {
    listBox2.Add(listBox1.Items.ToString());
    }
  • quote:

    Orijinalden alıntı: özgür beyin

    ListBox1'e verileri bu şekilde ekleyin:

    conn.Open();

    OleDbCommand cmd = new OleDbCommand("Select No1 From Tablo5",conn);
    OleDbDataReader reader = cmd.ExecuteReader();

    while(reader.Read())
    {
    listBox1.Items.Add(reader[0].ToString());
    }

    reader.Close();
    conn.Close();

    daha sonra listBox2 ye bu şekilde aktarabilirsiniz:
    for(int i = 0; i<listBox1.Items.Count;i++)
    {
    listBox2.Add(listBox1.Items.ToString());
    }

    ilgin yardımların için çok teşekkür ederım

    ama dedıgın gıbı

    for(int i = 0; i<listBox1.Items.Count;i++)
    {
    listBox2.Add(listBox1.Items.ToString());
    }


    yaptığımızda system.data.datarow olarak alıyorum hala..

    şu şekil yaptım.

    Listbox2 yi sildim

    listbox1 ınde datagrıd baglantısını ıpral ettırdım

    uygulamamdaki kayıt formunun numara yazılan textındekı değeri kayıt butonu ile bir numaralar.txt ye kayıt ettırdım
    daha sonra numaları ısleyecegım formun loadına bu numaralar.txt'i oku dedım

    aynı formda olurda numara eklemem gerekırse dıye textboxun degerınıde numaralar.txt' kayıt ettırdım.

    böylece sorunumu çözmüş oldum. performans ve verımlılık hakkında bır degerlendırmem yok uygulama ıle ılgılı

    zaten programım çokta grafıksel bir formatta degıl... hata yapmadan çalışıyor... 50000 kayıttan sonra ne olur onu bılemem :D




  • quote:

    Orijinalden alıntı: Bay_HaKaN

    quote:

    Orijinalden alıntı: özgür beyin

    ListBox1'e verileri bu şekilde ekleyin:

    conn.Open();

    OleDbCommand cmd = new OleDbCommand("Select No1 From Tablo5",conn);
    OleDbDataReader reader = cmd.ExecuteReader();

    while(reader.Read())
    {
    listBox1.Items.Add(reader[0].ToString());
    }

    reader.Close();
    conn.Close();

    daha sonra listBox2 ye bu şekilde aktarabilirsiniz:
    for(int i = 0; i<listBox1.Items.Count;i++)
    {
    listBox2.Add(listBox1.Items.ToString());
    }

    ilgin yardımların için çok teşekkür ederım

    ama dedıgın gıbı

    for(int i = 0; i<listBox1.Items.Count;i++)
    {
    listBox2.Add(listBox1.Items.ToString());
    }


    yaptığımızda system.data.datarow olarak alıyorum hala..

    şu şekil yaptım.

    Listbox2 yi sildim

    listbox1 ınde datagrıd baglantısını ıpral ettırdım

    uygulamamdaki kayıt formunun numara yazılan textındekı değeri kayıt butonu ile bir numaralar.txt ye kayıt ettırdım
    daha sonra numaları ısleyecegım formun loadına bu numaralar.txt'i oku dedım

    aynı formda olurda numara eklemem gerekırse dıye textboxun degerınıde numaralar.txt' kayıt ettırdım.

    böylece sorunumu çözmüş oldum. performans ve verımlılık hakkında bır degerlendırmem yok uygulama ıle ılgılı

    zaten programım çokta grafıksel bir formatta degıl... hata yapmadan çalışıyor... 50000 kayıttan sonra ne olur onu bılemem :D

    Hocam forumun gazabına uğradık heralde. Önceki kodumda listBox2.Add(listBox1.Items [ i ].ToString()); kalın yazdığım yer çıkmamış sanırım forum sistemi onu başka bi'şey olarak algılamış o mesajımda alıntıya tıklarsanız orda görebilirsiniz. Şimdi aralarında boşluk bırakarak yazdım ki sorun olmasın diye sorun ordan kaynaklanıyor listBox2'ye ekleme işlemini bu şekilde yapabilirsiniz.

    for(int i = 0; i<listBox1.Items.Count;i++)
    {
    listBox2.Add(listBox1.Items [ i ].ToString());
    }




  • quote:

    Orijinalden alıntı: özgür beyin

    quote:

    Orijinalden alıntı: Bay_HaKaN

    quote:

    Orijinalden alıntı: özgür beyin

    ListBox1'e verileri bu şekilde ekleyin:

    conn.Open();

    OleDbCommand cmd = new OleDbCommand("Select No1 From Tablo5",conn);
    OleDbDataReader reader = cmd.ExecuteReader();

    while(reader.Read())
    {
    listBox1.Items.Add(reader[0].ToString());
    }

    reader.Close();
    conn.Close();

    daha sonra listBox2 ye bu şekilde aktarabilirsiniz:
    for(int i = 0; i<listBox1.Items.Count;i++)
    {
    listBox2.Add(listBox1.Items.ToString());
    }

    ilgin yardımların için çok teşekkür ederım

    ama dedıgın gıbı

    for(int i = 0; i<listBox1.Items.Count;i++)
    {
    listBox2.Add(listBox1.Items.ToString());
    }


    yaptığımızda system.data.datarow olarak alıyorum hala..

    şu şekil yaptım.

    Listbox2 yi sildim

    listbox1 ınde datagrıd baglantısını ıpral ettırdım

    uygulamamdaki kayıt formunun numara yazılan textındekı değeri kayıt butonu ile bir numaralar.txt ye kayıt ettırdım
    daha sonra numaları ısleyecegım formun loadına bu numaralar.txt'i oku dedım

    aynı formda olurda numara eklemem gerekırse dıye textboxun degerınıde numaralar.txt' kayıt ettırdım.

    böylece sorunumu çözmüş oldum. performans ve verımlılık hakkında bır degerlendırmem yok uygulama ıle ılgılı

    zaten programım çokta grafıksel bir formatta degıl... hata yapmadan çalışıyor... 50000 kayıttan sonra ne olur onu bılemem :D

    Hocam forumun gazabına uğradık heralde. Önceki kodumda listBox2.Add(listBox1.Items [ i ].ToString()); kalın yazdığım yer çıkmamış sanırım forum sistemi onu başka bi'şey olarak algılamış o mesajımda alıntıya tıklarsanız orda görebilirsiniz. Şimdi aralarında boşluk bırakarak yazdım ki sorun olmasın diye sorun ordan kaynaklanıyor listBox2'ye ekleme işlemini bu şekilde yapabilirsiniz.

    for(int i = 0; i<listBox1.Items.Count;i++)
    {
    listBox2.Add(listBox1.Items [ i ].ToString());
    }


    biraz geç cevaplamış olsamda cevabın için cok ama cok tesekkur ederım.




  • VERİ TABANSIZ FORM1 DEKİ LİTBOXTAKİ BİLGİLERİ BASKA BİR FORMDAKİ LİSTBOXA AKTARA BİLİRMİYİZ YARDIM EDERSENİ İİ OLUR
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.