PDA

View Full Version : نمایش اطلاعات چند جدول و محاسبات آن در datagridview



FreeMagic
چهارشنبه 18 بهمن 1391, 19:04 عصر
سلام به همه دوستان
قبل از هرچیز من یه عکس ضمیمه کردم که کار من با توجه به اون هست
به طور مثال 3 تا جدول دارم.
جدول اولی مشخصات دانشجو هست
جدول دوم نمرات مستمر هست (فقط 3 نمره)
جدول سوم تعداد واریزی ها (تعداد واریزی های همه دانشجوها برابر نیست و هر دانشجو به تعداد نامشخصی رکورد داره)
ولی حالا میخوام برای کاربر چیزی شبیه جدول چهارم (که اصلا وجود ندار) نمایش بدم
کد و نام دانشجو رو از توی 2 جدول جداگانه میگیره
نمرات مستمر رو هم همین طور. میانگین نمرات رو موقع نمایش باید محاسبه کنه (جمع نمرات تقسیم بر 3)
و در نهایت ببینه هر دانشجو چند واریزی داشته و مجموع رو در ستون آخر نمایش بده
حالا میخوام محتویات datagridview مثل آخری باشه. همچین چیزی رو چه طور میتونم نمایش بدم؟
لطفا با کد و مثال کامل توضیح بدید. به خدا دیگه هنگ کردم سر این پروژه:گریه:

khokhan
چهارشنبه 18 بهمن 1391, 19:21 عصر
درود بر شما

برای مورد اول کوری با " اینر جوین " بنویسین واز هر جدول به هر تعداد ستون خواستین انتخاب
وجدول جدید در گرید بوجود آورید و اگه خواستین می تونین جدول جدید رو در دیتابیس هم ذخیره کنین


@"SELECT column_name(s) " +
"FROM table_name1 " +
"INNER JOIN table_name2 " +
"ON table_name1.column_name=table_name2.column_name";

FreeMagic
چهارشنبه 18 بهمن 1391, 19:29 عصر
درود بر شما

برای مورد اول کوری با " اینر جوین " بنویسین واز هر جدول به هر تعداد ستون خواستین انتخاب
وجدول جدید در گرید بوجود آورید و اگه خواستین می تونین جدول جدید رو در دیتابیس هم ذخیره کنین


@"SELECT column_name(s) " +
"FROM table_name1 " +
"INNER JOIN table_name2 " +
"ON table_name1.column_name=table_name2.column_name";

درست نگرفتم چی شد!!!
کلا یه مورد بیشتر نیست
سه جدول اول که در دیتابیس ذخیره شده موجود هستن.
جدول چهارم که در اصل یک view هست و برای ذخیره نیست و فقط قراره نمایش داده بشه. ولی چه طوری این view رو توی datagrid بزارم رو مشکل دارم

khokhan
چهارشنبه 18 بهمن 1391, 19:44 عصر
با یه کوری مثل بالایی اطلاعات رو از جداول دیتابیس واکشی می کنی

حالا اگه خروجی دیتا تیبل یا دیتا آدابتور (بستگی به متد شما داره ) رو به دیتا گرید اختصاص بدی و ستونهای جدید در اون نشون داده می شه

نمونه می خوای ؟ :لبخند:

FreeMagic
چهارشنبه 18 بهمن 1391, 20:37 عصر
با یه کوری مثل بالایی اطلاعات رو از جداول دیتابیس واکشی می کنی

حالا اگه خروجی دیتا تیبل یا دیتا آدابتور (بستگی به متد شما داره ) رو به دیتا گرید اختصاص بدی و ستونهای جدید در اون نشون داده می شه

نمونه می خوای ؟ :لبخند:

نیکی و پرسش:لبخند:
دستت طلا
من معمولا با دیتاتیبل کار میکنم. احساس میکنم این جوری ساده تره ولی باز هرطوری که جور دربیاد
در رابطه با نوشتن کوری تنها مشکل من حساب مجموع مبالغ واریزی هست!
اون میانگین نمرات هم که کاری نداره

khokhan
چهارشنبه 18 بهمن 1391, 21:10 عصر
نیکی و پرسش:لبخند:


این هم نمونه تقدیم شما

البته با دیتابیس اکسس ساختم چون فرستادنش آسونه تبدیلش به sql کار زیاد مشکلی نیس :لبخند:

khokhan
چهارشنبه 18 بهمن 1391, 21:14 عصر
این هم برا محاسبه مجموع دو ستون از دیتا گرید


private void dataGridView_CellValidated(object sender, DataGridViewCellEventArgs e) {
if (e.RowIndex > -1) {
DataGridViewRow row = dataGridView.Rows[e.RowIndex];
string valueA = row.Cells[columnA.Index].Value.ToString();
string valueB = row.Cells[columnB.Index].Value.ToString();
int result;
if (Int32.TryParse(valueA, out result)
&& Int32.TryParse(valueB, out result)) {
row.Cells[columnTotal.Index].Value = valueA + valueB;
}
}
}

اگه خواستی ستون توتال غیر قابل تغییر باشه :


dataGridView.Columns["Total"].ReadOnly = true

reza_ali202000
پنج شنبه 19 بهمن 1391, 05:41 صبح
همش رو توی یه کوری میتونی بنویسی.
select student.id,student.name,avg(number.number1),sum(va riz.mablagh) from
student, number,variz
where student.code=number.code_student and student.code=variz.code_student
group by code
تو یه چیزی همین مایه ها.
من خودم یه دستور با حدود پنجاه خط کد و بیش از سیزده جدول رو به همین طریق نوشتم.:متعجب:
البته قبلا میومدم برا هرکدوم یه دیتاگریدویو میزاشتم و بعد هم حلقه، تو هرکدوم دونه دونه میخوند.:لبخند:

ghasem110deh
چهارشنبه 08 بهمن 1393, 17:54 عصر
این هم برا محاسبه مجموع دو ستون از دیتا گرید


private void dataGridView_CellValidated(object sender, DataGridViewCellEventArgs e) {
if (e.RowIndex > -1) {
DataGridViewRow row = dataGridView.Rows[e.RowIndex];
string valueA = row.Cells[columnA.Index].Value.ToString();
string valueB = row.Cells[columnB.Index].Value.ToString();
int result;
if (Int32.TryParse(valueA, out result)
&& Int32.TryParse(valueB, out result)) {
row.Cells[columnTotal.Index].Value = valueA + valueB;
}
}
}

اگه خواستی ستون توتال غیر قابل تغییر باشه :


dataGridView.Columns["Total"].ReadOnly = true


سلام
من اینر جوین رو توی sql ایجاد کردن یا با استفاده از ویو ...
چطور اونو نمایش بدم !
میشه مثل یه جدول براحتی با " سلکت * " توی دیتاگرید ویو نمایشش داد ؟