PDA

View Full Version : سوال: نمایش تاریخ انقضاء عضویت کاربر بر اساس تاریخ ثبت نام؟



پیام حیاتی
یک شنبه 10 آبان 1394, 15:26 عصر
سلام
در جدول کاربران یک فیلد به نام n_dt_en تاریخ عضویت کاربر را در خود نگه می دارد.کاربران پس از 30 روز تاریخ عضویتشون به پایان میرسه.
می خواهم یک کوئری بنویسم که تاریخ روز جاری یا زمانی که کاربر وارد می شود را از تاریخ ثبت شده کسر کند و در پنل مدیریت کاربر در یک label نمایش دهد که مثلا" 10 روز تا پایان عضویت باقیست.

malloc
یک شنبه 10 آبان 1394, 16:04 عصر
خوب اینکار که سادس انجام دادنش ..... وقتی که کاربر لاگین میکنه شما یه رکورد برمیگردونی و درون سشن نگه میداری..... بعد از توی اون سشن تاریخ و بخون و با تاریخ فعلی مقایسه کن دیگه

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

aminmousavi
یک شنبه 10 آبان 1394, 16:05 عصر
سلام پیام جان ، اگر میخوای فقط توی Label نشون بدی ، که نیاز به کوئری نیست با C# اینکارو انجام بده مثلا :

DateTime dt1 = DateTime.Now.AddDays(-14);
double remain=((30-(DateTime.Now - dt1).TotalDays));;


باید dt1 رو از دیتابیس بخونی ، من اینجا شماتیک یکدونه datetime (dt1)ساختم که 14 روز پیش ثبت نام شده .

malloc
یک شنبه 10 آبان 1394, 16:06 عصر
سلام پیام جان ، اگر میخوای فقط توی Label نشون بدی ، که نیاز به کوئری نیست با C#‎‎‎‎ اینکارو انجام بده مثلا :

DateTime dt1 = DateTime.Now.AddDays(-14);
double remain=((30-(DateTime.Now - dt1).TotalDays));;


باید dt1 رو از دیتابیس بخونی ، من اینجا شماتیک یکدونه datetime (dt1)ساختم که 14 روز پیش ثبت نام شده .

الان متوجه نشدم اون -14 برای چیه ؟ و اینکه چرا double

aminmousavi
یک شنبه 10 آبان 1394, 16:09 عصر
مرتبط به کدی که میخوان نیست برای این گذاشتم اگر خواست بدون sql تست کنه . اون dt1 شبیه سازی یک تاریخی هست که برای 14روز پیشه . جای dt1 باید از sql مقدار تاریخ عضویت کاربر رو قرار بده

malloc
یک شنبه 10 آبان 1394, 16:14 عصر
فکر کنم طبق کد آقای موسوی کد زیر کفایت کنه


int remain=(DateTime.Now - TarikhSabteNam).TotalDays;

ahmad156
یک شنبه 10 آبان 1394, 19:21 عصر
var remainDays = (registerDateTime.AddDays(30) - DateTime.Now).Days;

پیام حیاتی
یک شنبه 10 آبان 1394, 22:40 عصر
مشکلی که دارم این هست که نمی دونم چطور مقدار داخل فیلد رو پس از خواندن از بانک در متغیر ذخیره کنم.
اینجا اول در label نمایش دادم بعد خواستم از label بگیرم بزارم داخل متغیر :

string result = "SELECT n_dt_en FROM T_Namayandegi WHERE n_id= '" + Session["n_id"].ToString() + "' ; "; SqlCommand showresult = new SqlCommand(result, con);
con.Open();
lblRemine.Text = showresult.ExecuteScalar().ToString();
var bingo = lblRemine;
bingo = bingo - DateTime.Now;
con.Close();

خطا :

136403

aminmousavi
یک شنبه 10 آبان 1394, 22:54 عصر
DateTime dt = Convert.toDateTime(showresult.ExecuteScalar().ToSt ring());
var bingo = dt - DateTime.Now;

ویژوال باز نبود فقط !

پیام حیاتی
دوشنبه 11 آبان 1394, 16:27 عصر
DateTime dt = Convert.toDateTime(showresult.ExecuteScalar().ToSt ring());
var bingo = dt - DateTime.Now;

ویژوال باز نبود فقط !

کدها :


