• 16-01-2013, 09:21:49
    #1
    Textbox1 - textbox2
    textbox3 - textbox3
    textbox4 - textbox5

    KaydetButonu


    yanyana 6 textbox var diyelim. Kaydete bastığımızda bu kayıtların veritabanına ayrı ID ler ile kayıt olmasını nasıl sağlarım.

    birde diyelim sadece ilk satırdaki text1 ve text2 doluysa o kaydı yapıp digerlerine geçmemesi lazım. Eğer tüm textboxlar dolu ise yeni ID ler oluşturup yazması gerekiyor.

    normalde insert into ile istediğim textleri yazdırabiliyorum fakat çoklu textboxlar olaya girince tıkandım.
  • 16-01-2013, 09:44:06
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Textbox'ların dinamik mi yoksa sabit mi?
  • 17-01-2013, 11:01:42
    #3
    rob33n adlı üyeden alıntı: mesajı görüntüle
    Textbox'ların dinamik mi yoksa sabit mi?
    sabit
    yanyana 2 şerli
    alt alta 6 satırda
    toplamda 12 textboxum var

    Şayet trabzon yağmurlu textboxları boş diyelim, veritabanına yeni bir ID oluşturmaması lazım.

  • 17-01-2013, 11:36:54
    #4
    kaydet butonuna basit bir if ifadesi yazacaksın;

    if text1.text <> "" or text2.text <> "" or or or diye tüm textlerini if e katıp;
    'burada textlerin içi boş değilse anlamını yaratıyosun
    'veritabanı kayıt sub unu çağırabilirsin
    else
    'burası da textboxlardan birinin boş olduğunu söyleyebilirsin
    'işlem yapmadan çıkarsın
    end if
    doğru anladım sorunu umarım

    ya da sen şey mi istiyorsun girilen kadar oluştursun mesela ayşe text1 demir text2 ise 2 text doluysa o kaydı oluştursun ama sadece isim veya soyad girildiyse o kaydı oluşturmasın bumudur?
  • 17-01-2013, 11:51:50
    #5
    Tüm textboxların değerlerini alıp bir list'e ata. Sonra for ile list'in count'u kadar dön ve insert yap.
    Örnek kod:
    List<string> list = new List<string>();
    foreach(Control c in Page.Controls)
    {
        if (c is TextBox)
        {
             if(c.Text != "" && c.Text != null)
                list.Add(c.Text);
        }
    }
    for(int i = 0; i < list.Lenght; i++)
        // insert islemi
    Dim list As New List(Of String)()
    For Each c As Control In Page.Controls
    	If TypeOf c Is TextBox Then
    		If c.Text <> "" AndAlso c.Text IsNot Nothing Then
    			list.Add(c.Text)
    		End If
    	End If
    For value As Integer = 0 To list.Lenght
       // insert islemi
    Next
  • 17-01-2013, 17:01:20
    #6
    insert cümlesini anlayamadım. Yani arka arkaya ID ADI SOYADI verilerini nasıl kaydedecek

    1 Ayşe DEMİR
    2 Fatma GÖNEN
    3 Trabzon Yağmurlu

    Çünkü benim cümle insert into tablom (ADI,SOYADI) values (Textbox1.text, textbox2.text)

    şeklinde, e nasıl arka arkaya kayıt yapabilirim tek butona basınca.
  • 17-01-2013, 17:17:16
    #7
    For içerisinde textbox'ları değil list'in elemanlarını yazacaksın.
    Hatta o listi dictionary<string, string> olarak değiştir ve ad soyad şeklinde yazdır.

    Dictionary<string, string> dic = new Dictionary<string, string>();
    dic.Add(txtbox1.text, txtbox2.text);
    For ile döndüğün için o dictionary içerisinde ne kadar eleman varsa o kadar dönerek sorgunu çalıştıracak. Sen yine tek seferde bitireceksin işi.
  • 17-01-2013, 17:39:30
    #8
    rob33n adlı üyeden alıntı: mesajı görüntüle
    For içerisinde textbox'ları değil list'in elemanlarını yazacaksın.
    Hatta o listi dictionary<string, string> olarak değiştir ve ad soyad şeklinde yazdır.

    Dictionary<string, string> dic = new Dictionary<string, string>();
    dic.Add(txtbox1.text, txtbox2.text);
    For ile döndüğün için o dictionary içerisinde ne kadar eleman varsa o kadar dönerek sorgunu çalıştıracak. Sen yine tek seferde bitireceksin işi.


    buradaki page.controls nedemek oluyor hata vermiş zaten orda

    ya bu FOR döngüsüyle birtürlü barışamadım. Ne yaparsam yapayım örneği anlıyorum yeni bir mantık geliştirmeye gelince bocalıyorum.
  • 17-01-2013, 18:07:46
    #9
    Sen direk elle eklemişsin, o zaman foreach'e gerek yok. Ama boş olanlarıda ekletmeye çalışırsın if ile kontrol yapmazsan.
    Ordaki Page.Controls ben genelde web taraflı çalıştığım için web sayfasındaki tüm textboxları bulur. Sen onu this.Controls veya form.Control olarak değiştirebilirsin ki kullanmana gerek kalmadı.

    For'un çalışma mantığıda şu. Sen o dictionary'e isimleri ekliyorsun ve şu şekle geliyor.
    dic 0. eleman - "ali veli"
    dic 1. eleman - "ahmet mehmet"
    dic 2. eleman - "ayşe fatma"
    Bunu 0'dan başlayıp 3'ten küçük olana kadar döner ve sırayla i neye karşılık geliyorsa yazar. i = 0 durumunda ali veli, i = 1 durumunda ahmet mehmet ..vs
    Ama senin database'inde id değerinin auto_increment falan olması gerek. Id değerleri unique olmalıdır. Aksi halde aynı id ile aynı isimleri eklersin ve aramada sana aynı sonuçlar birçok kez gelir.
    O for'uda şu şekilde yaz.

    For Each p As var In dic
    Next
     insert into tablom (ADI,SOYADI) values (p.Key, p.Value);
    End