PDA

View Full Version : حرفه ای: نمایش عنوان کالای انتخاب شده یک کمبو باکس در گرید و ذخیره کد کالای انتخاب شده کمبو باکس در دیتابیس



black_mask
پنج شنبه 19 بهمن 1391, 14:27 عصر
باسلام.
در یک فاکتور خرید بعد از انتخاب نام کالا از طریق کمبو باکس ، کد کالا را در جدول ذخیره کرده ام. تا اینجای کار مشکلی ندارم. ولی می خواهم ستونی از گرید که منتسب به کد کالاست به جای کد کالا نام کالایی که توسط کمبو باکس انتخاب شده را نمایش دهد.
گرید من به جدولی که فاکتور در آن ذخیره میشود،متصل است.
"گرید پس از ثبت هر کالا آن را نمایش می دهد"
99693
از دوستان خواهش میکنم هر کسی اطلاعاتی توی این زمینه داره بنده را راهنمایی کنه چون بدجوری بهش احتیاج دارم

ma.rad
پنج شنبه 19 بهمن 1391, 14:38 عصر
یه روش اینه تو دیتاگرید یه ستون اضافه کن مثلا PName بعد تو رویداد DataBinding Compelet گرید یه حلقه بزار بیاد بر اساس کد کالا تو جدول کالا بگرده و نام هر کالا رو تو سطر موردنظر وستون نام کالا درج کنه
و ستون کد کالا رو هم Visibale برابر ّfalse بزار

black_mask
پنج شنبه 19 بهمن 1391, 18:31 عصر
یه روش اینه تو دیتاگرید یه ستون اضافه کن مثلا PName بعد تو رویداد DataBinding Compelet گرید یه حلقه بزار بیاد بر اساس کد کالا تو جدول کالا بگرده و نام هر کالا رو تو سطر موردنظر وستون نام کالا درج کنه
و ستون کد کالا رو هم Visibale برابر ّfalse بزار
اگه میشه بیشتر توضیح بدبد.چون برنامه نویسی را تازه شروع کردم و با این توضیحات متوجه نمی شم که باید چیکار کنم.
اگه لطف کنید یه قطعه کد بزارید
مثلا: چطور می تونم در یک مکان خاص از گرید یه ستون ایجاد کنم(مثلا بین ردیف و کد کالا)و دیگه اینکه با چه کدی میتونم توی داده های جدول یه جستجو بزارم.اگه با دستور Select باید انجام بدم، دستورش چطوریه
با تشکر.
اگه دوستان دیگه هم می تونن کمک کنن.

ma.rad
پنج شنبه 19 بهمن 1391, 19:31 عصر
یه راه دیگه اینکه می تونید جدول کالا وجدول فروش رو join کنید و یا با ارتباط دادن بین دوجدول یه view ازش بسازید.
با اینکه این سوال خیلی تکراریه!!!! اما بگید از کدوم روش می خواید تا براتون یه نمونه بفرستم

ma.rad
پنج شنبه 19 بهمن 1391, 19:49 عصر
یه نمونه که از روش ارتباط دادن جداول(Relationship) وایجادیک View هست. البته تفاوت چندانی با join کردن نداره

black_mask
جمعه 20 بهمن 1391, 11:28 صبح
یه نمونه که از روش ارتباط دادن جداول(Relationship) وایجادیک View هست. البته تفاوت چندانی با join کردن نداره

باتشکر.
کد هایی که گذاشتید برای گزارش گیری مفید هستند چون از SELECT استفاده کرده ، اما برای ثبت فاکتور که من توی جدول INSERT می کنم چندان کارایی نداره. در ضمن من توی جدولم کد کالا را ذخیره می کنم و برای نمایش توی گرید هم از همون جدول استفاده می کنم. یکی از دوستان اشاره کرده بود که میشه توی تنظیمات گرید کاری کرد که به جای کد کالا نام اونو نمایش بده ، از طریق کمبوباکس. چون من به کمبو باکس کالا، هم کد کالا را نسبت دادم(ValueMember) و هم نام کالا را(DisplayMember). چطوری می تونم از خاصیت این کمبو باکس استفاده کنم و یا به طریقی ستون عنوان کالا در گرید را به جای اینکه از جدول اطلاعات خودش را بگیره به DisplayMember کمبو باکس کالا بایند بشه.
یه سوال دیگه که از دوستان داشتم اینه که چطوری می تونم جمع سطرهای ، ستون "جمع" در گرید را در تکس باکس "جمع فاکتور" داشته باشم.ممنون اگه کمک کنید
ممنون میشم اگه کسی جواب بده

Esmail Solhkhah
جمعه 20 بهمن 1391, 11:39 صبح
یکی از دوستان اشاره کرده بود که میشه توی تنظیمات گرید کاری کرد که به جای کد کالا نام اونو نمایش بده ، از طریق کمبوباکس

سلام دوست عزیز

بنده بودم ، این پست (http://barnamenevis.org/showthread.php?245726-%D9%85%D8%B7%D8%A7%D9%84%D8%A8%DB%8C-%DA%A9%D9%85%DB%8C%D8%A7%D8%A8-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-Data-Grid-View&p=1312154&viewfull=1#post1312154)

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

موفق باشید.

aliasghar2
جمعه 20 بهمن 1391, 11:43 صبح
سلام

خب من 2 تا سوال ازشما
1 شما گریدتون رو از بانک پر می کنید یا تو برنامه یه سطر بهش اضافه میکنید
2 ستون های گرید رو دستی مشخص کردید یا به صورت اتوماتیک ساخته میشن


یه سوال دیگه که از دوستان داشتم اینه که چطوری می تونم جمع سطرهای ، ستون "جمع" در گرید را در تکس باکس "جمع فاکتور" داشته باشم.ممنون اگه کمک کنید
در مورد این هم باید بگم که میتونید هر بار با پیمایش سطر ها مقادیر ستون دلخواه رو با هم جمع بزنی البته می تونید از طریق linq این کار رو خیلی راحت تر و سریعتر انجام دهید

black_mask
جمعه 20 بهمن 1391, 13:12 عصر
سلام

خب من 2 تا سوال ازشما
1 شما گریدتون رو از بانک پر می کنید یا تو برنامه یه سطر بهش اضافه میکنید
2 ستون های گرید رو دستی مشخص کردید یا به صورت اتوماتیک ساخته میشن

در مورد این هم باید بگم که میتونید هر بار با پیمایش سطر ها مقادیر ستون دلخواه رو با هم جمع بزنی البته می تونید از طریق linq این کار رو خیلی راحت تر و سریعتر انجام دهید
جواب سوال 1: گرید به بانک وصله و با وبعد از ثبت هر کالا ، در بانک ذخیره میشه و در گرید نمایش داده میشه
جواب سوال: به طور اتوماتیک از ستون های خود جدول ساخته می شه و من فقط هدر های اونا را تغییر دادم.
اینم کد انتساب گرید به جول

//Set DataGride
ObjDataTable = ConnectToData.GetData("SELECT * FROM Temp_Lst_Factors");
dataGridView1.DataSource = ObjDataTable;
dataGridView1.Columns[0].HeaderText = "ردیف";
dataGridView1.Columns[1].HeaderText = "نام کالا";
dataGridView1.Columns[1].Width = 20;
dataGridView1.Columns[2].HeaderText = "تعداد";
dataGridView1.Columns[2].Width = 40;
dataGridView1.Columns[3].HeaderText = "قیمت";
dataGridView1.Columns[3].Width = 30;
dataGridView1.Columns[4].HeaderText = "جمع";
dataGridView1.Columns[4].Width = 70;
dataGridView1.Columns[5].HeaderText = "توضیحات";
dataGridView1.Columns[5].Width = 100;


من با Linq کار نکردم. میشه یه راه دیگه بهم بگید.مثلا میشه محاسباتی روی سطر های گرید انجام داد و انو توی تکس باس ریخت. اگه میشه برای هردو یه نمونه کد بذارید. یا اینکه بیشتر توضیح بدبد.ممنون

aliasghar2
جمعه 20 بهمن 1391, 13:39 عصر
خب واسه مشکل اولت باید بگم که می تونی Query تو اینجوری بنویسی
با فرض اینکه جدولی به نام کالا داری با دو فیلد no ,Name
Select temp.radif ,kala.name,temp.cost , temp.tedad from temp join kala on temp.nokala=kala.no

aliasghar2
جمعه 20 بهمن 1391, 13:46 عصر
من با لینک کار نکردم. میشه یه راه دیگه بهم بگید.مثلا میشه محاسباتی روی سطر های گرید انجام داد و انو توی تکس باس ریخت. اگه میشه برای هردو یه نمونه کد بذارید. یا اینکه بیشتر توضیح بدبد.ممنون
خب من دوتا راه حل واست دار
1حلقه روی گرید و جمع زدن سطر ها

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
resSum + =int.parse( Row["Cost"].Tostring)
}

2 استفاده از کوئری
SELECT SUM(Cost ) FROM Temp

black_mask
جمعه 20 بهمن 1391, 14:26 عصر
[QUOTE=aliasghar2;1696062]خب من دوتا راه حل واست دار
1حلقه روی گرید و جمع زدن سطر ها

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
resSum + =int.parse( Row["Cost"].Tostring)
}

کدی که نوشتید ارور می دهد. اون متغیری که داخلش جمع را ریختید باید از چه نوعی باشه. در ضمن "=+" را هم ارور میده. وقتی + را پاک می کنم ارور حذف میشه.
باید چطور تعریف کنم. اگه میشه کمک کنید.
resSum + =int.parse( Row[" در اینجا باید هدری که برای گرید انتخاب کردم را بنویسم یا شماره این ستونهایی که می خواهم با هم جمع بشن"].Tostring

black_mask
جمعه 20 بهمن 1391, 14:37 عصر
خب واسه مشکل اولت باید بگم که می تونی Query تو اینجوری بنویسی
با فرض اینکه جدولی به نام کالا داری با دو فیلد no ,Name
Select temp.radif ,kala.name,temp.cost , temp.tedad from temp join kala on temp.nokala=kala.no

من دستور تا اصلا متوجه نشدم. در ضمن چطوری این دستور را توی نمایش فیلد های گریدم استفاده کنم
اینم جدولی که توش ذخیره می کنم و اطلاعاتشو توی گرید نمایش می دم
99754