PDA

View Full Version : سوال: برای همچین فرمی کد نویسی باید به چه شکلی باشه ؟



samadblaj
پنج شنبه 22 فروردین 1392, 10:48 صبح
سلام مهندسین برنامه نویس امیدوارم حال همتون خوب باشه.

دوستان عزیز من میخوام برای فرم پیوستی کد "ثبت" بنویسم اما نمیدونم سناریو رو به چه تعریف کنم (این فرم یک جدول داره) ؟

wolf_majid
پنج شنبه 22 فروردین 1392, 10:59 صبح
فکر میکنم توی یک رشته در یک سال نمیشه بیش از یک مقام آورد مگر اینکه توی اون سال بیش از یک بار مسابقات برگزار بشه
در اون صورت به دور برگزاری هم بستگی داره
در غیر اینصورت از نظر من کلید باید رشته+سال باشه

samadblaj
پنج شنبه 22 فروردین 1392, 11:12 صبح
سلام مرسی از لطفتون در یک سال میشه ولی مشکل سر این نیست...
این فرم دو قسمت داره قسمت اول که فقط یک فیلد در دیتابیس هست...
قسمت دوم که چند رکورد توی دیتابیس میشه

سناریو ثبت اطلاعات در دیتابیس به چه شکل خواهد بود چون دو قسمت فرم باید در یک جدول ثبت بشود...

wolf_majid
پنج شنبه 22 فروردین 1392, 11:17 صبح
فیلدهای دیتابیستون رو بگذارید
اینطوری بهتر میشه جواب داد

veniz2008
پنج شنبه 22 فروردین 1392, 11:30 صبح
سلام.
اگر حرف های دوستمون درباره مجاز نبودن بیش از یک مقام در سال برای یک رشته صحیح باشه در این حالت قاعدتا باید کلید رو نام کاربری،رشته و سال با هم در نظر بگیرید (یعنی یک شخص در یک سال و برای یک رشته خاص بیشتر از یک مقام نمیتونه کسب کنه). ولی گرفتن کلید 3 تایی چندان جالب نیست. بهتره که یک فیلد اضافه کنید که کلید باشه (identity ) و این 3 فیلدی رو که گفتم یونیک کنید.
البته این مورد رو هم باید بررسی کنید که آیا یک شخص در یک سال میتونه در رشته دیگه ای هم مقام کسب کنه؟. اگر مجاز نیست پس نیازی به 3 فیلد نخواهد بود و فقط با نام کاربری و سال باید یونیک و کنترل بشه که تکراری نباشه.

veniz2008
پنج شنبه 22 فروردین 1392, 11:37 صبح
این فرم دو قسمت داره قسمت اول که فقط یک فیلد در دیتابیس هست...
قسمت دوم که چند رکورد توی دیتابیس میشه

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

samadblaj
پنج شنبه 22 فروردین 1392, 12:09 عصر
با سلام مجدد

فیلدهای دیتابیستون رو بگذارید
اینطوری بهتر میشه جواب داد
متاسفانه به دلیلی تغییرات در این فرم جدول رو حذف و مجیور به طراحی دوباره جدول هستم (جدولی از این فرم در اختیار ندارم).


سلام.
اگر حرف های دوستمون درباره مجاز نبودن بیش از یک مقام در سال برای یک رشته صحیح باشه در این حالت قاعدتا باید کلید رو نام کاربری،رشته و سال با هم در نظر بگیرید (یعنی یک شخص در یک سال و برای یک رشته خاص بیشتر از یک مقام نمیتونه کسب کنه). ولی گرفتن کلید 3 تایی چندان جالب نیست. بهتره که یک فیلد اضافه کنید که کلید باشه (identity ) و این 3 فیلدی رو که گفتم یونیک کنید.
البته این مورد رو هم باید بررسی کنید که آیا یک شخص در یک سال میتونه در رشته دیگه ای هم مقام کسب کنه؟. اگر مجاز نیست پس نیازی به 3 فیلد نخواهد بود و فقط با نام کاربری و سال باید یونیک و کنترل بشه که تکراری نباشه.
تشکر از پاسخ شما ؛
در سال میتونه چند مقام کسب کند و این یک نمونه هست.
صحبت هاتون رو اصلا متوجه نشدم اما بذارید قسمت ثبت رو بازتر کنم.

همونظور که در عکس پیوستی مشاهده میکنید فرم من دارای چند سربرگ برای ثبت اطلاعات یک (1) دانش آموز هستش.
در سربرگ اول (آموزشی) ابتدا شماره دانش آموزی (که کلید خارجی identity ) هست رو دریافت میکنه و در صورت ثبت نشدن این کد دانش آموزی امکان درج فعال میشه و تا پایان بر اساس همین کد دانش اموزی تمامی فرم ها رو ثبت میکنم.
فرم فرهنگی : سوابق طول عمر یک دانش آموز رو ثبت میکنه که در سال های متوالی مقام هایی کسب کرده.

بهتره که یک فیلد اضافه کنید که کلید باشه (identity ) و این 3 فیلدی رو که گفتم یونیک کنید.
و نیاز به تعریف فیلد هست اما نه دارای خصوصیت identity.

و کنترل بشه که تکراری نباشه.
و مشکل من سر تکراری بودن نیست.


--------------------------------------

سوال رو طوری دیگه میپریم :

در فرم فرهنگی بعد از کلید روی"اضافه به لیست" آیتم ها باید در جدول درج شوند؟اگه اینطور هست کاربرد دکمه "ثبت" چه خواهد شد؟

بیشتر مشکل من در دو دکمه اضافه به لیست و ثبت هست . آیا هر دو دکمه نیاز هست و هر کدوم باید چه عملیاتی رو انجام دهند

Mahmoud.Afrad
پنج شنبه 22 فروردین 1392, 12:14 عصر
اضافه به لیست که صرفا به گریدویو اضافه باید بکنه.
ثبت هم باید سطرهای گریدویو را برای اون شماره دانش آموزی ثبت کنه.

samadblaj
پنج شنبه 22 فروردین 1392, 12:28 عصر
اضافه به لیست که صرفا به گریدویو اضافه باید بکنه.
ثبت هم باید سطرهای گریدویو را برای اون شماره دانش آموزی ثبت کنه.
بله دقیقا منظورم همین بود...اضافه به گرید و ثبت در جدول.

خوب هر دو گروه آیتم باید در یک جدول قرار بگیرد و سه سطر هم مقام به گرید اضافه شده است.

بعد از کلیک روی دکمه ثبت در جدول اصلاعات به چه شکل ثبت خواهند شد؟


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

veniz2008
پنج شنبه 22 فروردین 1392, 13:12 عصر
صحبت هاتون رو اصلا متوجه نشدم اما بذارید قسمت ثبت رو بازتر کنم.
و نیاز به تعریف فیلد هست اما نه دارای خصوصیت identity.

بحث فیلد identity برای کلید جدول شما بود. جدول شما بایستی یک کلید داشته باشه. همچنین اون 3 فیلد نباید در سطرهای شما تکرار بشن (باید Unique بشن).


بعد از کلیک روی دکمه ثبت در جدول اصلاعات به چه شکل ثبت خواهند شد؟به همون شکلی که در گرید وجود دارند. مگر نمیخواید چیزی که در گرید هست در جدول ذخیره بشه؟


فیلد شماره هم فقط برای شمارش هست پس کلید نیست کلید ما همون شماره دانش آموزی در سربرگ آموزش هستش.مشکل همینجاست دوست من. در جدولی که شما میخوای مقام های یک شخص رو ذخیره کنی، شماره دانش آموزی نمیتونه به تنهایی کلید باشه. یا باید کلید ترکیبی بگیرید ( 3 کلیده شامل شماره دانش آموزی، سال تحصیلی و رشته ) که توصیه نمیشه کلید ترکیبی بگیرید یا باید این 3 فیلد رو unique کنید.(این دومی توصیه میشه) و برای جدولتون یک فیلد identity که همون شماره برای جدول شما میشه.

یعنی جایگاه "دارای مهارت در رشته فرهنگی، هنری" به چه شکل خواهد شد؟اینو متوجه نشدم. بیشتر توضیح بده.

khokhan
پنج شنبه 22 فروردین 1392, 15:52 عصر
سلام
لازم نیست دو تا دکمه بگذاری
تکستها وکمبو هارو با کلید ثبت توی بانک می ریزی وآخر دستورات دیتا گرید رو ریفرش می کنی

شاد

uniqueboy_ara
پنج شنبه 22 فروردین 1392, 16:10 عصر
این که در هر بار ثبت اطلاعات بخوای بری و یه رکورد به جدول دیتابیست اضافه کنی و برگردی گرید رو رفرش کنی به هیچ وجه منطقی نیست ( در عین عملی بودن )
بهترین روش اینه که طبق گفته خودت، اول یکی یکی به گرید اضافه کنی و در نهایت با زدن دگمه "ثبت" در داخل یه Transaction و به وسیله یه حلقه ( ترجیها foreach :لبخندساده: ) روی تمام سطر های دیتا گرید، اونها رو داخل دیتابیس ذخیره کنی :)

khokhan
پنج شنبه 22 فروردین 1392, 16:37 عصر
این که در هر بار ثبت اطلاعات بخوای بری و یه رکورد به جدول دیتابیست اضافه کنی و برگردی گرید رو رفرش کنی به هیچ وجه منطقی نیست ( در عین عملی بودن )
بهترین روش اینه که طبق گفته خودت، اول یکی یکی به گرید اضافه کنی و در نهایت با زدن دگمه "ثبت" در داخل یه Transaction و به وسیله یه حلقه ( ترجیها foreach :لبخندساده: ) روی تمام سطر های دیتا گرید، اونها رو داخل دیتابیس ذخیره کنی :)
اون وقت با هزار ویک ترفند گریدی رو که به بانک وصله بایستی مجبور کنی تا یه سطر جدید رو قبول کنه :لبخند: به !به ! عجب منطقی

uniqueboy_ara
پنج شنبه 22 فروردین 1392, 16:59 عصر
نه!!!
الزاما که نباید گرید رو به جایی بایند کنیم گه بعدش گیر بیفتیم!!!
خواهشا فکر نکنید همه همون طوری به مساله نگاه می کنن که شمام نگاه می کنی!
با تشکر...

khokhan
پنج شنبه 22 فروردین 1392, 17:14 عصر
نه!!!
الزاما که نباید گرید رو به جایی بایند کنیم گه بعدش گیر بیفتیم!!!
خواهشا فکر نکنید همه همون طوری به مساله نگاه می کنن که شمام نگاه می کنی!
با تشکر...

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

واسه همین گفتم وگرنه منو سه نه نه

C#‎_best_Programmer
پنج شنبه 22 فروردین 1392, 17:25 عصر
نه!!!
الزاما که نباید گرید رو به جایی بایند کنیم گه بعدش گیر بیفتیم!!!
خواهشا فکر نکنید همه همون طوری به مساله نگاه می کنن که شمام نگاه می کنی!
با تشکر...
دوست خوب همیشه تو تحلیل یه مسله بدترین حالت و در نظر بگیر لطفا فرض دیتا گرید و پر کردی قبل ثبت برق بره چی میشه؟

uniqueboy_ara
پنج شنبه 22 فروردین 1392, 17:39 عصر
اینجور جاها معمولا تعداد رکورد ثبت شده توی گرید محدوده و اکثر موارد به 5تا هم نمیرسه، در نتیجه میشه به راحتی دوباره اطلاعات رو وارد کرد
ولی فرض کنید یه رکورد استباه تایپی داشته باشه! دوباره باید بری سراغ دیتابیس و رکورد رو پیدا کنی و یا آپدیتش کنی یا پاکش کنی! خودتونم بهتر از من میدونید که ارجاعات پشت سر هم به دیتابیس چقدر سرعت سیستمو پایین میاره :)

C#‎_best_Programmer
پنج شنبه 22 فروردین 1392, 17:50 عصر
اینجور جاها معمولا تعداد رکورد ثبت شده توی گرید محدوده و اکثر موارد به 5تا هم نمیرسه، در نتیجه میشه به راحتی دوباره اطلاعات رو وارد کرد
ولی فرض کنید یه رکورد استباه تایپی داشته باشه! دوباره باید بری سراغ دیتابیس و رکورد رو پیدا کنی و یا آپدیتش کنی یا پاکش کنی! خودتونم بهتر از من میدونید که ارجاعات پشت سر هم به دیتابیس چقدر سرعت سیستمو پایین میاره :)
دادشم فرض کن من اومدم پیشت اطلاعات منو ثبت کردی و بعد من میرم و بعد از من سه چهار نفر دیگه ولی من رفتم دیگه به من دسترسی نداری ازلاعاتم ثبت نشده هنوز یعنی اطلاعات در خطره یه برنامه نویس باید کار کاربرو تضمینن کنه درضمن تو همین روش شمام ممکن اطلا عات اشتباه وارد شه

uniqueboy_ara
پنج شنبه 22 فروردین 1392, 18:10 عصر
1. مطمئنا قبل از خروج شما، کاربر اطلاعات رو سیو می کنه تا سیستم برای نفر بعد آماده بشه
2. اصولا ویرایش اطلاعات داخل گرید ( فقط گرید ) خیلی ساده تر و سریع تر از کار با دیتابیسه :)

C#‎_best_Programmer
پنج شنبه 22 فروردین 1392, 18:14 عصر
دادشم من مطمنن شما که برنامه نویسی باید تضمین کنی که اطلاعات تو بانک ثبت میشه فراموش نکنین امنیت اطلاعات تو درجه ی اوله

veniz2008
پنج شنبه 22 فروردین 1392, 19:05 عصر
سلام
لازم نیست دو تا دکمه بگذاری
تکستها وکمبو هارو با کلید ثبت توی بانک می ریزی وآخر دستورات دیتا گرید رو ریفرش می کنی

این درست که همه چیز سلیقه ای ولی بهترین سلیقه رو میخوایم انتخاب کنیم.
من شخصا با uniqueboy_ara (http://barnamenevis.org/member.php?142181-uniqueboy_ara) موافقم. من چندتا برنامه نیمه حرفه ای و حرفه ای رو که دیدم قبل از ثبت یک پیش نمایش به کاربر نشون میدن. ولی همونطور که دوستمون هم گفتن در چنین حالاتی تعداد رکوردها خیلی زیاد نیست . مزیت این روش اینه که اولا با یک بار وصل شدن به دیتابیس ، چندین رکورد رو درج می کنیم. به نظر من اینکه یک رکورد یک رکورد درج کنیم میشه پروژه دانشجویی یا آموزش کارآموزی که میخواد دستور insert رو یاد بگیره. ثانیا چون پیش نمایشی از رکوردها در گرید موجود هست احتمال بروز اشتباه تایپی و ... کاهش پیدا میکنه و این یعنی دستور update کمتر در ادامه کار. اون دکمه ثبت در واقع کارش "تایید نهایی" میشه.


دوست خوب همیشه تو تحلیل یه مسله بدترین حالت و در نظر بگیر لطفا فرض دیتا گرید و پر کردی قبل ثبت برق بره چی میشه؟
بدترین حالت یعنی اینکه بخوای رکورد رکورد ثبت کنی نه اینکه برق بره. بابا یه کمی هم به فکر اون کاربری باشید که قراره با سیستم شما کار کنه.

دادشم فرض کن من اومدم پیشت اطلاعات منو ثبت کردی و بعد من میرم و بعد از من سه چهار نفر دیگه ولی من رفتم دیگه به من دسترسی نداری ازلاعاتم ثبت نشده هنوز یعنی اطلاعات در خطره یه برنامه نویس باید کار کاربرو تضمینن کنه درضمن تو همین روش شمام ممکن اطلا عات اشتباه وارد شه
شما که لفظی به من اطلاعات نمیدی؟ یه پرونده ای داری یه تلفنی داری یه آدرسی داری. ناکجاآباد که نیستی که نشه بهت دسترسی داشت. شما فرض هایی رو در نظر میگیری که اگر با هم AND شون کنی تقریبا محاله True بشه.