none
combobox insert RRS feed

  • Soru

  • Merhaba arkadaşlar,

    SQL veritabanımda 

    Departments     # Doctors
    ###################
    Dep_ID             # ....
    Name               # Dep_ID
                            # Department
    ###################

    bu şekilde 2 adet tablom bulunuyor.
    Combobox'a Departments kısmındaki veriyi çekiyorum " ID - Name " şeklinde. Ve yeni kayıt oluştururken combobox'taki ID ve Name alanlarını Doctors tabloma nasıl insert edebilirim ?

    Dep_ID -> Dep_ID
    Name -> Department şeklinde.
    Benim denemelerimde combobox'taki veri olduğu gibi ("15 - Cardiology ") şeklinde department'e insert oluyor sadece.

    Umarım açıklayıcı olabilmişimdir.Şimdiden teşekkür ederim herkese :)

    25 Mayıs 2013 Cumartesi 22:01

Yanıtlar

  • Baglan();
    
                    SqlDataAdapter Da = new SqlDataAdapter("SELECT Dep_ID,Convert(nvarchar,Dep_ID)+' - ' +Name AS Name FROM Departments ORDER  BY  Dep_ID ASC ", myCon);
                    DataTable Dt = new System.Data.DataTable();
                    Da.Fill(Dt);
                    comboBox2.DataSource = Dt.DefaultView;
                    comboBox2.DisplayMember = "Name";
                    comboBox2.ValueMember = "Dep_ID";

    Kendinize uyarlayarak dener misiniz?
    • Yanıt Olarak İşaretleyen SoloStaR1 26 Mayıs 2013 Pazar 00:29
    26 Mayıs 2013 Pazar 00:26

