PDA

View Full Version : مبتدی: کمک برای نرم افزار یاد آور(reminder)



majid_3ma
یک شنبه 04 بهمن 1388, 13:37 عصر
سلام
من می خوام یک نرم افزار یاد آور روز تولد بنویسم
از روی مشخصاتی که داخل دیتابیس هست (مثلا تاریخ تولد) بهش می دم.
چه جوری میشه که 4 روز قبل از سررسید تاریخ تولد به صورت اتوماتیک برنامه اعلام کنه که 4 روز بعد تولد شخص ... می باشد؟
تاریخ ها رو شمسی وارد کنم یا میلادی؟
آیا اصلا با تاریخ شمسی میشه همچین کاری کرد یا باید تبدیل بشه؟
دیتابیسم هم sql هست.
لطف بزرگی می کنید کمکم کنید.
:قلب: :قلب: :قلب:

slashslash2009
یک شنبه 04 بهمن 1388, 13:51 عصر
فارسی هم میتونی وارد کنی باید همیشه چک کنه که تاریخ آیا به 4 روز قبلش رسیده یا نه میتونی تاریخ 4 روز قبل رو یک جا ذخیره کنی و تاریخ هر روز رو با اون مقایسه کنی ببینی مساوی هست یا هنوز کوچکتره

majid_3ma
یک شنبه 04 بهمن 1388, 14:08 عصر
فارسی هم میتونی وارد کنی باید همیشه چک کنه که تاریخ آیا به 4 روز قبلش رسیده یا نه میتونی تاریخ 4 روز قبل رو یک جا ذخیره کنی و تاریخ هر روز رو با اون مقایسه کنی ببینی مساوی هست یا هنوز کوچکتره

1- آقا دمت گرم خیلی باحالی فکر نمی کردم به این سرعت جواب بده کسی
2- شرمنده من مبتدی هستم با چه کدی میشه مقدار داخلی جدول را در بیارم که با مقداری مساوی قرار بدم؟

shahab_ss
یک شنبه 04 بهمن 1388, 14:35 عصر
فارسی هم میتونی وارد کنی باید همیشه چک کنه که تاریخ آیا به 4 روز قبلش رسیده یا نه میتونی تاریخ 4 روز قبل رو یک جا ذخیره کنی و تاریخ هر روز رو با اون مقایسه کنی ببینی مساوی هست یا هنوز کوچکتره

به نظر من بهتر اینه که تاریخ جاری سیستم رو بگیرید،با عددی که مورد نظرتون هست (مثلاً 4) جمع کنید،نتیجه اون رو در جدول با تاریخ های تولد مقایسه و جستجو کنید (فقط ماه و روز مقایسه میشه!) .

- بهتره که تاریخ رو بصورت میلادی ذخیره کنید،کار با اون راحت تر خواهد بود

majid_3ma
یک شنبه 04 بهمن 1388, 15:03 عصر
به نظر من بهتر اینه که تاریخ جاری سیستم رو بگیرید،با عددی که مورد نظرتون هست (مثلاً 4) جمع کنید،نتیجه اون رو در جدول با تاریخ های تولد مقایسه و جستجو کنید (فقط ماه و روز مقایسه میشه!) .

- بهتره که تاریخ رو بصورت میلادی ذخیره کنید،کار با اون راحت تر خواهد بود
آقا میشه لطف کنید بگین با چه کدی میشه مقدار فیلد تاریخ جدول دیتابیس که مربوط به تازیخ هست بدست آورد؟ که بخوام با مقداری مساوی قرار بگیره؟

slashslash2009
یک شنبه 04 بهمن 1388, 15:28 عصر
باید تاریخو به صورت مثلا 1388/2/3 ذخیره کردی باشید و فیلدتون هم باید از جنس رشته یا همون char باشه

dt = consql.MySelect("Select * from table where date='1387/02/21'";با فارسی هم میتونی کار کنی من که تابه حال مشکلی نداشتم

majid_3ma
جمعه 09 بهمن 1388, 15:04 عصر
سلام
من از تاریخ شمسی persia.dll استفاده می کنم چه جوری می تونم در تاریخ روز ها رو جمع و تفریق بکنم؟:گریه:

mir555
جمعه 09 بهمن 1388, 17:18 عصر
بهتره تاریخو میلادی ذخیره کنی بعدش ماه و روز جدا کن تو این حالت می تونی تاریخ از هم کم کنی اگه باقیمانده کوچکتر مساوی 4 شد یعنی باید هشدار بدی

AliRezaPro
جمعه 09 بهمن 1388, 18:21 عصر
سلام
الان تاریخ رو گرفتیم و ذخیره کردیم ، چیجوری هر دفعه تاریخ ها رو چک کنه؟منظور من اینه که با تایمر باشه و هر مثلا 1 ساعت چک کنه ؟ یا هنگام لود چک کنه؟ یا....؟با تایمر که روش خوبی نیست، کسی چیزی به ذهنش میرسه که مثلا وقتی برنامه بازه بدون اینکه رویدادی اجرا بشه کد تاریخ ها چک بشه؟

aminghaderi
جمعه 09 بهمن 1388, 19:34 عصر
دو حالت وجود داره:
یا برنامه باز است (مثل بابیلون ، انتی ویروسو...)
یا برنامه بسته است (مثل ورد ، پاورپوینت و...)
اگه برنامه باز است می تونید یه شرط بزارید که به محض این ساعت 1 بامدا بود تاریخ تولد ها رو چک کند این در صورتی است که شما ساعت تولد رو نگرفته باشی؟!
اگه ساعت تولد رو گرفته باشی باید هر ساعت این عمل چک تاریخ تولد صورت بگیره.
در صورتی هم که برنامه بسته هست ، با لود شدن صفحه تاریخ ها رو چک کنید.
در سی شارپ یه شی ای بنام تایمر وجود داره که می تونید از اون به همراه پرشین کلندر استفاده کنید.
-------------------
البته این فقط یه راهه و اصل تحلیل پروژه است که باید درست انجام بشه.
ثبت تاریخ 4 روز قبل از تولد در داخل جدول کار جالبی نیست ، چون افزونگی داده به همراه داره.
استفاده از تاریخ سیستم راه بهتره (دوستمون اشاره کردند)
تاریخ میلادی هم به گفته دوستان راهتر از تاریخ شمسی هست.
برای تبدیل تاریخ میلادی به شمسی و نمایش ان به کاربر یا گرفتن تاریخ شمسی و تغیر ان به میلادی ، می تونید از کلاس پرشین کلندر استفاده کنید (راهنمایی در باره پرشین کلندر در همین سایت است.)

slashslash2009
جمعه 09 بهمن 1388, 21:16 عصر
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "1381/2/4";
label2.Text = "1385/5/30";
label3.Text = (DateTime.Parse(label1.Text) - DateTime.Parse(label2.Text)).TotalDays.ToString();//تعداد تمام روزها
label4.Text = (int.Parse(label3.Text) / 30).ToString();//تعداد ماه
label5.Text = (int.Parse(label3.Text) % 30).ToString();//تعداد روز

}

private void button2_Click(object sender, EventArgs e)
{
if (DateTime.Parse(label1.Text) < DateTime.Parse(label2.Text))
MessageBox.Show("کوچکتر");
else
MessageBox.Show("بزرگتر");
}

majid_3ma
شنبه 10 بهمن 1388, 01:39 صبح
من یک DataGridView توی فرمم گذاشتم که وقتی کاربر روی یک ردیف از داده ها دابل کلیک میکنه فرم جدید باز میشه حالا نمی دونم چه جوری میشه مقدار های DataGridView فرم پدر را در فرم فرزند که جدید باز میشه گذاشت.
مثلا در فرم پدر با استفاده از DGV.Rows[DGV.CurrentRow.Index].Cells[0].Value میشه مقدار سلول مورد نظر از ردیف انتخاب شده را بدست آورد.
حلا میخوام بدونم چجوری میشه مقدار بدست آمده را در فرم فرزند قرار داد.
ممنون میشم یکی کمک کنه :عصبانی++:

slashslash2009
شنبه 10 بهمن 1388, 09:42 صبح
از متغیرهای استاتیک استفاده کن

shahab_ss
شنبه 10 بهمن 1388, 09:50 صبح
شما میتونی به اینصورت کل مقادیر سطر گرید رو منتقل کنی :

Form1 obj = new Form1();
obj.CurrentCustomer = (Customer)dgv_1.CurrentRow.DataBoundItem;


و در فرم به اینصورت استفاده کنی:

this.Customer.Name;


البته قبلش باید این پراپرتی رو به فرم اضافه کرده باشی :

public customer CurrentCustomer { get; set; }



روش های زیادی برای انجام این کار وجود داره ، این هم یک نمونه بود.

موفق باشی

majid_3ma
یک شنبه 11 بهمن 1388, 00:51 صبح
شما میتونی به اینصورت کل مقادیر سطر گرید رو منتقل کنی :

Form1 obj = new Form1();
obj.CurrentCustomer = (Customer)dgv_1.CurrentRow.DataBoundItem;
و در فرم به اینصورت استفاده کنی:

this.Customer.Name;
البته قبلش باید این پراپرتی رو به فرم اضافه کرده باشی :

public customer CurrentCustomer { get; set; }

روش های زیادی برای انجام این کار وجود داره ، این هم یک نمونه بود.

موفق باشی
ببخشید میشه یکم واضح تر توضیح بدین من خیلی مبتدی هستم
:متعجب:

shahab_ss
یک شنبه 11 بهمن 1388, 08:46 صبح
این هم مثال