PDA

View Full Version : مانده گیری در datagridview در ستون مجزا



Iman7228
پنج شنبه 10 خرداد 1397, 02:47 صبح
سلام دوستان عزیز.
من اطلاعات را از دیتابیس میریزم داخل دیتا گرید، بعد میخوام ستون بدهکار و بستانکار را جمع و تفریق کنه و به ازای مبلغ در هر سطر، در ستون مانده نشون بده. مثل عکس ضمیمه شده
کسی هست تو این مورد کمک کنه؟




int total = 0;


int bed, bes;




for (int j = 0; j < dataGridViewX1.Rows.Count; j++)
{
bed = Convert.ToInt32(dataGridViewX1.Rows[j].Cells["bardasht"].Value);
bes = Convert.ToInt32(dataGridViewX1.Rows[j].Cells["variz"].Value);
total += bes - bed;
dataGridViewX1.Rows[j].Cells["mandeh"].Value = total;
}





148301

رامین مرادی
پنج شنبه 10 خرداد 1397, 08:26 صبح
خب الان این کدتون خطا داره یا چی؟ اگه خطا داره خطا چیه؟:متفکر:

Iman7228
پنج شنبه 10 خرداد 1397, 14:21 عصر
خب الان این کدتون خطا داره یا چی؟ اگه خطا داره خطا چیه؟:متفکر:

خطایی نداره و کار میکنه. منتها باید یه جور صورتحساب درست کنم.یعنی موجودی سطر قبلی با ستون بدهکار یا بستانکار سطر بعدیش جمع بشه.
مثل زیر :

ردیف ----- بدهکار --------بستانکار --------موجودی
1 ----------- 0---------- 10000 ------------10000
2 ----------2000 -----------0 ---------------8000
3---------- 1000-----------0 ---------------7000

موجودی ردیف 1 = بستانکار - بدهکار
موجودی ردیف2 = موجودی ردیف قبل+بستکار ردیف فعلی - بدهکار ردیف فعلی
موجودی ردیف 3= موجودی ردیف قبل+بستکار ردیف فعلی - بدهکار ردیف فعلی
.
.
. الی آخر

رامین مرادی
پنج شنبه 10 خرداد 1397, 14:37 عصر
خب اینکه کاری نداره


int sum = 0;
for (int i = 0; i < dgv1.RowCount; i++)
{
sum+=int.Parse(dgv1.Rows[i].Cells["Bes"].Value.ToString())-int.Parse(dgv1.Rows[i].Cells["Bed"].Value.ToString());
dgv1.Rows[i].Cells["Total"].Value = sum.ToString();
}
MessageBox.Show(sum.ToString());



تست کنید. نتیجه رو بگید.

Iman7228
پنج شنبه 10 خرداد 1397, 14:41 عصر
خب اینکه کاری نداره


int sum = 0;
for (int i = 0; i < dgv1.RowCount; i++)
{
sum+=int.Parse(dgv1.Rows[i].Cells["Bes"].Value.ToString())-int.Parse(dgv1.Rows[i].Cells["Bed"].Value.ToString());
dgv1.Rows[i].Cells["Total"].Value = sum.ToString();
}
MessageBox.Show(sum.ToString());



تست کنید. نتیجه رو بگید.

شما الان نتیجه تفریق دوتا ستون رو میگیری. ولی با مانده ی سطر قبلی جمع نمیکنی که؟!

تو مثالی که زدم ببینید

رامین مرادی
پنج شنبه 10 خرداد 1397, 14:44 عصر
شما الان نتیجه تفریق دوتا ستون رو میگیری. ولی با مانده ی سطر قبلی جمع نمیکنی که؟!

تو مثالی که زدم ببینید

پس این چیه؟ sum+= !!
:چشمک:

متوجه منظورتون شدم . منظورتون این بود که با اون ستون total جمع نزدم.یه متغییر sumنوشتم و تو اون ذخیره کردم.

رامین مرادی
پنج شنبه 10 خرداد 1397, 14:51 عصر
شما الان نتیجه تفریق دوتا ستون رو میگیری. ولی با مانده ی سطر قبلی جمع نمیکنی که؟!

تو مثالی که زدم ببینید

اینم همونی که مد نظر شما بود


for (int i = 0; i < dgv1.RowCount; i++)
{
if(i==0)
dgv1.Rows[i].Cells["Total"].Value=int.Parse(dgv1.Rows[i].Cells["Bes"].Value.ToString())-int.Parse(dgv1.Rows[i].Cells["Bed"].Value.ToString());
else
dgv1.Rows[i].Cells["Total"].Value=int.Parse(dgv1.Rows[i-1].Cells["Total"].Value.ToString())+int.Parse(dgv1.Rows[i].Cells["Bes"].Value.ToString())-int.Parse(dgv1.Rows[i].Cells["Bed"].Value.ToString());
}
MessageBox.Show(sum.ToString());

Iman7228
پنج شنبه 10 خرداد 1397, 15:02 عصر
ممنونم.
چون دیتاگریدویوی من حالت افزایشی داشت و جدیدترین تراکنش در اولین سطر قرار میگرفت، بنابراین من کد رو به صورت زیر اصلاح کردم.


int sum = 0;
for (int i = dataGridViewX1.RowCount-1; i >=0 ; i--)
{
sum += int.Parse(dataGridViewX1.Rows[i].Cells["varizi"].Value.ToString()) - int.Parse(dataGridViewX1.Rows[i].Cells["bardashti"].Value.ToString());
dataGridViewX1.Rows[i].Cells["mandeh"].Value = sum.ToString();
}



نمونه ی دوم :



for (int i = dataGridViewX1.RowCount-1; i >= 0; i--)
{


if (i==dataGridViewX1.RowCount-1)


dataGridViewX1.Rows[i].Cells["mandeh"].Value = int.Parse(dataGridViewX1.Rows[i].Cells["varizi"].Value.ToString()) - int.Parse(dataGridViewX1.Rows[i].Cells["bardashti"].Value.ToString());


else


dataGridViewX1.Rows[i].Cells["mandeh"].Value = int.Parse(dataGridViewX1.Rows[i + 1].Cells["mandeh"].Value.ToString()) + int.Parse(dataGridViewX1.Rows[i].Cells["varizi"].Value.ToString()) - int.Parse(dataGridViewX1.Rows[i].Cells["bardashti"].Value.ToString());


}



شاید به درد کسی خورد. ممنون ازینکه پاسخگو بودی دوست من.