string result = "SELECT n_dt_en FROM T_Namayandegi WHERE n_id= '" + Session["n_id"].ToString() + "' ; ";
SqlCommand showresult = new SqlCommand(result, con);
con.Open();
DateTime dt = Convert.ToDateTime(showresult.ExecuteScalar().ToSt ring());
var bingo = dt - DateTime.Now;
con.Close();
lblRemine.Text = "رزوهای باقیمانده از شارژ : " + bingo.ToString();

نتیجه:!

136424

چیزی که در فیلد n_dt_en بانک ذخیره شده :

2015-10-28 00:00:00.000
فیلد از نوع datetime

aminmousavi
دوشنبه 11 آبان 1394, 18:32 عصر
string result = "SELECT n_dt_en FROM T_Namayandegi WHERE n_id= '" + Session["n_id"].ToString() + "' ; ";
SqlCommand showresult = new SqlCommand(result, con);
con.Open();
DateTime dt = Convert.ToDateTime(showresult.ExecuteScalar().ToSt ring());
con.Close();
lblRemine.Text = "رزوهای باقیمانده از شارژ : " + ((dt - DateTime.Now).TotalDays).ToString();

پیام حیاتی
دوشنبه 11 آبان 1394, 20:23 عصر
نتیجه :
136430

malloc
سه شنبه 12 آبان 1394, 09:46 صبح
داداش مساله ساده ایه
شما کد زیر رو


var bingo = dt - DateTime.Now;


با کد زیر جابجا کن

DateTime bingo = (dt - DateTime.Now).TotalDay;



اگه این هم جواب نداد مطمعن باش یجا تبدیل واحدت میشکل داره ... شما breakpoint بزار ببین خط به خط داده هات چی میشن و اوکی کن

پیام حیاتی
سه شنبه 12 آبان 1394, 12:50 عصر
داداش مساله ساده ایه
شما کد زیر رو


با کد زیر جابجا کن

DateTime bingo = (dt - DateTime.Now).TotalDay;



اگه این هم جواب نداد مطمعن باش یجا تبدیل واحدت میشکل داره ... شما breakpoint بزار ببین خط به خط داده هات چی میشن و اوکی کن

136448
برخی مواقع همین مسائل ساده مشکل ساز می شوند.:اشتباه:

aminmousavi
سه شنبه 12 آبان 1394, 14:53 عصر
عزیزیم شما توی DateTime که نمیتونه double بریزی !!! باید بنویسی :

DateTime bingo=(dt - Datetime.Now);
lblRemine.Text=bingo.TotalDays.toString()

malloc
سه شنبه 12 آبان 1394, 17:32 عصر
Cannot implicity convert type duble to DateTime

متن خطا رو نمیخونی ؟
آقای موسوی درست گفتن ... من حواسم نبود اونجا DateTime نوشتم .... اما خطاهای این مدلی ویژوال که متن و واضح نوشته نباید درکش سخت باشه

پیام حیاتی
سه شنبه 12 آبان 1394, 19:46 عصر
عزیزیم شما توی DateTime که نمیتونه double بریزی !!! باید بنویسی :

DateTime bingo=(dt - Datetime.Now);
lblRemine.Text=bingo.TotalDays.toString()


ایمن جان برای این TotalDays رفرنس خاصی باید اضافه کنیم؟چون نیست در لیست :

136456

136457

aminmousavi
چهارشنبه 13 آبان 1394, 00:12 صبح
TimeSpan bingo=(DateTime.Now - dt1);
lblRemain.Text=Convert.ToInt32( (30-bingo.TotalDays)).ToString();

پیام حیاتی
چهارشنبه 13 آبان 1394, 01:58 صبح
TimeSpan bingo=(DateTime.Now - dt1);
lblRemain.Text=Convert.ToInt32( (30-bingo.TotalDays)).ToString();

امین جان با این کد درست شد.سپاس بیکران :قلب:


string result = "SELECT n_dt_en FROM T_Namayandegi WHERE n_id= '" + Session["n_id"].ToString() + "' ; ";
SqlCommand showresult = new SqlCommand(result, con);
con.Open();
DateTime dt = Convert.ToDateTime(showresult.ExecuteScalar().ToSt ring());
TimeSpan bingo = (DateTime.Now - dt);
con.Close();
lblRemine.Text = "روزهای باقیمانده از شارژ : " + Convert.ToInt32((30 - bingo.TotalDays)).ToString();

نتیجه :

136473

از استاد احمد و malloc عزیز هم ممنونم :قلب::بوس:.