ورود

View Full Version : مشکل در طراحی با فیلدهای داینامیک در SQL و C#



madiseh
شنبه 10 فروردین 1392, 18:22 عصر
با سلام خدمت تمامی دوستان

من یک فرم در C#‎‎ درست کردم با یک عنوان به اسم تعداد قسط

بعد مثلا طرف میزنه 5 تا

بعد واسش 5 تا فیلد میسازه به اسم قسط اول ، قسط دوم و ........

جلوش هم مبلغ این قسط را طرف وارد میکنه مثلا اینجور میشه

قسط اول ------------> 100 هزار تومان

قسط دوم ------------> 200 هزار تومان

قسط سوم ------------> 600 هزار تومان

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

یعنی مثلا یکبار این جدول که ساختم اگر کاربر زده مثلا 2 قسط فقط 2 تا پارامتر را در ستون های جدول ذخیره کنه

اگه زده 3 تا مثلا 3 تا قسط را ذخیره کنه و ..........

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

یکبار تویه این جدول 2 تا قسط هست یکبار سه تا قسط هست یکبار N تا قسط

و قرار هم هست ما از این جدول بعدا گزارش گیری کنیم

چون اول پیش خودم گفتم که مثلا یک جدول طراحی میکنم با 20 تا ستون و بعد از آن مثلا طرف میاد ورود اطلاعات میکنه و بقیه فیلدهاش NULL میشه ولی اونجوری تو گزارش گیری خیلی بد میشه

یک راه حل منطقی تر که به ذهنم زد این بود که مثلا کاربر میگه 5 قسط من بیام همون موقع یک آرایه 5 عنصر درست کنم و بعد از آن کل آرایه را در دیتابیس ذخیره کنم
ولی نمیدونم آیا میشه که در دیتابیس آرایه ذخیره کرد یا نه ؟

به نظر دوستان چی کار کنم ؟

هر چی هم سرچ زدم جواب نگرفتم منتظر راهنمایی تون هستم

اگر میشه دوستان سریع تر راهنمایی کنند :قلب::قلب::قلب:

veniz2008
شنبه 10 فروردین 1392, 19:46 عصر
سلام.
چون تعداد اقساط مشخص نیست بنابراین نمیشه از قبل تعداد فیلدها رو مشخص کرد. یه نمونه از پیاده سازی میتونه اینطور باشه :
نام کاربری، شماره قسط، مبلغ قسط، تاریخ قسط و ...
مثلا اگر برای شخصی بخواید 3 قسط در نظر بگیرید ، 3 رکورد براش ثبت می کنید و اگر شخصی 10 قسط داشت، 10 رک.رد واسش ثبت میشه.
موفق باشید.

madiseh
یک شنبه 11 فروردین 1392, 14:17 عصر
سلام.
چون تعداد اقساط مشخص نیست بنابراین نمیشه از قبل تعداد فیلدها رو مشخص کرد. یه نمونه از پیاده سازی میتونه اینطور باشه :
نام کاربری، شماره قسط، مبلغ قسط، تاریخ قسط و ...
مثلا اگر برای شخصی بخواید 3 قسط در نظر بگیرید ، 3 رکورد براش ثبت می کنید و اگر شخصی 10 قسط داشت، 10 رک.رد واسش ثبت میشه.
موفق باشید.

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

با تشکر از شما بابت پاسختان

دقیقا سوال من هم همینه که چطوری من این را در دیتابیس ذخیره کنم

یعنی یک دفعه 3 تا فیلد ذخیره میشه یک دفعه 10 بار

ممنون میشم نحوه پیاده سازی در SQL را بهم بگید ..........

veniz2008
یک شنبه 11 فروردین 1392, 17:08 عصر
بله برای این کار باید در یک بار وصل شدن به دیتابیس هر تعداد قسطی که برای یک شخص وجود داره رو درج کنید. روش های درج کردن متفاوت هست و بارها در سایت بحث شده. ولی در یک کلام بهتون بگم که باید دنبال "درج همزمان چندین رکورد" در دیتابیس بگردید که بارها در سایت بحث شده.
موفق باشید.

madiseh
یک شنبه 18 فروردین 1392, 12:45 عصر
بله برای این کار باید در یک بار وصل شدن به دیتابیس هر تعداد قسطی که برای یک شخص وجود داره رو درج کنید. روش های درج کردن متفاوت هست و بارها در سایت بحث شده. ولی در یک کلام بهتون بگم که باید دنبال "درج همزمان چندین رکورد" در دیتابیس بگردید که بارها در سایت بحث شده.
موفق باشید.

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

و از طرفی هم کلی تویه اینترنت سرچ کردم ولی پیدا نکردم

لطفا تاپیک مشابهی در صورتی که وجود دارد بفرمایید تا حداقل کلید واژه ای دستم بیاد

منتظر راهنمایی دوستان عزیز هستم

یوسف زالی
یک شنبه 18 فروردین 1392, 14:23 عصر
سلام.
فرض کن یک نفر بیاد و 120 تا قسط داشته یاشه. واقعا 120 تا فیلد؟؟؟
این فاجعه نباشه کمتر از اون هم نیست.
شما یک جدول ساده می سازی، رکوردها رو در اون اینسرت می کنی.
مثال اینسرت گروهی یا همون درج همزمان:

insert into TBL select a, b, c from OtherTbl where Conditions

همین.

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

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

موفق باشید.