PDA

View Full Version : سوال: ثبت تعداد روز در دیتابیس



behnam3000
سه شنبه 20 مرداد 1394, 19:23 عصر
private void button2_Click(object sender, EventArgs e)
{
// -- LINQ از طریق
var db = new DataClasses1DataContext();
var qdate = from sabtmotor in db.sabtmotors // آدرس وصل شدن به دیتابیس
select sabtmotor.تاریخ_ورود; // Select کردن فیلد
DateTime tarikhv = new DateTime();
tarikhv = Convert.ToDateTime(qdate);

var qdatek = from sabtmotor in db.sabtmotors
select sabtmotor.تاریخ_خروج;
DateTime tarikhk = new DateTime();
tarikhk = Convert.ToDateTime(qdatek);
int moh = Convert.ToInt32(tarikhk - tarikhv);
sabtmotor t = new sabtmotor()
{
تعدادروز = moh // ثبت تعداد روز در دیتابیس
};
}



134163

اگه میشه مشکل کد رو بهم بگین ...در اصل میخوام دو تا تاریخ رو از هم دیگر کم کنم و به فیلد تعدادروز در دیتابیس بریزه:متفکر:
( باتون تعریف شده واسه محاسبات : button2_Click که در یک فرم ساخته شده )

davidrobert
سه شنبه 20 مرداد 1394, 19:40 عصر
مشکل کدتون نیست مشکل از پایه هستش
شما اول چرا دیتابیس رو فارسی ساختید این مشکل اول
مشکل دوم چرا بین عنوان ها فاصله قرار دادید این معلومه که برنامه تون کار نیمکنه
اول عنوان ها رو انگلیسی کن در اسکیول سرور دوم به هیچ عنوان تو عنوان فیلد فاصله قرار ندید باعث میشه دیتابیستون اطلاعات ذخیره و امسل این که ارتباط با دیتابیس هستش کار نکنه

behnam3000
سه شنبه 20 مرداد 1394, 21:30 عصر
تصحیح کردم میشه کمک کنید
private void button2_Click(object sender, EventArgs e)
{
// -- LINQ از طریق
var db = new DataClasses1DataContext();
var qdate = from sabtmotor in db.sabts // آدرس وصل شدن به دیتابیس
select sabtmotor.enterdate; // Select کردن فیلد
DateTime tarikhv = new DateTime();
tarikhv = Convert.ToDateTime(qdate);

var qdatek = from sabtmotor in db.sabts
select sabtmotor.enddate;
DateTime tarikhk = new DateTime();
tarikhk = Convert.ToDateTime(qdatek);
int moh = Convert.ToInt32(tarikhk - tarikhv);
sabt t = new sabt()
{
totalday = moh // ثبت تعداد روز در دیتابیس
};
}





134168



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

134169

saied_hacker
سه شنبه 20 مرداد 1394, 22:41 عصر
دقیقا نمی دونم اما شما چرا تاریخ ورود رو به صورت nvarchar گذاشتید بزارید datetime

محاسبه اختلاف 2 تاریخ
(datetime1 - datetime2).TotalDays

Mahmoud.Afrad
چهارشنبه 21 مرداد 1394, 02:42 صبح
- مشخص کن تاریخ رو به صورت شمسی ذخیره میکنی یا نه؟

- وقتی تاریخ شروع و پایان رو داری به هیچ وجه نیازی به totalday نداری(ستون totalday رو حذف کن). (فیلدهای محاسباتی را میتوان در زمان مورد نیاز محاسبه کرد)
- کوئری هایی که برای استخراج تاریخ نوشتید بدون هیچگونه شرطی هستند، این یعنی لیستی از داده ها رو بدست میاورند(همه رکوردها رو استخراج میکنه نه یک رشته خاص). پس نمیتونید به عنوان آرگومان متد ToDateTime در نظر بگیرید. (علت خطا هم همینه)
- اگر تاریخ ها شمسی هستند نمیتونید مستقیما از متد ToDateTime استفاده کنید چون این متد تاریخ های میلادی رو قبول میکنه.

behnam3000
چهارشنبه 21 مرداد 1394, 11:36 صبح
- مشخص کن تاریخ رو به صورت شمسی ذخیره میکنی یا نه؟

