PDA

View Full Version : زمان درج رکورد ها در بانک



asemaneiran
شنبه 19 فروردین 1391, 09:45 صبح
سلام
دوستان محترم
من یک گرید دارم (که از بانک sql پر می شه)که یک ستون تاریخ درج در اون وجود داره. می خوام وقتی ایتمی در بانک درج شد(و در گرید نمایش داده شد)
در ستون تاریخ درج تعداد روزهایی که اون ایتم درج شده رو نشون بده
طوری که اگر مثلا دیروز من یک ایتم ایجاد کردم(یک سطر اطلاعات در بانک) و
امروز برنامه رو اجرا می کنم جلوی اون سطر اطلاعات در گرید . توی سلول تاریخ درج نوشته باشه 1 .
یعنی یک روز هست این ایتم درج شده و سه روز بعد وقتی برنامه رو اجرا می کنم بنویسه 4 روزه این رکورد ایجاد شده.
خواهش می کنم یکی راهنمایی کنه...
ممنونم

asemaneiran
شنبه 19 فروردین 1391, 18:45 عصر
سلام
دوستان محترم
من یک گرید دارم (که از بانک sql پر می شه)که یک ستون تاریخ درج در اون وجود داره. می خوام وقتی ایتمی در بانک درج شد(و در گرید نمایش داده شد)
در ستون تاریخ درج تعداد روزهایی که اون ایتم درج شده رو نشون بده
طوری که اگر مثلا دیروز من یک ایتم ایجاد کردم(یک سطر اطلاعات در بانک) و
امروز برنامه رو اجرا می کنم جلوی اون سطر اطلاعات در گرید . توی سلول تاریخ درج نوشته باشه 1 .
یعنی یک روز هست این ایتم درج شده و سه روز بعد وقتی برنامه رو اجرا می کنم بنویسه 4 روزه این رکورد ایجاد شده.
خواهش می کنم یکی راهنمایی کنه...
ممنونم

سلام
خواهش می کنم دوستان راهنمایی بفرمایید...
؟؟؟؟

asemaneiran
یک شنبه 20 فروردین 1391, 13:18 عصر
سلام
خواهش می کنم دوستان راهنمایی بفرمایید...
؟؟؟؟

سلام
دوستان
کمک کنید خیلی درگیرشم:ناراحت:
خواهش می کنم..:گریه:

hakim22
یک شنبه 20 فروردین 1391, 14:24 عصر
خب ما نفهمیدیم مشکل شما دقیقا کجاست !؟
روی محاسبه ی زمانه !؟

برای محاسبه زمان بر واحد روز :


DateDiff (DateInterval.Day,تاریخ امروز,تاریخ مبدا)

asemaneiran
یک شنبه 20 فروردین 1391, 16:43 عصر
خب ما نفهمیدیم مشکل شما دقیقا کجاست !؟
روی محاسبه ی زمانه !؟

برای محاسبه زمان بر واحد روز :


DateDiff (DateInterval.Day,تاریخ امروز,تاریخ مبدا)


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

asemaneiran
دوشنبه 21 فروردین 1391, 11:18 صبح
سلام
ممنون
مشکلم اینه که چطور با هر بار لود برنامه تاریخ درج تمام ایتمهای توی گرید در ستون تاریخ درج محاسبه و نمایش داده بشه؟؟؟
کمکنید ممنون می شم
خواهش می کنم یک نمونه برام بذارید...از بس فکر کردم کلافه شدم...:گریه:

سلام
کسی نمی دونه؟؟؟؟؟؟؟؟؟
خواهش می کنم..

hakim22
دوشنبه 21 فروردین 1391, 14:49 عصر
این سوال که یکی از اساسی ترین کارها در دیتابیسه
شما اول یک مطالعه ی اجمالی روی کتاب آموزشی زبان بیندازید بعد اگر موفق نشدید کد درخواست کنید.

asemaneiran
دوشنبه 21 فروردین 1391, 15:49 عصر
این سوال که یکی از اساسی ترین کارها در دیتابیسه
شما اول یک مطالعه ی اجمالی روی کتاب آموزشی زبان بیندازید بعد اگر موفق نشدید کد درخواست کنید.

