PDA

View Full Version : سوال: معادل بهینه سازی این کد چی هست ؟



NasimBamdad
یک شنبه 29 مرداد 1391, 19:47 عصر
سلام و خسته نباشید .


من روی فرمم یک سری CheckBox , Button و ..... دارم

در حدود 500 تا CheckBox دارم که اگه چک بخورند و روی یک Button کلیک بشه ، رکوردی رو INSERT می کنه

در حال حاظر از ADO.NET استفاده کردم و به صورت زیر هستند . اما بهینه نیستند


if (checkBox1.Checked == true)
{
SqlConnection cnn3 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd3 = new SqlCommand();
cmd3.Connection = cnn3;
cnn3.Open();
cmd3.CommandText = "INSERT INTO daroo_usage(patientid,darooid,numberz) VALUES (@patientid,@darooid,@numberz) WHERE dbo.patients.surgery_type = '3'";
cmd3.Parameters.AddWithValue("@patientid", textBox113.Text);
cmd3.Parameters.AddWithValue("@darooid", 1);
cmd3.Parameters.AddWithValue("@numberz", textBox1.Text);
cmd3.ExecuteNonQuery();
cnn3.Close();
}
if (checkBox2.Checked == true)
{
SqlConnection cnn3 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd3 = new SqlCommand();
cmd3.Connection = cnn3;
cnn3.Open();
cmd3.CommandText = "INSERT INTO daroo_usage(patientid,darooid,numberz) VALUES (@patientid,@darooid,@numberz)";
cmd3.Parameters.AddWithValue("@patientid", textBox113.Text);
cmd3.Parameters.AddWithValue("@darooid", 2);
cmd3.Parameters.AddWithValue("@numberz", textBox2.Text);
cmd3.ExecuteNonQuery();
cnn3.Close();
}
if (checkBox3.Checked == true)
{
SqlConnection cnn3 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd3 = new SqlCommand();
cmd3.Connection = cnn3;
cnn3.Open();
cmd3.CommandText = "INSERT INTO daroo_usage(patientid,darooid,numberz) VALUES (@patientid,@darooid,@numberz)";
cmd3.Parameters.AddWithValue("@patientid", textBox113.Text);
cmd3.Parameters.AddWithValue("@darooid", 3);
cmd3.Parameters.AddWithValue("@numberz", textBox3.Text);
cmd3.ExecuteNonQuery();
cnn3.Close();
}
if (checkBox4.Checked == true)
{
SqlConnection cnn3 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd3 = new SqlCommand();
cmd3.Connection = cnn3;
cnn3.Open();
cmd3.CommandText = "INSERT INTO daroo_usage(patientid,darooid,numberz) VALUES (@patientid,@darooid,@numberz)";
cmd3.Parameters.AddWithValue("@patientid", textBox113.Text);
cmd3.Parameters.AddWithValue("@darooid", 4);
cmd3.Parameters.AddWithValue("@numberz", textBox4.Text);
cmd3.ExecuteNonQuery();
cnn3.Close();
}
if (checkBox5.Checked == true)
{
SqlConnection cnn3 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd3 = new SqlCommand();
cmd3.Connection = cnn3;
cnn3.Open();
cmd3.CommandText = "INSERT INTO daroo_usage(patientid,darooid,numberz) VALUES (@patientid,@darooid,@numberz)";
cmd3.Parameters.AddWithValue("@patientid", textBox113.Text);
cmd3.Parameters.AddWithValue("@darooid", 5);
cmd3.Parameters.AddWithValue("@numberz", textBox5.Text);
cmd3.ExecuteNonQuery();
cnn3.Close();
}
if (checkBox6.Checked == true)
{
SqlConnection cnn3 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd3 = new SqlCommand();
cmd3.Connection = cnn3;
cnn3.Open();
cmd3.CommandText = "INSERT INTO daroo_usage(patientid,darooid,numberz) VALUES (@patientid,@darooid,@numberz)";
cmd3.Parameters.AddWithValue("@patientid", textBox113.Text);
cmd3.Parameters.AddWithValue("@darooid", 6);
cmd3.Parameters.AddWithValue("@numberz", textBox6.Text);
cmd3.ExecuteNonQuery();
cnn3.Close();
}
if (checkBox7.Checked == true)
{
SqlConnection cnn3 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd3 = new SqlCommand();
cmd3.Connection = cnn3;
cnn3.Open();
cmd3.CommandText = "INSERT INTO daroo_usage(patientid,darooid,numberz) VALUES (@patientid,@darooid,@numberz)";
cmd3.Parameters.AddWithValue("@patientid", textBox113.Text);
cmd3.Parameters.AddWithValue("@darooid", 7);
cmd3.Parameters.AddWithValue("@numberz", textBox7.Text);
cmd3.ExecuteNonQuery();
cnn3.Close();
}
if (checkBox8.Checked == true)
{
SqlConnection cnn3 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd3 = new SqlCommand();
cmd3.Connection = cnn3;
cnn3.Open();
cmd3.CommandText = "INSERT INTO daroo_usage(patientid,darooid,numberz) VALUES (@patientid,@darooid,@numberz)";
cmd3.Parameters.AddWithValue("@patientid", textBox113.Text);
cmd3.Parameters.AddWithValue("@darooid", 8);
cmd3.Parameters.AddWithValue("@numberz", textBox8.Text);
cmd3.ExecuteNonQuery();
cnn3.Close();
}



خیلی بیشتر هستند و در همین قالب . همون طور که گفتند اصلا بهینه نیستند . به نظر شما معادل بهینه تر اینها چی هستند ؟

به نظر شما باید مثلا از LINQ به جای این استفاده کنم ، باید روش دیگه ای استفاده کنم . باید همین کد ها رو بهینه تر کنم ؟

ممنون میشم نظرتون رو بدید

HAMRAHSOFT.IR
یک شنبه 29 مرداد 1391, 20:17 عصر
سلام من LINQ بیشتر قبول دارم چون خیلی راحتر هست

Mahmoud Zaad
یک شنبه 29 مرداد 1391, 20:30 عصر
سلام
اگه ممکنه اول توضیح بدید، این همه چک باکس برای چی هست؟ و در کل موضوع پروژه چیه؟

NasimBamdad
دوشنبه 30 مرداد 1391, 11:13 صبح
سلام
اگه ممکنه اول توضیح بدید، این همه چک باکس برای چی هست؟ و در کل موضوع پروژه چیه؟

موضوع پروژه یک نرم افزار HIS می باشد . اون همه چک باکس هم هر کدام نماینده یک دارو هستند

عکس زیر رو ببینید ، متوجه خواهید شد

لیـــــــــــنک (http://0.1.1.img98.net/out.php/i437429_his-daroo.gif)

Mahmoud Zaad
دوشنبه 30 مرداد 1391, 11:25 صبح
موضوع پروژه یک نرم افزار HIS می باشد . اون همه چک باکس هم هر کدام نماینده یک دارو هستند

عکس زیر رو ببینید ، متوجه خواهید شد

لیـــــــــــنک (http://0.1.1.img98.net/out.php/i437429_his-daroo.gif)
به نظر من شما باید اسامی این داروها رو توی اون فرم داخل دیتاگریدویو یا لیست باکس یا چک لیست باکس داشته باشید زمانی که می خواید داروها رو انتخاب می کنید بعد با یه حلقه for داروها رو ثبت می کنید. قرار نیست همه ی 500 قلم دارو که ثبت بشه فوق 10-12 نه 20 دارو برای هر عمل ثبت میشه.

NasimBamdad
دوشنبه 30 مرداد 1391, 12:03 عصر
به نظر من شما باید اسامی این داروها رو توی اون فرم داخل دیتاگریدویو یا لیست باکس یا چک لیست باکس داشته باشید زمانی که می خواید داروها رو انتخاب می کنید بعد با یه حلقه for داروها رو ثبت می کنید. قرار نیست همه ی 500 قلم دارو که ثبت بشه فوق 10-12 نه 20 دارو برای هر عمل ثبت میشه.


فکر خیلی خوبیه . میشه یک زحمت بکشی و یک مثال کوچلو بزنید ؟ فکر کنم ListBox و یا Check ListBox بهتر هست تا Grid . ممنون میشم