PDA

View Full Version : سوال: دریافت تاریخ تولد از mysql



reza69
شنبه 02 دی 1391, 22:39 عصر
سلام
وقتی من اطلاعاتی که در mysql ثبت کردم رو میخوام روی فرم نمایش بدم تاریخ تولد رو همراه با ساعت نمایش میده دلیل چیه؟ من نوع فیلد mysql رو date انتخاب کردم و موقعی هم که اطلاعات رو ثبت میکنم فقط تاریخ رو ثبت میکنم ولی موقع بازیابی رکورد ، تاریخ رو با ساعت نمایش میده. چه کار باید بکنم که ساعت ثبت نشه؟
97105

kenman
یک شنبه 03 دی 1391, 00:31 صبح
داداش سورستو بزار ببینم مشکلش چیه

reza69
یک شنبه 03 دی 1391, 15:20 عصر
داداش سورستو بزار ببینم مشکلش چیه
سورسم مشکل نداره مشکل همونی بود که گفتم.
اینم سورس

private void btnsearch_Click(object sender, EventArgs e)
{
string myconstring = "server=localhost;database=regdata;uid=root;passwor d=123;";
MySqlConnection connection = new MySqlConnection(myconstring);
MySqlCommand cmd;
connection.Open();
cmd = connection.CreateCommand();
try
{
cmd.CommandText = "select name from regtable where regcode=" + txtsearch.Text;
txtname.Text = cmd.ExecuteScalar().ToString();
cmd.CommandText = "select family from regtable where regcode=" + txtsearch.Text;
txtfamily.Text = cmd.ExecuteScalar().ToString();
cmd.CommandText = "select regcode from regtable where regcode=" + txtsearch.Text;
txtregcode.Text = cmd.ExecuteScalar().ToString();
cmd.CommandText = "select birthday from regtable where regcode=" + txtsearch.Text;
txtbirthday.Text = cmd.ExecuteScalar().ToString();
cmd.CommandText = "select location from regtable where regcode=" + txtsearch.Text;
txtlocation.Text = cmd.ExecuteScalar().ToString();
cmd.ExecuteNonQuery();
}
catch (Exception msg)
{
MessageBox.Show(msg.Message, "Error");
}

connection.Close();
}

ordebehesht
یک شنبه 03 دی 1391, 16:02 عصر
datetime borndata=new datetime(textbox.text);
textbox.text=borndata.toshortdate().tostring();


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

در ضمن اگه روی تاریخ و زمان در کل روی فیلهایی که عدد میگیرن محاسبات ریاضی انجام نمیدین بهتره تو جدول nvarchar بکیرین و تو برنامه string

reza69
یک شنبه 03 دی 1391, 16:21 عصر
datetime borndata=new datetime(textbox.text);
textbox.text=borndata.toshortdate().tostring();

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

یعنی میگین نوع ستون تاریخ تولد رو از نوع nvarchar بزارم؟ اینم میشه ولی نمیدونم کار درستی باشه یا نه.
نظر خودم اینکه بعد از بازیابی از جدول یجوری ساعت رو حذف کنیم و تو تکست باکس نمایش بدیم.
وقتی میخوام با ساعت تو جدول ذخیره کنم ارور میده.ولی خودش موقع ذخیره تو جدول مقدار ساعت رو اضافه میکنه در حالی که من ساعت رو وارد نکردم ، نمیدونم چرا اینجوری میشه؟

ordebehesht
یک شنبه 03 دی 1391, 16:29 عصر
ببین اگه میخوای تو جدول فقط تاریخ ذخیره بشه فرمت فیلد رو از نوه data‌بگیر احتمالا datetime گرفتی که جفتشو نشون میده اما کد بالا ساعت رو حذف میکنه فقط تاریخ میمونه

reza69
یک شنبه 03 دی 1391, 16:50 عصر
ببین اگه میخوای تو جدول فقط تاریخ ذخیره بشه فرمت فیلد رو از نوه data‌بگیر احتمالا datetime گرفتی که جفتشو نشون میده اما کد بالا ساعت رو حذف میکنه فقط تاریخ میمونه
نه فیلش رو از نوع date گرفتم.
کد بالا هم مشکل داره .
یه کد از یه سایت گرفتم ببین بدرد میخوره؟ برای ورود داده هست نه بازیابی.

string dt2;
dt2 = txtbirthday.Text;
DateTime date2 = DateTime.Now;
dt2 = date2.ToShortDateString();
cmd.Parameters.AddWithValue("@birthday", txtbirthday.Text).Value = dt2;

ordebehesht
یک شنبه 03 دی 1391, 16:57 عصر
نه فیلش رو از نوع date گرفتم.
کد بالا هم مشکل داره .
یه کد از یه سایت گرفتم ببین بدرد میخوره؟ برای ورود داده هست نه بازیابی.

string dt2;
dt2 = txtbirthday.Text;
DateTime date2 = DateTime.Now;
dt2 = date2.ToShortDateString();
cmd.Parameters.AddWithValue("@birthday", txtbirthday.Text).Value = dt2;



من کدو ذهنی نوشتم گفتم کت=ار داره روش کمی تغییر ایجاد کنی به نتیجه میرسی کجاش مشکل داره

این کد مشکلی نداره ولی تاریخ ورودی رو الان میگیره نه چیزی که تو میخوای بینم روش محاسبات انجام میدی یا نه؟

reza69
یک شنبه 03 دی 1391, 17:47 عصر
نه محاسبات انجام نمی دم.

ordebehesht
یک شنبه 03 دی 1391, 18:39 عصر
پس nvarchar بگیر راحت شو

reza69
یک شنبه 03 دی 1391, 22:41 عصر
پس nvarchar بگیر راحت شو
میدونم اگه nvarchar بگیرم کارم راه می افته ولی میخوام ببینم این راه که انتخاب کردم و متداول تره چجوری انجام بدم.
چنتا نظر دارم برای این مورد.
یکی اینکه مقداری که از دیتابیس میگیرم داخل یه متغیر string وارد کنم که مقدارش محدود باشه یعنی فقط 10 تا کاراکتر بگیره.
یه قطعه کد هم پیدا کردم به نظر میاد کارم رو انجام بده ولی نمیدونم چجوری باید ازش استفاده کنم .
این کده:

cmd.CommandText = "select GET_FORMAT(DATE,'USA') from regtable where regcode=" + txtsearch.Text;

که نتیجش اینجوری میشه
97152

ordebehesht
دوشنبه 04 دی 1391, 01:19 صبح
یه سول ممکنه تو جدولت نگاه کتی ببینی تاریخ به چه صورت ذخیره شده چون هنگام پرسوجو و نمایش اصولا کاری رو مقادیر انجام نمیگیره

reza69
دوشنبه 04 دی 1391, 13:29 عصر
داخل جدول ساعت ذخیره نشده پس نتیجه میگیریم اون ساعت رو c# به مقدار تاریخ اضافه میکنه.
97169

ordebehesht
دوشنبه 04 دی 1391, 13:47 عصر
دیگه ذهنم به جایی قد نمییده فقط یه راه اینکه تو خود C#‎ تاریخ رو ره به datetime تبدیل کنی بهد تو تکسباکست کاری کنی که تاریخ نمایش داده بشه خیلی گشتم هیچ نبود بازم میگردم ایشالله که پیدا میکنم

reza69
سه شنبه 05 دی 1391, 00:30 صبح
آخر سر جواب رو پیدا کردم

string date;
txtbirthday.Text =cmd.ExecuteScalar().ToString();
date = txtbirthday.Text;
txtbirthday.Text = date.Remove(10);

تابع بالا 10 تا از مقدار رشته رو نمایش میده و بقیه رو حذف میکنه:تشویق::لبخند:

ordebehesht
سه شنبه 05 دی 1391, 02:21 صبح
آفرین دیدی ببین برنامه نویسی قانون خاصی نداره برنامه نویسی یعنی خلاقیت تو مشکل شما وقتی که داده میومد تو تکست مینشست شما دیگه آزاد بودی هر کار کنی روش موفق باشی من بازم در خدمتم اگه کاری از دست بر بیاد

reza69
سه شنبه 05 دی 1391, 10:39 صبح
آفرین دیدی ببین برنامه نویسی قانون خاصی نداره برنامه نویسی یعنی خلاقیت تو مشکل شما وقتی که داده میومد تو تکست مینشست شما دیگه آزاد بودی هر کار کنی روش موفق باشی من بازم در خدمتم اگه کاری از دست بر بیاد
دستت درد نکنه از کمکاتون خیلی خیلی ممنونم