دسته بندی ها
23:06 1399/08/27

محاسبه مجموع مقادیر یک ستون در DataGridView و مرتب سازی اطلاعات

مشخصات سوال کننده :
کاربر : Mahhsa     امتیاز کاربر : 0     رتبه کاربر : 7020
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3299
2 نظر
saedbfd : بهتر هست که کدهایی که نوشتید و فیلدهایی که توی دیتابیس دارید هم بگید. با این توضیحات فقط میشه یه سری توضیحات کلی داد و هیچ پاسخ دقیقی که به درد شما بخوره نمیشه ارائه داد.

امتیاز کاربر : 1654   رتبه کاربر : 1   تاریخ ثبت : 11:24 1399/08/27
Mahhsa : برنامه من به این شکل هست که اول باید اطلاعات پرونده رو از یک فرم دیگه جستجو کنم و بعد شماره پرونده مورد نظرم رو به فرم انتقال بدم و بعد کارشناسی که مورد نظر هست بر اساس چند شرط جستجو کنم و بعد از انتخاب کارشناس مورد نظر اطلاعات کارشناس و شماره پرونده رو به یک فرم دیگه انتقال بدم و اونجا مبلغ قرار داد رو وارد کنم و در پایگاه داده م ذخیره کنم.حالا توی مرحله جستجو کارشناس من باید مبلغ تمامی قراردادهایی که باهاش بسته شده رو توی فیلد مبالغ دریافتی قرار بدم که برای پرونده دیگه کسی که کمترین دستمزد رو تا حالا داشته انتخاب بشه که بتونیم عدالت رو د موردشون رعایت کنیم.عکس های مربوط به فرم ها و فیلد های جدول رو قرار میدم اگه امکانش باشه

امتیاز کاربر : 0   رتبه کاربر : 7020   تاریخ ثبت : 04:37 1399/08/29
پاسخ دهنده : fateme 20:49 1399/08/28

به طور کلی وقتی شما اطلاعات رو از دیتابیس می خونید و میخواید توی DataGridView نمایش بدید از یک حلقه استفاده می کنید. در این حلقه هر ستونی که بخواید میتونید مجموع مقادیرش رو بدست بیارید. به عنوان مثال کد زیر رو در نظر بگیرید

private void ShowUserInfo(string SearchStatment)
   {
            
      var query = database.Database.SqlQuery<Product>("Select * From Product);
      var result = query.ToList();
      if (result.Count != 0)
      {
          long Total_Price = 0;
          for (int I = 0; I <= result.Count - 1; I++)
          {
               DataGridView1.Rows[I].Cells["ID"].Value = result[I].ID;
               DataGridView1.Rows[I].Cells["Price"].Value = result[I].Price;
               DataGridView1.Rows[I].Cells["ProductName"].Value = result[I].ProductName;
               Total_Price += result[I].Price;
          }
        }

در کد بالا اطلاعات را از دیتابیس خوندیم و در DataGridView1 نمایش میدیم. یک متغیر به نام Total_Price هم تعریف کردیم که در هر باز اجرای حلقه مقدار Price رو با مقادیر قبلی جمع می کنه و مقدار کلی رو بدست میاره.

انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده

به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
1 نظر
Mahhsa : متاسفانه این روش برای من جواب نمیده چون نمیخوام که کاربر انتخاب کنه من میخوام که وقتی مبلغ رو کاربر وارد میکنه خود به خود با مقدار قبلی جمع بشه و در پایگاه داده قرار بگیره و وقتی که سرچ میکنم مجموع کل رو توی جستجوم نشون بده

امتیاز کاربر : 0   رتبه کاربر : 7020   تاریخ ثبت : 06:15 1399/09/02
پاسخ دهنده : Mahhsa 17:12 1399/08/29

در این فرم ما پرونده رو انتخاب کردیم و باید کارشناس مورد نظر رو انتخاب کنیم.لیست کارشناسان در دیتاگرید نمایش داده میشن و بر اساس رشته و صلاحیت و... جستجو انجام میشه و وقتی که جستجو انجام شد در دیتاگرید باید کارشناسی که کمترین دستمزد رو تا حالا دریافت کرده انتخاب کنیم و دکمه انتخاب رو بزنیم تا به مرحله بعد بریم 

در این مرحله اطلاعات گرفته شده از دیتاگرید نمایش داده میشه و فقط فیلد مبلغ قرارداد خالی هست که باید مبلغ وارد بشه و در پایگاه داده ذخیره بشه.

حالا من سوالی که دارم این هست که چطور هر بار که مبلغ قرارداد رو وارد میکنیم با مقدار قبلیش جمع بشه و ذخیره بشه که توی سرچ بعدی مقدار جمع شده رو نمایش بده ؟

ستون های جدول کارشناس هم شامل شناسه (id)، شماره پرونده کارشناس،شماره پروانه کارشناس ، اطلاعات فردی ،شماره حساب و حوزه قضایی و... که توی عکس دوم میتونین تمام ستون ها رو مشاهده کنین 

ویرایش شده در پنج شنبه 29 آبان 1399 ساعت 18:32:39
به این پاسخ امتیاز بدهید    0
امتیاز: 0 رتبه: 7020
پاسخ دهنده : AliSeifi 13:49 1399/09/30

شما باید جدول مربوطه رو در واقع ویرایش کنید. به شکل زیر:

var query=(from t in databse.TableName where t.id == ExpertID select t).SingleOrDefault();

// database: نامی که برای مدل دیتابیست در نظر گرفتی

// TableName: نام جدول مورد نظر برای ذخیره اطلاعات

// ExpertID: آیدی کارشناسی که قراره اطلاعات براش ثبت انجام شه و میتونی به شکل زیر با کلیک روی هر ردیف از دیتاگرید ویو بدست بیاریش:

int ExpertID = DataGridView.SelectedRows.Cells["id"].Value;



دستور برای ذخیره و جمع با مبلغ قبلی:

query.Price += txtPrice.text;

database.SaveChange();


// price: نام فیلد مبلغ در دیتابیس

// همچنین با توجه به نوع داده ای که در دیتابیس در نظر گرفتی برای جمع مبالغ باید تبدیل های مورد نیاز رو انجام بدی.

===

در کل دستورات لازم به شکل زیر میشه که باید در رویداد کلیک دکمه یا ... مورد نظر فراخوانی شوند:

}

int ExpertID = DataGridView.SelectedRows.Cells["id"].Value;

var query=(from t in databse.TableName where t.id == ExpertID select t).SingleOrDefault();

query.Price += txtPrice.text;

database.SaveChange();

{

===

همچنین برای جلوگیری از بوجود اومدن خطا در فیلد قیمت در ابتدا باید یک مقدار 0 داشته باشید.

===

اگر جایی رو متوجه نشدین بگین تا بیشتر توضیح بدم.


البته روش بهتر و اصولی این هست که مبالغی که هر سری وارد میشه در یک جدول ذخیره شه و برای نمایش همونجور که دوستمون در بالا گفتن عمل کنید.

ویرایش شده در یکشنبه 30 آذر 1399 ساعت 13:59:28
به این پاسخ امتیاز بدهید    0
امتیاز: 5 رتبه: 110
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود