PDA

View Full Version : ایراد این حلقه کجاست؟؟؟؟؟؟؟؟



شهابسلطانی
چهارشنبه 20 فروردین 1399, 15:48 عصر
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;
}
}




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

اینم تصویر
151567

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

the king
چهارشنبه 20 فروردین 1399, 16:12 عصر
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;
}
}




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

اینم تصویر
151567

ببینید دو ردیف شماره 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;
}
}
}

شهابسلطانی
شنبه 23 فروردین 1399, 08:09 صبح
سلام
عالی بود
عالی بود
ممنون:تشویق::تشویق::تشویق::ت ویق::تشویق::تشویق::تشویق::تش یق::تشویق: