PDA

View Full Version : سوال: آپدیت نشدن رکوردها



shaima
جمعه 24 مهر 1388, 21:55 عصر
سلام
برنامه من این کد رو داره :


private void Form1_Load_1(object sender, EventArgs e)
{
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
Command.CommandText = "Select name from Table_1 ";
Command.Connection = con;
sqlda.SelectCommand = Command;
con.Open();
sqlda.Fill(DS, "Table_1");
con.Close();
comboBox1.DataSource = DS.Tables["Table_1"];
comboBox1.DisplayMember = "name".ToString();
}

private void button1_Click(object sender, EventArgs e)
{
Command.Connection = con;
Command.CommandText = "insert into Table_1(name,t) values(\'" + comboBox1.Text + "\',\'" + textBox3.Text + "\')";
con.Open();
Command.ExecuteNonQuery();
con.Close();
}

private void button3_Click(object sender, EventArgs e)
{
Command.Connection = con;
Command.CommandText = "update Table_1 set t=\'" + textBox3.Text + "\' where name=\'" + comboBox1.Text + "\'";
MessageBox.Show(Command.CommandText);
con.Open();
Command.ExecuteNonQuery();
con.Close();
}


مشکلی که الان دارم اینه که این کد رکوردهایی رو که از قبل تو تیبلم بوده آپدیت نمیکنه و فقط رکوردهایی که جدید اینسرت میکنم رو آپدیت میکنه! لطفا راهنمایی کنید، دیگه هیچی به ذهنم نمیرسه :عصبانی++:

اوبالیت به بو
جمعه 24 مهر 1388, 23:07 عصر
مشکلی که الان دارم اینه که این کد رکوردهایی رو که از قبل تو تیبلم بوده آپدیت نمیکنه
چه جالب!

Command.CommandText = "update Table_1 set t=\'" + textBox3.Text + "\' where name=\'" + comboBox1.Text + "\'";

اول از همه اين كه اين اراجيف سبز رنگ رو به صورت زير تبديل كنيد:


Command.CommandText = "update Table_1 set t= @param1 where name = @param2 (name=@param2)";
Command.Parameters.AddWithValue("param1",TextBox3.Text);
Command.Parameters.AddWithValue("param2",ComboBox1.text);


و فقط رکوردهایی که جدید اینسرت میکنم رو آپدیت میکنه!
هميشه ركوردهايي كه باعث true شدن شرط where بشن به روز مي شن.

shaima
شنبه 25 مهر 1388, 01:53 صبح
چه جالب!

Command.CommandText = "update Table_1 set t=\'" + textBox3.Text + "\' where name=\'" + comboBox1.Text + "\'";
اول از همه اين كه اين اراجيف سبز رنگ رو به صورت زير تبديل كنيد:


Command.CommandText = "update Table_1 set t= @param1 where name = @param2";
Command.Parameters.AddWithValue("param1",TextBox3.Text);
Command.Parameters.AddWithValue("param2",ComboBox1.text);
هميشه ركوردهايي كه باعث true شدن شرط where بشن به روز مي شن.

ممنون بابت جواب
البته گمونم اون اراجیف سبز با این چیزی که شما گفتی معادلن! و در هر دو صورت هم مشکل من رو حل نمیکنن!
درضمن میدونم شرط where چه معنایی داره، مشکلم اینه که شرط برای رکوردهایی که از قبل توی تیبل بودن هیچ وقت true نمیشه! درحالی که برای رکوردهای تازه اینسرت شده هیچ مشکلی وجود نداره و به راحتی آپدیت میشن...
من واقعا گیج شدم

shaima
شنبه 25 مهر 1388, 11:58 صبح
کسی نمی دونست مشکل من چه جوری حل میشه یعنی؟! :گریه: :عصبانی++:

sara.f
شنبه 25 مهر 1388, 20:10 عصر
سلام
برنامه من این کد رو داره :


private void Form1_Load_1(object sender, EventArgs e)
{
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
Command.CommandText = "Select name from Table_1 ";
Command.Connection = con;
sqlda.SelectCommand = Command;
con.Open();
sqlda.Fill(DS, "Table_1");
con.Close();
comboBox1.DataSource = DS.Tables["Table_1"];
comboBox1.DisplayMember = "name".ToString();
}

private void button1_Click(object sender, EventArgs e)
{
Command.Connection = con;
Command.CommandText = "insert into Table_1(name,t) values(\'" + comboBox1.Text + "\',\'" + textBox3.Text + "\')";
con.Open();
Command.ExecuteNonQuery();
con.Close();
}

private void button3_Click(object sender, EventArgs e)
{
Command.Connection = con;
Command.CommandText = "update Table_1 set t=\'" + textBox3.Text + "\' where name=\'" + comboBox1.Text + "\'";
MessageBox.Show(Command.CommandText);
con.Open();
Command.ExecuteNonQuery();
con.Close();
}


مشکلی که الان دارم اینه که این کد رکوردهایی رو که از قبل تو تیبلم بوده آپدیت نمیکنه و فقط رکوردهایی که جدید اینسرت میکنم رو آپدیت میکنه! لطفا راهنمایی کنید، دیگه هیچی به ذهنم نمیرسه :عصبانی++:
سلام
این کارهایی که می گم را انجام بده، ببین درست میشه؟
اول به جای اسم جدولت در دیتا بیس در خطهایی که می خواهی از fill استفاده کنی، یه اسم دیگر به کار ببر.


sqlda.Fill(DS, "Table_1");

مثلا به جای Table_1 بذار tab
دوم اینکه واسه پارامترهات از همون کد obalitjoOon استفاده کن.

Command.CommandText = "update Table_1 set t= @param1 where name = @param2";
Command.Parameters.AddWithValue("param1",TextBox3.Text);
Command.Parameters.AddWithValue("param2",ComboBox1.text);
سوم اینکه این \ در کدهات واسه چیه؟ اینا رو بردار

Command.CommandText = "update Table_1 set t=\'" + textBox3.Text + "\' where name=\'" + comboBox1.Text + "\'";
اگر بازم مشکل داشتی کدی را که اصلاح کردی اینجا بذار تا ببینیم چه مشکلی داره؟
پیروز باشی.:لبخندساده: