PDA

View Full Version : سوال: افزودن قابلیت تعریف فیلد توسط کاربرها به نرم افزار ورود اطلاعات (ایجاد فرم ورود اطلاعات پویا)



rahmatipoor
یک شنبه 15 بهمن 1396, 12:42 عصر
با عرض سلام خدمت همه دوستان و اساتید عزیز

یک نرم افزار ورود اطلاعات داریم که تا حالا یک سری فیلد ثابت داشته که کاربرها استفاده می کردن.

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

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

به صورت کلی میخواهیم یک نرم افزار فرم ساز پویا ایجاد کنیم.


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

در صورت امکان روشهای ممکن جهت انجام کار و بهترین روش پیاده سازی :قلب:

rahmatipoor
یک شنبه 15 بهمن 1396, 13:01 عصر
یک از راههایی که به ذهن میرسه این هست اینه که یک سری فیلد ثابت اضافی در نظر بگیریم که کاربرها بتونن تغییر نام بدن و اگه نیاز ندارن پنهان بشه که این روش هم کامل نیست.

اگه بشه خود کاربرها هر چی نیاز دارند رو تعریف کنند واقعا عالی میشه

مهرداد صفا
یک شنبه 15 بهمن 1396, 20:21 عصر
یک از راههایی که به ذهن میرسه این هست اینه که یک سری فیلد ثابت اضافی در نظر بگیریم که کاربرها بتونن تغییر نام بدن و اگه نیاز ندارن پنهان بشه که این روش هم کامل نیست.

اگه بشه خود کاربرها هر چی نیاز دارند رو تعریف کنند واقعا عالی میشه

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

string sql=string.Format(
"ALTER TABLE myTable ADD {0} {1}",
FieldNameTextbox.Text, FieldTypeCombo.SelectedItem);



البته فراموش نکنید که باید برای جلوگیری از injection و تزریق کدهای مخرب هم تدابیری رو در نظر بگیرید.
روش های قوی تر و پیچیده تری هم البته وجود داره. مثلا می تونید یک جدول برای فرم ها داشته باشید، یک جدول برای فیلد ها و یک جدول کلی برای مقادیر.


table forms:
FormID INT IDENTITY, FormName VarChar(50);

table fields:
FieldID int identity, FormID int, FieldName VarChar(20)....

table values:
int ValueID int identity, FieldID int, Value NVarChar(max));

Mahmoud Zaad
یک شنبه 15 بهمن 1396, 20:47 عصر
سلام
در این لینک (http://barnamenevis.org/showthread.php?502915-%D8%A8%D8%B1%D9%88%D8%B2%D8%B1%D8%B3%D8%A7%D9%86%D B%8C-%D9%81%D8%B1%D9%85%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D8%B1-%DB%8C%DA%A9%DB%8C-%D8%A7%D8%B2-%D9%81%D8%B1%D9%85%D9%87%D8%A7&p=2245864&viewfull=1#post2245864) یه نمونه هست ببینید شاید به درد خورد. این پست (http://barnamenevis.org/showthread.php?264879-%DA%AF%D9%81%D8%AA%DA%AF%D9%88%DB%8C-%D9%81%D9%86%DB%8C-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-Database-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%85%D8%A7%D9%84%DB%8C&p=1276434&viewfull=1#post1276434) هم ببینید تصویرش گویا هست.(گوشه پایین سمت چپ)