ورود

View Full Version : راهنمایی برای کار با دستورforeach



salmah
دوشنبه 09 تیر 1393, 00:35 صبح
سلام
من یه فرم دارم که یه سری اطللاعات ازکاربر می گیره.nam,nid,eid,...

حالا میخوام یه دستور foreach بذارم که به ازای eid>0 و eid<n این مقادیر در جدول تکرار بشه والبته این eid هم برای هر رکورد از مقدار1و2و3و...تاn ثبت بشه
کدچی بنویسم

اطلاعات راهم از فرم اینجوری میگیرم


SqlConnection cnc = new SqlConnection();
SqlCommand command = new SqlCommand();
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
DataSet dst4 = new DataSet();

cnc.ConnectionString = ConfigurationManager.ConnectionStrings["shbtConnectionString"].ToString();

command.Connection = cnc;
command.CommandText = "SELECT * FROM tcod";
adapter.SelectCommand = command;
adapter.Fill(dst4, "tcod");

//data_mo
string dm = "13" + TextBox1.Text + "/" + DropDownList1.SelectedValue + "/" + DropDownList2.SelectedValue;
DataRow row = dst4.Tables["tcod"].NewRow();

row["nid"] = dd_nid.SelectedValue;

row["bid"] = dd_bid.SelectedValue;
row["oid"] = dd_oid.SelectedValue;
row["cod"] = TextBox1.Text;
row["dtamo"] = dm;
row["shom"] =TextBox3.Text;



dst4.Tables["tcod"].Rows.Add(row);


try
{
int result = adapter.Update(dst4, "tcod");

if (result > 0)
Response.Redirect("pm.aspx");
else
Response.Redirect("login.aspx");
}
catch
{
Response.Redirect("pm.aspx");
}
}
}

salmah
دوشنبه 09 تیر 1393, 00:39 صبح
البته میدونم این کاراشکالاتی داره ولی پیاده سازیش برام مهمه لطفا راهنمایی کنید:ناراحت:

nice_boy_a
دوشنبه 09 تیر 1393, 10:01 صبح
سلام. یا واضح تر توضیح بده یا سناریو رو با یه مثال دیگه مطرح کن.
فکر کنم همزمان میخوای اطلاعات رو تو 2 تا جدول ثبت کنی، که به ازاری ثبت هر رکورد در جدول اول n رکورد در جدول دوم ثبت میشه، درسته ؟ موضوع رو بشکاف!

salmah
دوشنبه 09 تیر 1393, 10:08 صبح
سلام. یا واضح تر توضیح بده یا سناریو رو با یه مثال دیگه مطرح کن.
فکر کنم همزمان میخوای اطلاعات رو تو 2 تا جدول ثبت کنی، که به ازاری ثبت هر رکورد در جدول اول n رکورد در جدول دوم ثبت میشه، درسته ؟ موضوع رو بشکاف!
من میخوام وقتی دکمه ثبت را زدم این رکوردی که قراره ثبت بشه مثلا 10 بار توی جدول تکرار بشه

nice_boy_a
دوشنبه 09 تیر 1393, 10:16 صبح
وقتی تعداد تکرار عملیاتت مشخصه از دستور for باید استفاده کنی نه foreach.

for (int i = 0; i < 10; i++)
{

}


کد ثبت اطلاعات رو بزار تو حلقه for. شرط حلقه هم از 0 تا کوچکتر از 10 هست ، یعنی 10 بار تکرار میشه!
ولی فکر کنم گیر کارت جای دیگه باشه هـــآ!!!

salmah
دوشنبه 09 تیر 1393, 10:26 صبح
یعنی از خط 9 به بعد را تو دستور for بذارم.
یه سوال دیگه میخوام فیلد eid (یکی از فیلدهای جدول) هم از 1-10 مقدار بگیره. میشه"؟

nice_boy_a
دوشنبه 09 تیر 1393, 10:35 صبح
همون تعداد خطهایی که باید 10 بار تکرار بشن (عملیات ثبت رو انجام میدن) بزار تو حلقه.
بله میشه، باید constraint براش تعریف کنی. تو نمای Design جداولت روی هر فیلدی که کلیک راست کنی مشخصه...!

salmah
دوشنبه 09 تیر 1393, 10:49 صبح
با تشکر
من با constraint آشنا نیستم. باید توی expression دستوری را بنویسم؟

nice_boy_a
دوشنبه 09 تیر 1393, 10:51 صبح
اره. مثلا بنویس:

FieldName >0 and FieldName <10

salmah
دوشنبه 09 تیر 1393, 11:40 صبح
مقدارeid را null میزنه
به این صورت مقدار دهی کردم
120625

nice_boy_a
دوشنبه 09 تیر 1393, 12:04 عصر
eid باید از نوع عددی باشه

salmah
دوشنبه 09 تیر 1393, 12:51 عصر
بله از نوع int هست

nice_boy_a
دوشنبه 09 تیر 1393, 14:42 عصر
پس یعنی چی NULL میزنه ؟ این اصلا ربطی به Null کردن اطلاعات نداره! اگه عددهای وارد شده تو فیلد مورد نظر خارج از محدوده شرط باشن که اجازه نمیده تغییرات رو ذخیره کنی.

salmah
دوشنبه 09 تیر 1393, 21:34 عصر
مشکل من با دستور for هم هست هنوز نتونستم با این دستور رکورد های مورد نظر را تکرار کنم . به این صورت نوشتم

SqlConnection cnc = new SqlConnection();
SqlCommand command = new SqlCommand();
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
DataSet dst4 = new DataSet();

cnc.ConnectionString = ConfigurationManager.ConnectionStrings["shbtConnectionString"].ToString();

command.Connection = cnc;
command.CommandText = "SELECT * FROM tcod";
adapter.SelectCommand = command;
adapter.Fill(dst4, "tcod");
//data_mo
string dm = "13" + TextBox4.Text + "/" + DropDownList1.SelectedValue + "/" + DropDownList2.SelectedValue;
for (int i = 0; i < 10; i++)
{
DataRow row = dst4.Tables["tcod"].NewRow();
row["nid"] = dd_nid.SelectedValue;
row["bid"] = dd_bid.SelectedValue;
row["oid"] = dd_oid.SelectedValue;
row["cod"] = TextBox1.Text;
row["dtamo"] = dm;
row["shom"] = TextBox3.Text;
dst4.Tables["tcod"].Rows.Add(row);
try
{
int result = adapter.Update(dst4, "tcod");

if (result > 0)
Response.Redirect("pm.aspx");
else
Response.Redirect("login.aspx");
}
catch
{
Response.Redirect("pm.aspx");
}
}