نمایش نتایج 1 تا 3 از 3

نام تاپیک: ایراد این حلقه کجاست؟؟؟؟؟؟؟؟

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    312

    ایراد این حلقه کجاست؟؟؟؟؟؟؟؟


    for (int i = 0; DGV1.RowCount > i; i++)
    {
    int valccid = Convert.ToInt32(DGVBom.Rows[i].Cells["tasCcid"].Value.ToString());
    int valccid2 = Convert.ToInt32(DGV1.Rows[i].Cells["tas2CcNameMabId"].Value.ToString());
    if (valccid == valccid2)
    {
    DGVBom.Rows[i].Cells["tasValueR2"].Value = DGV1.Rows[i].Cells["tas2ValueR"].Value;
    }
    }




    سلام دوستان این حلقه رو نوشتم که اگر دوتا فیلد رو چک کنه و در صورت برابری دو تا فیلد رو برابر قرار بده
    اما فقط یه بار اجرا میشه و تکرار نمیشه

    اینم تصویر
    Screenshot (27).png

    ببینید دو ردیف شماره 15 رو انجام داده
    اما ردیف شماره 23 رو انجام نمیده


  2. #2

    نقل قول: ایراد این حلقه کجاست؟؟؟؟؟؟؟؟

    نقل قول نوشته شده توسط شهابسلطانی مشاهده تاپیک

    for (int i = 0; DGV1.RowCount > i; i++)
    {
    int valccid = Convert.ToInt32(DGVBom.Rows[i].Cells["tasCcid"].Value.ToString());
    int valccid2 = Convert.ToInt32(DGV1.Rows[i].Cells["tas2CcNameMabId"].Value.ToString());
    if (valccid == valccid2)
    {
    DGVBom.Rows[i].Cells["tasValueR2"].Value = DGV1.Rows[i].Cells["tas2ValueR"].Value;
    }
    }




    سلام دوستان این حلقه رو نوشتم که اگر دوتا فیلد رو چک کنه و در صورت برابری دو تا فیلد رو برابر قرار بده
    اما فقط یه بار اجرا میشه و تکرار نمیشه

    اینم تصویر
    Screenshot (27).png

    ببینید دو ردیف شماره 15 رو انجام داده
    اما ردیف شماره 23 رو انجام نمیده
    شما حلقه رو صرفا بر اساس سطر های DGV1 و موقعیت اندیس یکسان بین DGV1 و DGVBom می سنجید.
    اینکار دو تا ایراد داره، اول اینکه اگر DGV1 سه تا سطر داشته باشه، فقط سطر های 0 و 1 و 2 رو در DGVBom بررسی می کنید، حتی اگر DGVBom تعداد سطر های بیشتری داشته باشه با اون سطر های اندیس 3 به بعد کاری ندارید، چون حلقه فقط 0 الی 2 رو بررسی می کنه.
    از طرف دیگه دارید سطر DGV1.Rows[i] رو فقط با سطر DGVBom.Rows[i] مقایسه می کنید، مثلا اندیس 0 رو با 0 و اندیس 1 رو با 1 و اندیس 2 رو با 2 مقایسه می کنید.
    ممکنه مقادیر برابر در اندیس های یکسان نباشند، مثلا 23 در DGV1 سطر 2 ام باشه و در DGVBom اون 23 در سطر 0 ام باشه، نه سطر 2 ام.
    شما اگر میخواهید جستجو از طریق حلقه انجام بشه، باید دو تا حلقه داشته باشید، یکی مثلا با i برای سطر های DGV1 و دیگری داخل اون حلقه با j برای سطر های DGVBom

    for (int i = 0; DGV1.RowCount > i; i++)
    {
    int valccid2 = Convert.ToInt32(DGV1.Rows[i].Cells["tas2CcNameMabId"].Value.ToString());
    for (int j = 0; DGVBom.RowCount > j; j++)
    {
    int valccid = Convert.ToInt32(DGVBom.Rows[j].Cells["tasCcid"].Value.ToString());
    if (valccid == valccid2)
    {
    DGVBom.Rows[j].Cells["tasValueR2"].Value = DGV1.Rows[i].Cells["tas2ValueR"].Value;
    }
    }
    }

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    312

    نقل قول: ایراد این حلقه کجاست؟؟؟؟؟؟؟؟

    سلام
    عالی بود
    عالی بود
    ممنون

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: چهارشنبه 02 مرداد 1392, 09:07 صبح
  2. find کردن paradox(یا هر بانک اطلاعاتی دیگر) بر چه اساسی است؟؟؟؟؟؟؟؟
    نوشته شده توسط md-delphi در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: دوشنبه 14 شهریور 1384, 12:06 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •