PDA

View Full Version : ساختن جدول برای هر نفر در C#



hesam_dj10
یک شنبه 03 خرداد 1394, 07:10 صبح
سلام من میخام برای هر کاربر یک جدول بسازم
در ضمن میخام که فیلدهای جول رو هم خود کاربر وارد کنه
درواقه میخام لیست بسازم
به این صوررت که کاربر اسم لیست رو وارد میکنه و ایتم های لیست رو هم وارد میکنه بعد یه جدول بر اساس اطلاعات داده شده ساخته میشه
حالا میخام که کاربر خودش اطلاعات رو توی جدولی که ساخته وارد کنه ....
اگه میشه یه راهکار بفرمایید

Javad_raouf
یک شنبه 03 خرداد 1394, 13:15 عصر
سلام شما نیاز داری یک کوئری شبیه به این رو Execute کنی:
CREATE TABLE tblUser
(
ID int NOT NULL,
Name nvarchar(50) NOT NULL,
Family nvarchar(50) NOT NULL
)
نسبت به اینکه برنامت چطوریه باید از روی ورودی های کاربر کوئری بالا رو بسازی
حالا باید نسبت به جدولی که ساختی فرم Insert,Update,Select مربوط به جدول رو به صورت پویا بسازی

کلا همش برنامه نویسیه راهکار همینه هنر انجامشه

hesam_dj10
دوشنبه 04 خرداد 1394, 07:11 صبح
ممنون
خب مثلا کاربر خاست که جدولی که میسازه 5 تا ستون داشته باشه
یکی میخاد 10 تا ستون داشته باشه
اینو چکار کنم---در ضمن کاربر اسم فیلد ها رو فارسی میزنه چه جوری انگلیسیش کنم ..... چجوری بعدا بفهمم که کاربر کدوم جدولو ساخته که بهش نشون بدم --چجوری بفهمم که کاربر چه اسمی برای فیلدها انتخاب کرد و یا چه اسمی برای جدولش انتخاب کرده که بعدا select بزنم و ..................

sajaaaaad
دوشنبه 04 خرداد 1394, 08:01 صبح
خب نوع داده هاش چی..؟ نوعشون رو چطور میخوای مشخص کنی مگه اینکه همه رو string بگیری، بعد کلید اصلی چی باشه؟؟؟ مگه ترکیبی از چند ستون رو بگیری!!! دنگ و فنگش خیلیه.!!! بنظر من تمام ستون ها رو از کار بر دریافت کن و بذار توی یک آرایه یا لیست. بعد یک حلقه for بذار و رشته ی کئوریت رو درست کن اینجوری، خودت درستش کن دیگه من کلی میگم.


string str
foreach item in listCulumName
str + = item + "nvarchar(50) not null,"

البته باید یه چیز دیگرو هم در نظر داشته باشی که اگرآیتم اول بود مثلا primary key هم بذاره و اگر آیتم آخر بود سی می کالن نذاره.!!! میگم یکمی دنگ و فنگ داره ولی فک کنم بشه.!!
بعدشم کئوری اصلیتو بساز دیگه.!


string command = "Create Table " + txtnameTable + "(" + str + ");

sajaaaaad
دوشنبه 04 خرداد 1394, 08:03 صبح
حالا اگر نتونستی بازم یکم دقیق تر بگو چیو از کاربر دریافت میکنی تا برات تست کنم ببینم میشه یا نه. موفق باشی

Mahmoud Zaad
دوشنبه 04 خرداد 1394, 08:51 صبح
سلام من میخام برای هر کاربر یک جدول بسازم
در ضمن میخام که فیلدهای جول رو هم خود کاربر وارد کنه
درواقه میخام لیست بسازم
به این صوررت که کاربر اسم لیست رو وارد میکنه و ایتم های لیست رو هم وارد میکنه بعد یه جدول بر اساس اطلاعات داده شده ساخته میشه
حالا میخام که کاربر خودش اطلاعات رو توی جدولی که ساخته وارد کنه ....
اگه میشه یه راهکار بفرمایید
سلام
شما دقیقاً بفرمایید می خوایید چکار بکنید، یعنی اینکار برای چه نوع نرم افزاری هست، شاید راه بهتری باشه.

Javad_raouf
دوشنبه 04 خرداد 1394, 08:52 صبح
ممنون
خب مثلا کاربر خاست که جدولی که میسازه 5 تا ستون داشته باشه
یکی میخاد 10 تا ستون داشته باشه
اینو چکار کنم---در ضمن کاربر اسم فیلد ها رو فارسی میزنه چه جوری انگلیسیش کنم ..... چجوری بعدا بفهمم که کاربر کدوم جدولو ساخته که بهش نشون بدم --چجوری بفهمم که کاربر چه اسمی برای فیلدها انتخاب کرد و یا چه اسمی برای جدولش انتخاب کرده که بعدا select بزنم و ..................
همه اینا که میگی درسته داداش ولی اونقدری که فکر می کنی سخت نیست
اما فکر نمی کنم اینجا کسی برات بشینه اینا رو کامل بنویسه
شما باید خودت زحمت بکشی، فکر کنی، تحلیل کنی، شروع کنی به کار بعد اگر مشکلی داشتی اینجا بپرسی