Tüm Yanıtlar

  • Merhaba

    cmd.Parameters.Add("@DepID", SqlDbType.BigInt).Value = Convert.ToInt32(cbTur.SelectedValue.ToString());
    cmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = cbTur.cbTur.SelectedItem.ToString();
    

    şeklinde parametreleri verebilirsin

    İyi Çalışmalar


    25 Mayıs 2013 Cumartesi 22:21
  • Yok hocam maalesef olmadı :(
    25 Mayıs 2013 Cumartesi 22:34
  • "Doctors" tablosuna yalnizca "Dep_ID" 'yi eklemeniz yeterli, ayrica "Doctors" tablonuzda "Department" alanina gerek yok. Bunu SQL sorgunuz ile cekebilirsiniz.

    Insert ederken kullandiginiz kodlari paylasirsaniz daha kolay yardimci olabiliriz.

    25 Mayıs 2013 Cumartesi 22:58
  •             SqlCommand com = new SqlCommand();
                com.Connection = con;
                com.CommandType = CommandType.Text;
                if 
                    (textBox2.Text == "" && textBox3.Text == "" && textBox4.Text == "")
                {
                    MessageBox.Show("You must enter name , surname and EGN !", "Warning");
                }
                else
                {
                    con.Open();
                    com.CommandText = "INSERT INTO Doctors(Name,Surname,EGN,Birth,Email,Phone,Address,Department) VALUES ('" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "', @birthday ,'" + textBox5.Text + "', '" + textBox6.Text + "', '" + textBox7.Text + "', @department )";
                    com.Parameters.Add(new SqlParameter("@birthday", dateTimePicker1.Value.Date));
                    com.Parameters.Add(new SqlParameter("@department", comboBox2.SelectedItem));
                    //com.Parameters.Add(new SqlParameter("@Dep_ID", comboBox2.SelectedValue));
                    com.Parameters.Add("@Department", SqlDbType.NVarChar).Value = comboBox2.SelectedItem.ToString();
                    com.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("New doctor is successfully saved into database!");
                    this.Hide();
                }
            }

    Şöyle bir yapı kullanıyorum hocam.
    25 Mayıs 2013 Cumartesi 23:02
  • Doctors tablonuzdan Department alanini kaldirip onun yerine Dep_Id alani ekleyin ve asagidaki gibi doldurup deneyin. (Diger alanlari da parametre kullanarak yapin. )

    com.CommandText = "INSERT INTO Doctors(Name,Surname,EGN,Birth,Email,Phone,Address,Dep_ID) VALUES (@Name,@Surname,@EGN, @birthday ,@Email, @Phone,@Address, @DepId)"; com.Parameters.Add("@DepId", SqlDbType.Int).Value = comboBox2.SelectedValue;

    .

    .

    . com.ExecuteNonQuery();



    25 Mayıs 2013 Cumartesi 23:12

  • Dediklerinizi yaptım fakat aşağıdaki gibi bir hata alıyorum.

     "The parameterized query '(@Name nvarchar(3),@Surname nvarchar(3),@EGN nvarchar(4),@birthd' expects the parameter '@DepId', which was not supplied."


    • Düzenleyen SoloStaR1 25 Mayıs 2013 Cumartesi 23:21
    25 Mayıs 2013 Cumartesi 23:20
  • Kullandiginiz kodlari ve tablo yapilarinizi (son haliyle) tekrar paylasir misiniz?
    25 Mayıs 2013 Cumartesi 23:24
  •         SqlCommand com = new SqlCommand();
                com.Connection = con;
                com.CommandType = CommandType.Text;
                if 
                    (textBox2.Text == "" && textBox3.Text == "" && textBox4.Text == "")
                {
                    MessageBox.Show("You must enter name , surname and EGN !", "Warning");
                }
                else
                {
                    con.Open();
                    com.CommandText = "INSERT INTO Doctors(Name,Surname,EGN,Birth,Email,Phone,Address,Dep_ID) VALUES (@Name,@Surname,@EGN, @birthday ,@Email, @Phone,@Address, @DepId)";
                    com.Parameters.Add(new SqlParameter("@Name", textBox2.Text));
                    com.Parameters.Add(new SqlParameter("@Surname", textBox3.Text));
                    com.Parameters.Add(new SqlParameter("@EGN", textBox4.Text));
                    com.Parameters.Add(new SqlParameter("@birthday", dateTimePicker1.Value.Date));
                    com.Parameters.Add(new SqlParameter("@Email", textBox5.Text));
                    com.Parameters.Add(new SqlParameter("@Phone", textBox6.Text));
                    com.Parameters.Add(new SqlParameter("@Address", textBox7.Text));
                    com.Parameters.Add("@DepId", SqlDbType.Int).Value = comboBox2.SelectedValue;
                    com.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("New doctor is successfully saved into database!");
                    this.Hide();
                }



    25 Mayıs 2013 Cumartesi 23:28
  • con.Open();

    SqlCommand com = new SqlCommand(); com.Connection = myCon; com.CommandText = "INSERT INTO Doctors(Name,Surname,EGN,Birth,Email,Phone,Address,Dep_ID) VALUES (@Name,@Surname,@EGN, @birthday ,@Email, @Phone,@Address, @DepId)";

    Baglantiyi tanimlamamissiniz, baska herhangi bir problem gozukmuyor.
    25 Mayıs 2013 Cumartesi 23:40
  • Bağlantı tanımlamıştım bu verdiğiniz şekilde değiştirdim ama yine aynı hata mesajını alıyorum. 
    25 Mayıs 2013 Cumartesi 23:45
  • Combobox'da secim yapmiyorsunuz, anlasilan. :) Asagidaki gibi bir kontrol koyarak combobox'in null olup olmadigini kontrol edin.

                if (comboBox2.SelectedValue != null)
                    com.Parameters.Add("@DepId", SqlDbType.Int).Value = comboBox2.SelectedValue;
                else
                {
                    MessageBox.Show("Departman secerek tekrar deneyin!");
                    goto bitir;
                }
                com.ExecuteNonQuery();
            bitir:
                myCon.Close();

    25 Mayıs 2013 Cumartesi 23:56
  • comboBox'da seçtiğim halde departman seçmediğimi söylüyor.Anlaşılan sorun orada bir yerde o zaman :)
    26 Mayıs 2013 Pazar 00:02
  • comboBox icin hangi kodlari kullandiniz? 
    26 Mayıs 2013 Pazar 00:12
  •             comboBox2.Items.Clear();
                SqlDataReader read;
                con.Open();
                com.Connection = con;
                com.CommandText = "SELECT Dep_ID,Name FROM Departments ORDER  BY  Dep_ID ASC";
                read = com.ExecuteReader();
                while (read.Read())
                {
                    comboBox2.Items.Add(read[0].ToString() + " - " + read[1].ToString());
                }
                con.Close();
    

    26 Mayıs 2013 Pazar 00:15
  • Baglan();
    
                    SqlDataAdapter Da = new SqlDataAdapter("SELECT Dep_ID,Convert(nvarchar,Dep_ID)+' - ' +Name AS Name FROM Departments ORDER  BY  Dep_ID ASC ", myCon);
                    DataTable Dt = new System.Data.DataTable();
                    Da.Fill(Dt);
                    comboBox2.DataSource = Dt.DefaultView;
                    comboBox2.DisplayMember = "Name";
                    comboBox2.ValueMember = "Dep_ID";

    Kendinize uyarlayarak dener misiniz?
    • Yanıt Olarak İşaretleyen SoloStaR1 26 Mayıs 2013 Pazar 00:29
    26 Mayıs 2013 Pazar 00:26
  • Çok teşekkür ederim hocam. Baya bi vaktinizi harcadım gece gece sonunda çözdük olayı :)
    26 Mayıs 2013 Pazar 00:29