PDA

View Full Version : سوال: ذخیره Radio Button در دیتابیس اس کیو ال اکسپرس



booysusa
چهارشنبه 15 اسفند 1397, 18:49 عصر
با درود خدمت همه دوستان و مهندسین عزیز

میخوام Radio Button ذخیره کنم در دیتابیس ولی شیوه ذخیره اون رو نمیدونم
لطفا راهنمایی کنید

تو انجمن گشتم دیدم تو یه پستی در موردش صحبت شده بود ولی متوجه نشدم
لینکش (http://barnamenevis.org/showthread.php?280115-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%DB%8C%DA%A9-Radio-Button-%D9%88-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%A2%D9%86-%D8%AF%D8%B1-%D8%A8%D8%A7%D9%86%DA%A9)


میخوام در برنامه جنیست رو از طریق یکی از دو گزینه مرد یا زن انتخاب کنم
http://s8.picofile.com/file/8354275150/024.PNG


و سوال دومم، اینجا در دیتابیس، نوع داده رو چی انتخاب کنم؟
http://s9.picofile.com/file/8354275318/025.png



مشخصات:
ویژال استودیو
سی شارپ
اس کیو ال اکسپرس

Mahmoud Zaad
چهارشنبه 15 اسفند 1397, 19:01 عصر
سلام
نوع داده در دیتابیس bit هست چون دو حالت داریم یا زن یا مرد.(اگه ترو بود مرد و اگه فالس بود زن)
ذخیره در ADO:
if(mard.Checked)
cmd.Parameters.AddWithValue("@nameField", true);
else//if(zan.Checked)
cmd.Parameters.AddWithValue("@nameField", false);
موقع دریافت از دیتابیس هم اگه مقدار فیلد داخل دیتابیس ترو بود یعنی مرد و اگه فالس بود یعنی زن. (یعنی اگه ترو بود رادیو باتن اولی رو انتخاب می کنی و اگه فالس بود رادیو باتن دومی)
if(Convert.ToBoolean(dt.Rows[0]["nameField"]))
mard.Checked=true;
else
zan.Checked=true;

booysusa
چهارشنبه 15 اسفند 1397, 19:48 عصر
سلام
نوع داده در دیتابیس bit هست چون دو حالت داریم یا زن یا مرد.(اگه ترو بود مرد و اگه فالس بود زن)
ذخیره در ADO:
if(mard.Checked)
cmd.Parameters.AddWithValue("@nameField", true);
else//if(zan.Checked)
cmd.Parameters.AddWithValue("@nameField", false);
موقع دریافت از دیتابیس هم اگه مقدار فیلد داخل دیتابیس ترو بود یعنی مرد و اگه فالس بود یعنی زن. (یعنی اگه ترو بود چک باکس اولی رو انتخاب می کنی و اگه فالس بود چک باکس دومی)
if(Convert.ToBoolean(dt.Rows[0]["nameField"]))
mard.Checked=true;
else
zan.Checked=true;


سپاسگزارم
به نحوی که شما گفتید ساختمش
http://s9.picofile.com/file/8354281884/026.PNG




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

پایگاه داده من اس کیو ال اکسپرس هست

Mahmoud Zaad
چهارشنبه 15 اسفند 1397, 20:43 عصر
چک باکس هم به همین روش میشه. یعنی برای هر چک باکس یه فیلد در دیتابیس داریم و اگر چک باکس تیک داشت true ذخیره میشه و اگر نداشت false ذخیره می شه. در موقع دریافت اطلاعات هم اگر مقدار در دیتابیس true بود چک باکس رو تیک می زنید و اگر false بود بدون تیک می مونه.(یا تیکش رو بر می دارید.)

البته برای انتخاب نوع داده هیچ اجباری هم در کار نیست شما می تونید نوع داده ای رو varchar یا nvarchar یا int یا smallint هم انتخاب کنید و اگر چک باکس/رادیو باتن تیک داشت عدد 1 رو ذخیره کنید و اگه تیک نداشت 0 رو ذخیره کنید. ولی نوع داده ای استاندارد برای این کارها همین bit هست.
-------
کمبوباکس بستگی داره که اطلاعاتش از کجا میاد. شما همیشه باید به این فکر کنید که تا جایی که ممکنه کمترین حجم داده رو ذخیره کنید و اگر لازم بود داده ای رو به هر دلیلی (مثلا اشتباه تایپی) تغییر بدید، با کمترین هزینه این کار رو انجام بدید. (منظور هزینه مالی نیست منظور کمترین دردسر و کدنویسی و زمان و ... هست)
مثلا فرض کنید شما همین مرد یا زن بودن رو میخواید از کمبوباکس بگیرید. 2 راه وجود داره یا اینکه یه فیلد nvarchar در دیتابیس تعریف کنید و اگر کاربر مرد رو انتخاب کنید کلمه مرد رو ذخیره کنید و اگه زن رو انتخاب کرد کلمه زن رو ذخیره کنید. حالا مثلا فرض کنید نرم افزار در حال استفاده است و شما متوجه می شید مرد رو "مرذ" نوشتید. حالا باید برید در دیتابیس کل کلمات رو پیدا کنید و تغییر بدید.
اما راه دوم و صحیح، استفاده از فیلد از نوع bit هست. حالا اگه اشتباه تایپی هم در نرم افزار باشه به راحتی فقط نرم افزار رو تغییر می دید و مشکل حل میشه.

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

booysusa
پنج شنبه 16 اسفند 1397, 08:37 صبح
چک باکس هم به همین روش میشه. یعنی برای هر چک باکس یه فیلد در دیتابیس داریم و اگر چک باکس تیک داشت true ذخیره میشه و اگر نداشت false ذخیره می شه. در موقع دریافت اطلاعات هم اگر مقدار در دیتابیس true بود چک باکس رو تیک می زنید و اگر false بود بدون تیک می مونه.(یا تیکش رو بر می دارید.)

البته برای انتخاب نوع داده هیچ اجباری هم در کار نیست شما می تونید نوع داده ای رو varchar یا nvarchar یا int یا smallint هم انتخاب کنید و اگر چک باکس/رادیو باتن تیک داشت عدد 1 رو ذخیره کنید و اگه تیک نداشت 0 رو ذخیره کنید. ولی نوع داده ای استاندارد برای این کارها همین bit هست.
-------
کمبوباکس بستگی داره که اطلاعاتش از کجا میاد. شما همیشه باید به این فکر کنید که تا جایی که ممکنه کمترین حجم داده رو ذخیره کنید و اگر لازم بود داده ای رو به هر دلیلی (مثلا اشتباه تایپی) تغییر بدید، با کمترین هزینه این کار رو انجام بدید. (منظور هزینه مالی نیست منظور کمترین دردسر و کدنویسی و زمان و ... هست)
مثلا فرض کنید شما همین مرد یا زن بودن رو میخواید از کمبوباکس بگیرید. 2 راه وجود داره یا اینکه یه فیلد nvarchar در دیتابیس تعریف کنید و اگر کاربر مرد رو انتخاب کنید کلمه مرد رو ذخیره کنید و اگه زن رو انتخاب کرد کلمه زن رو ذخیره کنید. حالا مثلا فرض کنید نرم افزار در حال استفاده است و شما متوجه می شید مرد رو "مرذ" نوشتید. حالا باید برید در دیتابیس کل کلمات رو پیدا کنید و تغییر بدید.
اما راه دوم و صحیح، استفاده از فیلد از نوع bit هست. حالا اگه اشتباه تایپی هم در نرم افزار باشه به راحتی فقط نرم افزار رو تغییر می دید و مشکل حل میشه.

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


بی نهایت سپاسگزارم
بله نگرانی هزینه بردار بودن در آینده رو هم داشتم