hesam_dj10
دوشنبه 04 خرداد 1394, 09:25 صبح
خب نوع داده هاش چی..؟ نوعشون رو چطور میخوای مشخص کنی مگه اینکه همه رو string بگیری، بعد کلید اصلی چی باشه؟؟؟ مگه ترکیبی از چند ستون رو بگیری!!! دنگ و فنگش خیلیه.!!! بنظر من تمام ستون ها رو از کار بر دریافت کن و بذار توی یک آرایه یا لیست. بعد یک حلقه for بذار و رشته ی کئوریت رو درست کن اینجوری، خودت درستش کن دیگه من کلی میگم.


string str
foreach item in listCulumName
str + = item + "nvarchar(50) not null,"

البته باید یه چیز دیگرو هم در نظر داشته باشی که اگرآیتم اول بود مثلا primary key هم بذاره و اگر آیتم آخر بود سی می کالن نذاره.!!! میگم یکمی دنگ و فنگ داره ولی فک کنم بشه.!!
بعدشم کئوری اصلیتو بساز دیگه.!


string command = "Create Table " + txtnameTable + "(" + str + ");


ناچارا همشونو n var char میزارم
خودم یه id به هموشون میده که همون کلید اصلی باشه
ساختن جدولشو میتونم یه کاریش بکنم ولی دوتا مسئله هست
کاربر که نباید اسم ستون هاشو انگلیسی بده..باید خودم انگلیسیشون کنم
و اینکه از کجا بفهمم کدوم کاربر کدوم جدولو ساخته....

hesam_dj10
دوشنبه 04 خرداد 1394, 09:27 صبح
سلام
شما دقیقاً بفرمایید می خوایید چکار بکنید، یعنی اینکار برای چه نوع نرم افزاری هست، شاید راه بهتری باشه.
خب با C# و sql دیگه...
یه کاربر خودش برای خودش جدول میسازه
یعنی اسم جدولو میده و نام ستون هاشم میده بعد توی اون جدول هر اطلاعاتی که بخاد میزاره

hesam_dj10
دوشنبه 04 خرداد 1394, 09:30 صبح
همه اینا که میگی درسته داداش ولی اونقدری که فکر می کنی سخت نیست
اما فکر نمی کنم اینجا کسی برات بشینه اینا رو کامل بنویسه
شما باید خودت زحمت بکشی، فکر کنی، تحلیل کنی، شروع کنی به کار بعد اگر مشکلی داشتی اینجا بپرسی
نه عزیز من که نمیخام کسی برام بنویسه
فقط گفتم چون شما ماهر تر هستید یه کانسبت بهم بدین که بفهمم چکار باید بکنم
توی مسائل که گفتم مشکل دارم.

hesam_dj10
دوشنبه 04 خرداد 1394, 09:32 صبح
حالا اگر نتونستی بازم یکم دقیق تر بگو چیو از کاربر دریافت میکنی تا برات تست کنم ببینم میشه یا نه. موفق باشی
ممنونم ولی من راضی نیستم که شما بخاطر من تو زحمت بیوفتید
راهکارو بدید خودم راه حلشو پیدا میکنم
ممنون از لطفتون

Javad_raouf
دوشنبه 04 خرداد 1394, 10:14 صبح
من نظر تئوریم رو میدم بعد شما هر جور مایلید انجام بدید:
اولا گرفتن همه فیلد ها از نوع Nvarchar غلطه باید نوع فیلد و طول فیلد رو هم از کاربر بگیری
درواقع کاری ما می کنی اینه که باید فرمت رو جوری طراحی کنی که کاربر بتونه نام ستون های مورد نظرش رو وارد کنه، نوعش رو وارد کنه، طولش رو وارد کنه، Nullabe بودن یا نبودنش رو مشخص کنه و....
مثلا با استفاده از دیتاگریدویو:
http://barnamenevis.org/attachment.php?attachmentid=131619&d=1432533845
اینجوری دیگه محدودیتی توی تعداد، نوع، طول و... نداری
برای ساحت جدول هم باید این دیتاگریدویو رو تحلیل کنی و کوئری نهایی رو از روی این بسازی
ضمنا برای نام ستون های جدول می تونی از نام های فارسی استفاده کنی و نیازی نیست حتما انگلیسی باشه
وقتی جدول رو ساختی دیگه ورودی های کاربر رو بیخیال بلکه همه کارای بعدی رو باید از روی Table دیتابیس انجام بدی
منظورم اینه که برای Insert,Delete,Update باید یک فرم پویا بسازی که از روی اطلاعات دیتابیس خودشو تکمیل کنه

Mahmoud Zaad
دوشنبه 04 خرداد 1394, 11:54 صبح
خب با C#‎ و sql دیگه...
یه کاربر خودش برای خودش جدول میسازه
یعنی اسم جدولو میده و نام ستون هاشم میده بعد توی اون جدول هر اطلاعاتی که بخاد میزاره
:لبخندساده: منظورم اینه که شما چه برنامه ای دارید می نویسید که نیازه کاربر برای خودش جدول بسازه و ...

