PDA

View Full Version : درج تاريخ ميلادي با ديتاتايپ DateTime توسط DatePicker آقاي هاشمي نژاد



bftarane
چهارشنبه 22 آذر 1391, 15:28 عصر
سلام. لطفاً اين لينک رو ببينيد
http://hasheminezhad.com/datepicker?page=4
اين کدهايي هست که من نوشتم

protected void Button2_Click(object sender, EventArgs e)
{
mydalbase.ExecuteNoneQuery(System.Data.CommandType .StoredProcedure, "insertdate", new SqlParameter[]{
new SqlParameter("@Date",TextBox1.Text)
});

}

protected void Button1_Click(object sender, EventArgs e)
{
//mydalbase.ExecuteNoneQuery(System.Data.CommandType .StoredProcedure,"insertdate",new SqlParameter[]{
// new SqlParameter("@Date",TextBox1.Text),
// new SqlParameter("@Year",),
// new SqlParameter("@Month",)
//});
}
اينم Sp اي هست که نوشتم

alter procedure insertdate
(
@Date Datetime,
@Month nvarchar(50),
@Year int
)
as
begin
insert into Datetest (Date,Year,Month) values(@Date,@Year,@Month)
end
در واقع من مي خوام تاريخي که کاربر انتخاب مي که از DatePicker رو به صورت ميلادي و با DataType
DeteTime ذخيره کنم و از اين تاريخ سال رو و ماه رو جداگانه بگيرم و در فيلدهاي خودشون ذخيره کنم.
آيا اين کار امکانپذيره؟ راهنمايي کنيد لطفاً.

saeed_sho
چهارشنبه 22 آذر 1391, 15:59 عصر
اگه تاریخو میلادی میدین به استورد پروسیجر کوئری رو اینجوری بنویسید
insert into Datetest (Date,Year,Month) values(@Date,YEAR(@Date),MONTH(@Month))

با یه پارامتر کارتون راه میافته و تابع year سال رو از تاریخ میگیره و برمیگردونه و month و day هم همینطور که میتونید از این تابع ها در اس کیو ال استفاده کنید

bftarane
چهارشنبه 22 آذر 1391, 18:21 عصر
نه اون جوري استفاده کردم به مشکل خوردم باهاش براي وقتي که مي خواستم به فارسي نشون بدم مثل
مهر 1388
چون اونطوري آدم براي سال و ماه با 2 تا int مواجهه. خيلي هم پرسيدم يه int مثل 2012 رو چطور به 1391 تبديل کنم جواب مناسبي نگرفتم اينه که تصميم گرفتم تاريخ رو به صورت ميلادي و سال و ماه رو به صورت فارسي در ديتابيس ذخيره کنم (موقع آرشيو اين اين سال و ماه به درد مي خوره)
اگه با روشي که گفتيد مي شه به شکل پايين آرشيو رو نشون داد به من هم لطفاً ياد بديد.

به هر حال کاري که الآن انجام دادم اينه که از لينک زير
http://hasheminezhad.com/jqdatepicker
استفاده کردم و با کمک کدهاي زير تاريخ به صورتي که در عکس مي بينيد ذخيره ميشه
96537

و تونستم آرشيو رو هم درست کنم اينم عکسش
96539


فقط مشکلي که دارم اينه که وقتي مثلاً روي هايپرلينک آذر، 1391 کليک ميشه من دو تا پارامتر آذر و 1391 رو با کوئري استرينگ مي فرستم يعني يه چيزي به شکل زير در آدرس بار ديده ميشه

آذر=http://localhost:5464/hashi/Default4.aspx?Year=1391&Month
امتحان کردم درست هم عمل مي کنه ولي اينکه يه کلمه فارسي با کوئري استرينگ بفرستم برام عجيب غريبه. آيا مشکلي ايجاد نمي کنه؟

saeed_sho
پنج شنبه 23 آذر 1391, 09:46 صبح
تاریخو در دیتابیس بصورت datetime ذخیره کنید و موقع نمایش نتایج یه تابع بنوسید و با استفاده از persian calendar به شمسی تبدیلش کنید و ما و سال رو برگردونید و نمایش بدید
این در مورد نمایش ماه و سال اما در مورد کوئری استرینگ دوستان نظر بدن

bftarane
پنج شنبه 23 آذر 1391, 11:33 صبح
من اين رو قبلاً هم پرسيده بودم ولي نتيجه نگرفتم نمي دونم شايد خيلي سادست من نمي فهمم
آره اگه يه سري تاريخ داشته باشيم به ميلادي ميشه به راحتي سلکتشون کرد و سال و ماهشون رو به شمسي به دست آورد
ولي وقتي با کوئري زير
ALTER procedure [dbo].[Archivetest]
@Year int,
@Month int

as
begin
select * from tbl_news where Year(StartDate)=@Year and Month(StartDate)=@Month
دارم سال و ماه رو به دست مي يارم که از نوع int هم هستند خروجي ها يعني سال و ماه
پس نمي تونم با persiancalender يا حالا هر چيز ديگه اي مثل persia.dll اون دو تا int رو تبديل به ماه و سال فارسي کنم.
اگه من روز و ماه و سال رو داشتم مي تونستم اين کار رو بکنم مثلاً در مورد سال با اين کد
return PersianCalendar.GetYear(date); چون اون موقع Date رو داشتم ولي وقتي روزي در کار نيست و فقط دو تا مقدار وجود داره (سال و ماه) نميشه اين کار رو بکنم. يعني سال و ماه int به ميلادي رو دارم ولي نمي تونم به شمسي نشونشون بدم.

نمي دونم چرا کسي منظور من رو نمي گيره؟ يا من بد توضيح مي دم يا ضريب هوشي خيلي پاييني دارم که يه قضيه که به نظر بقيه خيلي ساده مي رسه رو متوجه نميشم.
واقعاً خسته شدم.

اگه من بتونم اين کار رو بکنم ديگه نيازي هم به فرستادن پارامتر فارسي نيست به فارسي فقط نشون مي دم و با کوئري استرينگ همون int ها رو مي فرستم.

alihassanabadi
پنج شنبه 23 آذر 1391, 12:21 عصر
سلام
آره به این روشی که فرمودید به مشکل برمیخورید
ولی

ولي اينکه يه کلمه فارسي با کوئري استرينگ بفرستم برام عجيب غريبه. آيا مشکلي ايجاد نمي کنه؟نخیر مشکلی نداره
همین سایت برنامه نویس کلی query string فارسی میفرسته
وقتی خودتون زحمت کشیدید به نتیجه رسیدید ارزش داره
میتونی کویری استرینگ هم به صورت سال/ماه/روز با هم به صورت


default?archiveDate=19391-آذر-9

بفرستی و در مقصد با SubString سال و ماه و روز رو بدست بیارید