PDA

View Full Version : سوال: ثبت بیش از 1 رکورد در پایگاه داده



behnam25214
دوشنبه 03 خرداد 1389, 09:25 صبح
با سلام

من میخوام که اطلاعات رو در دیتاگراید ویو وارد کنم بیشتر از 1 باشه و برای این کار میخوام در یک پنل مثلا مشخصات کلی رو وارد کنم و تعداد رو هم بنویسم و اگه ok رو زدم اطلاعات در دیتاگراید ویو نمایش داده بشه(مثلا اگه 20 رو انتخاب کردم 20 ردیف با اطلاعاتی که در پنل نوشته بودم رو به دیتا گرید ویو اضافه کنه)و پس از آن اگه دکمه ثبت رو زدم این اطلاعات در بانک ذخیره بشه.
ممنون میشم راهنماییم کنید.:قلب:

s.khoshfekran
دوشنبه 03 خرداد 1389, 09:31 صبح
از یه حلقه استفاده کن!! با SP هم میتونی کار کنی

behnam25214
دوشنبه 03 خرداد 1389, 10:00 صبح
اگه با مثال بگید خوب میشه!:خجالت:

spring69
دوشنبه 03 خرداد 1389, 10:56 صبح
سلام.
به برنامه نمونه واست گذاشتم.

behnam25214
دوشنبه 03 خرداد 1389, 13:57 عصر
مرسی دوست عزیز. خیلی به کارم اومد.
اگه مشکلی بود بازم تو این تاپیک میپرسم.

behnam25214
دوشنبه 03 خرداد 1389, 15:47 عصر
من از این کد استفاده میکنم وقتی بخوام یکیشو ثبت کنم درسته ولی واسه بیش از یکی این خطا رو میده.


The variable name '@Fname' has already been declared. Variable names must be unique within a query batch or stored procedure.

و برای ثبت از این کد استفاده میکنم.



string sqlconnection = "Data Source=.;Initial Catalog=Personel;Integrated Security=True";
SqlConnection Scon;
Scon = new SqlConnection(sqlconnection);
SqlCommand cmd = new SqlCommand();
cmd.Connection = Scon;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into TblPersonel (Fname,Lname) values (@Fname,@Lname)";
Scon.Open();
for (int i = 0; i < dataGridView2.RowCount-1; i++)
{

cmd.Parameters.AddWithValue("@Fname", dataGridView2.Rows[i].Cells[1].Value.ToString());
cmd.Parameters.AddWithValue("@Lname", dataGridView2.Rows[i].Cells[2].Value.ToString());
cmd.ExecuteNonQuery();

}
Scon.Close();

spring69
دوشنبه 03 خرداد 1389, 16:27 عصر
شما در اين كد، به اندازه ي حلقه، پارامتر با نام هاي يكسان ميخواهيد به كامند اضافه كنيد.
اول بايد يكبار بيرون از حلقه پارامتر را اضافه كنيد. بعد داخل حلقه فقط مقدار بدهيد.

cmd.Parameters.AddWithValue("@fname",textBox1.Text);
cmd.Parameters.AddWithValue("@lname", textBox2.Text);
cnn.Open();
cmd.ExecuteNonQuery();
for (int i = 1; i < dataGridView1.RowCount - 1; i++)
{
cmd.Parameters[0].Value = dataGridView1.Rows[i].Cells[0].Value.ToString();
cmd.Parameters[1].Value = dataGridView1.Rows[i].Cells[1].Value.ToString();
cmd.ExecuteNonQuery();

}
cnn.Close();

behnam25214
دوشنبه 03 خرداد 1389, 16:52 عصر
به این شکل تغییر دادم حالا



cmd.Parameters.Add("@Fname");
cmd.Parameters.Add("@Lname");
Scon.Open();
for (int i = 0; i < dataGridView2.RowCount - 1; i++)
{


cmd.Parameters[0].Value = dataGridView2.Rows[i].Cells[1].Value.ToString();
cmd.Parameters[1].Value = dataGridView2.Rows[i].Cells[2].Value.ToString();
cmd.ExecuteNonQuery();

}
Scon.Close();


خطایی که میده اینه.

The SqlParameterCollection only accepts non-null SqlParameter type objects, not String objects.

spring69
دوشنبه 03 خرداد 1389, 17:10 عصر
ببخشيد.
همون پست رو ويرايش كردم.