hesam_dj10
دوشنبه 04 خرداد 1394, 12:54 عصر
من نظر تئوریم رو میدم بعد شما هر جور مایلید انجام بدید:
اولا گرفتن همه فیلد ها از نوع Nvarchar غلطه باید نوع فیلد و طول فیلد رو هم از کاربر بگیری
درواقع کاری ما می کنی اینه که باید فرمت رو جوری طراحی کنی که کاربر بتونه نام ستون های مورد نظرش رو وارد کنه، نوعش رو وارد کنه، طولش رو وارد کنه، Nullabe بودن یا نبودنش رو مشخص کنه و....
مثلا با استفاده از دیتاگریدویو:
http://barnamenevis.org/attachment.php?attachmentid=131619&d=1432533845
اینجوری دیگه محدودیتی توی تعداد، نوع، طول و... نداری
برای ساحت جدول هم باید این دیتاگریدویو رو تحلیل کنی و کوئری نهایی رو از روی این بسازی
ضمنا برای نام ستون های جدول می تونی از نام های فارسی استفاده کنی و نیازی نیست حتما انگلیسی باشه
وقتی جدول رو ساختی دیگه ورودی های کاربر رو بیخیال بلکه همه کارای بعدی رو باید از روی Table دیتابیس انجام بدی
منظورم اینه که برای Insert,Delete,Update باید یک فرم پویا بسازی که از روی اطلاعات دیتابیس خودشو تکمیل کنه
منطقیه ...
ولی خب کاربر که این اطلاعات رو نداره که...
اون از کجا می دون کلید اصلی اصلا چی هست ...
یا نال بودن برای چیه ..
و .....
برای کلید اصلی یه کاری میکنم اونم این که کاربر هر جدولی که ساخت خودم یه id از نوع int بهش میدم

sajaaaaad
دوشنبه 04 خرداد 1394, 14:02 عصر
البته کلید هم نمیخواد ها، تو که داری برای هر کس یک جدول درست میکنی، کلیدش چیه دیگه.!!! تمام ستوناتو بکن کلید، که فقط کاربر نتونه تمام اطلاعات را عیناً دوبار ثبت کنه.! تنها مشکل تبدیل اسم از فارسی به لاتینه.! یه دستور واسه اون پیدا کنی حله.! یا اینکه نمیدونم باید بازم فک کنی! مثلا میگم ستوناتو با ید نوشته خاص نامگذاری کنی، AB1.... AB2... AB3 بعد یک جا داشته باشی که معلوم بشه هر کدوم منظور چ ستونیه! اسمشو در بیاری موقع نمایش اصلاحشون کنی :متفکر::لبخند: برای هر کاربر باید دو تا جدول درست کنی.! فک کنم مشکلت حل میشه :لبخند:

Javad_raouf
دوشنبه 04 خرداد 1394, 14:50 عصر
نطقیه ...
ولی خب کاربر که این اطلاعات رو نداره که...
اون از کجا می دون کلید اصلی اصلا چی هست ...
یا نال بودن برای چیه ..
و .....
برای کلید اصلی یه کاری میکنم اونم این که کاربر هر جدولی که ساخت خودم یه id از نوع int بهش میدم

کلید اصلی که حق با شماست و راهکار همونیه که خودت گفتی
برای نال هم به جای نال بزار "ورود اجباری" :لبخندساده: اگر بازم فکر می کنی نمی فهمه یک ToolTipی چیزی براش بزار و یک متن کوچیک آموزشی بنویس:چشمک:


البته کلید هم نمیخواد ها، تو که داری برای هر کس یک جدول درست میکنی، کلیدش چیه دیگه.!!! تمام ستوناتو بکن کلید، که فقط کاربر نتونه تمام اطلاعات را عیناً دوبار ثبت کنه.! تنها مشکل تبدیل اسم از فارسی به لاتینه.! یه دستور واسه اون پیدا کنی حله.! یا اینکه نمیدونم باید بازم فک کنی! مثلا میگم ستوناتو با ید نوشته خاص نامگذاری کنی، AB1.... AB2... AB3 بعد یک جا داشته باشی که معلوم بشه هر کدوم منظور چ ستونیه! اسمشو در بیاری موقع نمایش اصلاحشون کنی
:متفکر::لبخند:
برای هر کاربر باید دو تا جدول درست کنی.! فک کنم مشکلت حل میشه
:لبخند:
کلید که به درد می خوره داداش برای Update و Delete و...
نام ستون ها یا حتی جداول رو هم عرض کردم میشه فارسی گذاشت توی SQL

hesam_dj10
سه شنبه 05 خرداد 1394, 06:53 صبح
تقریبا فهمیدم که باید چه کنم ...فقط تنها مشکل اینه که از کجا بفهمم که کدوم جدولو کی ساخته؟؟؟؟

Javad_raouf
سه شنبه 05 خرداد 1394, 07:22 صبح
تقریبا فهمیدم که باید چه کنم ...فقط تنها مشکل اینه که از کجا بفهمم که کدوم جدولو کی ساخته؟؟؟؟

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