سلام
منظورتون رو متوجه نشدم
به هر حال این رو بدونید خیلی تلاش کردم اما جواب نگرفتم...:ناراحت:
؟؟

mostafah110
دوشنبه 21 فروردین 1391, 16:25 عصر
سلام
اول به این چند تا سوال من جواب بده:
۱- تونستی داخل بانک اطلاعات مربوط به تاریخ درج رو ثبت کنی؟
۲- تونستی همان تاریخ درج رو به تنهایی توی دیتا گرید ویو نمایش بدی؟
۳- اصلا با نمایش دیتاها توی دیتاگرید مشکلی داری یا نه؟
۴- راستی تاریخ رو چجوری ذخیره می کنی؟ از نوع smalldatetimeا ستفاده می کنی ؟ یا که نه به صورت رشته

اگه که می تونی اطلاعات رو نمایش بدی، پس می رسیم به مرحله بعد و اون محاسبه میزان زمانی است که یک داده خاص درج شده و از آن می گذرد. خوب برای این کار باید زمان حال رو محاسبه کنی و از زمان درج داخل بانک کم کنی، به همین راحتی!

asemaneiran
دوشنبه 21 فروردین 1391, 18:39 عصر
سلام
اول به این چند تا سوال من جواب بده:
۱- تونستی داخل بانک اطلاعات مربوط به تاریخ درج رو ثبت کنی؟
۲- تونستی همان تاریخ درج رو به تنهایی توی دیتا گرید ویو نمایش بدی؟
۳- اصلا با نمایش دیتاها توی دیتاگرید مشکلی داری یا نه؟
۴- راستی تاریخ رو چجوری ذخیره می کنی؟ از نوع smalldatetimeا ستفاده می کنی ؟ یا که نه به صورت رشته

اگه که می تونی اطلاعات رو نمایش بدی، پس می رسیم به مرحله بعد و اون محاسبه میزان زمانی است که یک داده خاص درج شده و از آن می گذرد. خوب برای این کار باید زمان حال رو محاسبه کنی و از زمان درج داخل بانک کم کنی، به همین راحتی!

سلام
ممنون از راهنمایی تون
اره با درج تاریخ در بانک و نمایش در گرید مشکل ندارم
نوع ستون تاریخ رو در بانک nvarchar(50) در نظر گرفتم.
فقط نمی دونم چطور محاسبه رو انجام بدم
و چطور در ستون سومی (تاریخ درج رکورد) نمایش بدم. که با هر بار لود برنامه تاریخ عوض بشه...:ناراحت::متفکر:
ممنون میشم کمکم کنید...

mostafah110
دوشنبه 21 فروردین 1391, 20:21 عصر
دوست عزیز چه قدر خوب می شد که تاریخ رو به صورت smalldatetime ذخیره می کردی! اگر که هنوز برنامه به درجه اجرایی نرسیده، تغییرش بدی خیلی بهتر می شه! چون بعدا خیلی کارها باهش میشه کرد که با نوع nvarchar نمیشه! می تونی تغییرش بدی یانه؟ اگر می تونی خیلی خوبه اگرم که نه به من بگو با چه فرمتی تو بانک ذخیره می کنی؟ مثلا این طوری: "1391/01/21" یا که به یه فرمت دیگه؟!!!

ببخشید که من ازت همش سوال می کنم، چون بدون این که اینا رو بفهمم نمی تونم درست و حسابی راهنمییت کنم!

asemaneiran
سه شنبه 22 فروردین 1391, 09:19 صبح
دوست عزیز چه قدر خوب می شد که تاریخ رو به صورت smalldatetime ذخیره می کردی! اگر که هنوز برنامه به درجه اجرایی نرسیده، تغییرش بدی خیلی بهتر می شه! چون بعدا خیلی کارها باهش میشه کرد که با نوع nvarchar نمیشه! می تونی تغییرش بدی یانه؟ اگر می تونی خیلی خوبه اگرم که نه به من بگو با چه فرمتی تو بانک ذخیره می کنی؟ مثلا این طوری: "1391/01/21" یا که به یه فرمت دیگه؟!!!

ببخشید که من ازت همش سوال می کنم، چون بدون این که اینا رو بفهمم نمی تونم درست و حسابی راهنمییت کنم!

سلام
اره با همین فرمت ی که ذکر کردید ذخیره می کنم
نوعش رو هم همون nvarchar گرفتم
واهش می کنم راهنمایی کنید
ممنون

mostafah110
سه شنبه 22 فروردین 1391, 14:58 عصر
با این اوضاع و شرایط باید اول این تاریخ رو به مبلادی تبدیل کنی و بعدش از زمان حال کم بشه ، تا تعداد روز به دست بیاید، من یه برنامه ای رو سریع برات نوشتم و آپلود کردم... ببین بدردت می خوره:
از تابع cellformatting مربوط به دیتا گریدویو استفاده کردم.
هرجاش رو که نفهیمدی بگو برات توضیح بدم، البته اصلا اگه به درد بخور بود

لینک دانلود:
http://astane.persiangig.com/datediff.rar

asemaneiran
سه شنبه 22 فروردین 1391, 16:18 عصر
با این اوضاع و شرایط باید اول این تاریخ رو به مبلادی تبدیل کنی و بعدش از زمان حال کم بشه ، تا تعداد روز به دست بیاید، من یه برنامه ای رو سریع برات نوشتم و آپلود کردم... ببین بدردت می خوره:
از تابع cellformatting مربوط به دیتا گریدویو استفاده کردم.
هرجاش رو که نفهیمدی بگو برات توضیح بدم، البته اصلا اگه به درد بخور بود

لینک دانلود:
http://astane.persiangig.com/datediff.rar



سلام واقعا ازتون ممنون که وقت گذاشتید و کمکم کردید.
فقط من برنامه رو اجرا کردم
اما هر کاری کردم بانک رو اتچ کنم که خودم هم بتون رکرد درج کنم
نشد...
تاریخ سیستمم رو جلو و عقب بردم. برای ایتم سه و هار که هر دو قبل از تغییر تاریخ سیستم می نوشت امروز .
بعد از تغییر تاریخ سیستم به دو روز بعد . یکی رو نوشت دو روز قبل و یکی رو نوشت 1 روز قبل..!!!!
از کدها هم دست و پا شکسته فهمیدم قضیه چیه:متفکر:
می خواستم خواهش کنم یه مختصر خودتون یه توضیح هم بفرمایید...
(راستی من توی بانک تاریخ رو اینجوری ذخیره کردم . این کدها جواب میدن ببخشید الان یادم اومد بگم..
4:21 1391/2/13
بازم ازتون ممنونم..:تشویق:

mostafah110
سه شنبه 22 فروردین 1391, 18:41 عصر
به نظر من که این کاری که کردی اشتباهه، بهتر اینه که تاریخ ها را به صورت smallDatetime داخل بانکت ذخیره کنی! وگرنه صد تا مشکل برات پیدا میشه! دیدی که چه تابعی مجبور شدم بنویسم برای تبدیل تاریخ شمسی به میلادی. در ضمن فردا روز که بخوای روی اطلاعات مانور بدی خیلی سخته ، مثلا داده های بین دو تاریخ معین رو پیدا کنی، پس من بهت اکیدا توصیه می کنم که نوع داده تاریخ رو عوض کنی و به جای varchar از smalldatetime استفاده کنی.

من یک تابع توی برنامه دارم که تاریخ شمسی که به فرمت "۱۳۹۱/۰۱/۲۲" هست رو می گیره و به تاریخ میلادی تبدیل می کنه. یک سری پردازش روی رشته است به همین راحتی.
در ضمن در visualstudio یک فضای کاری به نام system.globalization هست که می تونیم برای تبدیل تاریخ شمسی به میلادی ازش استفاده کنیم. مثل کد زیر:



DateTime dt = new DateTime(getYear(sh), getMonth(sh), getDay(sh), new PersianCalendar());



دیتا گریدویو یک ایونتی به نامcellformatting داره که وقتی یک داده در دیتا گرید ویو فرمتش تغییر می کنه ، اون تابع صدا زده میشه. حالا با استفاده از ایندکس ستون می تونیم بفهمیم که تو کدومستون هستیم و تغییرات لازم رو بدیم:




private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1)
{
DateTime dt = shamsiStringToMiladi(e.Value.ToString());

DateTime now = DateTime.Now;

TimeSpan ts = now - dt;

string value = "";
int dayDiff = ts.Days;
if (dayDiff > 0)
{
value += dayDiff.ToString() + " روز ";
}

value += " قبل ";

if (dayDiff == 0)
{
value = "امروز";
}

if (dayDiff < 0)
{
value = "مربوط به آینده";
}

e.Value = value;
}
}

asemaneiran
سه شنبه 22 فروردین 1391, 21:46 عصر
به نظر من که این کاری که کردی اشتباهه، بهتر اینه که تاریخ ها را به صورت smallDatetime داخل بانکت ذخیره کنی! وگرنه صد تا مشکل برات پیدا میشه! دیدی که چه تابعی مجبور شدم بنویسم برای تبدیل تاریخ شمسی به میلادی. در ضمن فردا روز که بخوای روی اطلاعات مانور بدی خیلی سخته ، مثلا داده های بین دو تاریخ معین رو پیدا کنی، پس من بهت اکیدا توصیه می کنم که نوع داده تاریخ رو عوض کنی و به جای varchar از smalldatetime استفاده کنی.

من یک تابع توی برنامه دارم که تاریخ شمسی که به فرمت "۱۳۹۱/۰۱/۲۲" هست رو می گیره و به تاریخ میلادی تبدیل می کنه. یک سری پردازش روی رشته است به همین راحتی.
در ضمن در visualstudio یک فضای کاری به نام system.globalization هست که می تونیم برای تبدیل تاریخ شمسی به میلادی ازش استفاده کنیم. مثل کد زیر:



DateTime dt = new DateTime(getYear(sh), getMonth(sh), getDay(sh), new PersianCalendar());



دیتا گریدویو یک ایونتی به نامcellformatting داره که وقتی یک داده در دیتا گرید ویو فرمتش تغییر می کنه ، اون تابع صدا زده میشه. حالا با استفاده از ایندکس ستون می تونیم بفهمیم که تو کدومستون هستیم و تغییرات لازم رو بدیم:




private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1)
{
DateTime dt = shamsiStringToMiladi(e.Value.ToString());

DateTime now = DateTime.Now;

TimeSpan ts = now - dt;

string value = "";
int dayDiff = ts.Days;
if (dayDiff > 0)
{
value += dayDiff.ToString() + " روز ";
}

value += " قبل ";

if (dayDiff == 0)
{
value = "امروز";
}

if (dayDiff < 0)
{
value = "مربوط به آینده";
}

e.Value = value;
}
}



سلام
ممنوناز راهنمایی تون
پس با nvarchar کار نمیکنه؟؟؟
می شه خواهش کنم ستون تاریخ درج رکورد رو هم به بانک اضاف کنید و کلید درج رو هم بذارید؟؟؟
(آخه من از s[] چیزی نفهمیدم . و در برنامه ام ستون تاریخ درج رکورد(فعلی) رو دارم و نمی دونم چطور تغییرات برنامه شما رو با برنامه خودم وفق بدم..):ناراحت:
ممنون

mostafah110
سه شنبه 22 فروردین 1391, 22:30 عصر
سلام
ممنوناز راهنمایی تون
پس با nvarchar کار نمیکنه؟؟؟
می شه خواهش کنم ستون تاریخ درج رکورد رو هم به بانک اضاف کنید و کلید درج رو هم بذارید؟؟؟
(آخه من از s[] چیزی نفهمیدم . و در برنامه ام ستون تاریخ درج رکورد(فعلی) رو دارم و نمی دونم چطور تغییرات برنامه شما رو با برنامه خودم وفق بدم..):ناراحت:
ممنون

ببخشید و لی این که کاری نداره ! من متاسفانه وقت نمی کنم.

asemaneiran
چهارشنبه 23 فروردین 1391, 17:07 عصر
ببخشید و لی این که کاری نداره ! من متاسفانه وقت نمی کنم.

سلام دوست عزیز
تا همین جا هم ممنون از راهنمایی تون
موفق باشید