- وقتی تاریخ شروع و پایان رو داری به هیچ وجه نیازی به totalday نداری(ستون totalday رو حذف کن). (فیلدهای محاسباتی را میتوان در زمان مورد نیاز محاسبه کرد)
- کوئری هایی که برای استخراج تاریخ نوشتید بدون هیچگونه شرطی هستند، این یعنی لیستی از داده ها رو بدست میاورند(همه رکوردها رو استخراج میکنه نه یک رشته خاص). پس نمیتونید به عنوان آرگومان متد ToDateTime در نظر بگیرید. (علت خطا هم همینه)
- اگر تاریخ ها شمسی هستند نمیتونید مستقیما از متد ToDateTime استفاده کنید چون این متد تاریخ های میلادی رو قبول میکنه.

مرسی از کمکت من تکست باکس تاریخم بصورت شمسی یعنی 21-5-1394 و داخل دیتابیسم قرار میگیره حالا باید چه کدی بنویسم لطفا راهنمایی کنید

aliasghar2
چهارشنبه 21 مرداد 1394, 12:05 عصر
مرسی از کمکت من تکست باکس تاریخم بصورت شمسی یعنی 21-5-1394 و داخل دیتابیسم قرار میگیره حالا باید چه کدی بنویسم لطفا راهنمایی کنید
شما اول باید تاریخ رو به میلادی تبدیل کنید و بعد بیاید از توابع تاریخ استفاده کنید وگرنه خطا میده

behnam3000
چهارشنبه 21 مرداد 1394, 12:17 عصر
شما اول باید تاریخ رو به میلادی تبدیل کنید و بعد بیاید از توابع تاریخ استفاده کنید وگرنه خطا میده
چطور تاریخ شمسی که در دیتابیس هست رو به میلادی تبدیل کنم با چه کدی میشه کدش رو بگید

aliasghar2
چهارشنبه 21 مرداد 1394, 12:27 عصر
چطور تاریخ شمسی که در دیتابیس هست رو به میلادی تبدیل کنم با چه کدی میشه کدش رو بگید
من خودم کلا واسه ذخیره سازی همیشه از میلادی استفاده کردم تا بتونم از توابع تاریخ تویه sql استفاده کنم ولی فانکشن های تبدیل تویه sql رو هم دارم که اگه بخوای واست میفرستم
ولی با توجه به کدت که داری با LINQ کار میکنی فک نکنم به کار بیاد و بهتره این کار رو تویه دستور LINQ انجام بدی مثلا اینطوری با فرض اینکه تابعی به نام ShamsiToMiladi داری
var qdate = from sabtmotor in db.sabts // آدرس وصل شدن به دیتابیس
(select ShamsiToMiladi(sabtmotor.enterdate

davidrobert
پنج شنبه 22 مرداد 1394, 11:31 صبح
ایراد کار شما این هستش که تاریخ شمسی رو میخواهید روش محاسبه روش پیدا کنید در linq ولی خبر ندارید linq شی گرا هستش و وقتی شما نوع فیلد رو تعریف کنید در دیتابیس همون نوع فیلد در دات نت شناسایی میشه به همین دلیل شما نمی توانید روی داده نوشتاری عمل محاسبه تاریه رو انجام بدید شما بیاد یک فیلد رو شمسی قرار بدید و معادل همون فیلد رو میلادی قرار بدید به صورت مخفی وقتی تاریخ شمسی رو انتخاب کردید معادل میلادیش هم قرار بگیره و نوع تاریخ میلادی date باشه و تاریخ شمسی nvarchar(13) چون تاریخ مشسی رو نمی تونی در date استفاده کنید چون تو 31 روز ماه دوم و چهارم گیر میکنید. بخاطر شمسی nvarchar و میلادی date قرار بدید تا بتوانید راحت عمل محاسبه تاریخ رو انجام بدید این لینک من تبدیل تاریخ شمسی به میلادی رو قرار دادم در دیتاگرید ویو برای کادر متن هم بتوانید استفاده کنید.
http://barnamenevis.org/showthread.php?420488-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D8%B1%D9%88%D8%B2-31-%D9%87%D8%B1-%D9%85%D8%A7&p=2243657&viewfull=1#post2243657