PDA

View Full Version : تحلیل کد



شهابسلطانی
دوشنبه 12 بهمن 1394, 12:14 عصر
سلام دوستان
من این کد رو از یک پروژه توی اینترنت دانلود کردم و به درد کارم میخوره حالا میخوام ببرمش توی پروژه خودم ولی تحلیل for ها رو نمیدونم
در حقیقت نمیدونم که مقادیر num1 , num2, num3 رو از کجا میخونه
واطلاعات رو تکرر میکنه مثلا
سرگروه(پدر) رو نشون میده بعنوان مثال(شهاب)
و برای زیر گروه(فرزند) باز همون شهاب رو نشون میده
لطفا راهنمایی بفرمایید

treeView1.Nodes.Clear();


SqlCommand cmd = newSqlCommand("select NameItem from TblItem");
cmd.Connection = con;
cmd.Connection.Open();


SqlDataReader red1 = cmd.ExecuteReader();


for (int num1 = 0; red1.Read(); )
{
treeView1.Nodes.Add(red1[0].ToString());
int num3 = red1.FieldCount -1;


for (int num2 = 0; num2 < num3; num2=1)
treeView1.Nodes[num1].Nodes.Add(red1[num3].ToString());
}

vB.N3T
دوشنبه 12 بهمن 1394, 19:03 عصر
سلام دوست عزیز

num1 در واقع مقدار اولیه شروع حلقه هستش
یعنی حلقه از 0 شروع بشه

num3 هم دقیق نمیدونم ولی فکر کنم به اخرین فیلد اشاره داره
و num2 هم مقدار اولیه شروع حلقه هستش

حلقه ها این طوری تعریف میشن

(شمارنده حلقه,شرط حلقه,مقدار اولیه شروع حلقه) for

}
کد های که باید اجرا شن تا زمانی که شرط حلقه درست باشه
{

khokhan
دوشنبه 12 بهمن 1394, 20:32 عصر
سلام دوستان
من این کد رو از یک پروژه توی اینترنت دانلود کردم و به درد کارم میخوره حالا میخوام ببرمش توی پروژه خودم ولی تحلیل for ها رو نمیدونم
در حقیقت نمیدونم که مقادیر num1 , num2, num3 رو از کجا میخونه
واطلاعات رو تکرر میکنه مثلا
سرگروه(پدر) رو نشون میده بعنوان مثال(شهاب)
و برای زیر گروه(فرزند) باز همون شهاب رو نشون میده
لطفا راهنمایی بفرمایید



num1 = همون تمامی تعداد رکوردهایی هست که توسط SqlDataReader فراخوانی شده، و البته در حلقه اول رکورد ی که اندیسش 0 هست به عنوان گره والد قرار می گیره
num3 = آخرین رکورد از نظر ترتیب قرار گیری در داخل SqlDataReader می باشد یعنی فرض کنین تعداد 10 رکورد فراخوانی شده پس اندیس num3 می شه 10 یا به عبارتی همون ردیف آخر:لبخند:
می مونه num2 در حلقه دوم یک متغیر از نوع intدر نظر می گیره و بعد شرط می کنه که تا موقعی که num2 ،کوچکتر از num3 باشه شمارش ادامه پیدا کنه و درهربارشمارش ،مقدار num2 برابر با 1 باشد
ودر نهایت می گه که : , رکوردی از SqlDataReader را که اندیسش برابر با num3 باشه رو به عنوان یک نود ، به نودی که در treeview1 اندیسش برابر num1 هست اضافه کن

شهابسلطانی
چهارشنبه 14 بهمن 1394, 08:22 صبح
]چیکار کنم که والدها دوباره تکرار نشن
الان والدها تکرار میشن
( والد) دارایی جاری
(فرزند) بانک
(فرزند) اسناد دریافتی
(فرزند) پیش پرداخت
( والد) دارایی جاری
( والد) دارایی جاری
( والد) دارایی جاری

مشاهده میفرمایید این والدها تکرار میشوند

شهابسلطانی
چهارشنبه 14 بهمن 1394, 08:26 صبح
treeView1.Nodes.Clear();


SqlDataReader reader1 = cmd.ExecuteReader();


SqlCommand cmd = new SqlCommand("select NameItem,NameD from TableD where IDItem =12", con);

con.Open();


for (int num1 = 0; reader1.Read(); num1 = 0)

{

treeView1.Nodes.Add(reader1[0].ToString());


int num3 = reader1.FieldCount - 1;


for (int num2 = 1; num2 <= num3; num2++)

{

treeView1.Nodes[num1].Nodes.Add(reader1[num2].ToString());

}

}