PDA

View Full Version : فرمت تاريخ در ديتاگريد



rahil_2008
چهارشنبه 18 شهریور 1388, 17:22 عصر
سلام دوستان
من مي خوام كاري كنم كه يك ستون از ديتاگريدم فقط تاريخ شمسي را بگيره. يادآوري مي كنم كه كاربر اطلاعاتو مستقيما در خود ديتاگريد وارد مي كنه.(در واقع مي خوام براي يك ستون فرمت تعيين كنم)
لطفا راهنماييم كنيد

Mohsen229266
چهارشنبه 18 شهریور 1388, 17:39 عصر
در این تایپیک (http://barnamenevis.org/forum/showthread.php?t=177894)یک برنامه گذاشتم ببین احتمالا مشکلت حل میشه

rahil_2008
چهارشنبه 18 شهریور 1388, 21:51 عصر
سلام mohsen229266
البته برنامه شما به درستي كار مي كنه اما من سردر نمي آرم چه طور مي شه اين ستونو تو ديتاگريد خودم پياده كنم؟ راهنمايي كنيد كه چه جوري مي تونم از برنامتون استفاده كنم

Mohsen229266
پنج شنبه 19 شهریور 1388, 10:23 صبح
دوست عزیز اول یه کلاس با نام MaskedEditEditingControl به برنامتون اضافه کنید بعد کد های اون کلاس رو به کلاس خودتون اضافه کنید و بعد سایر کد ها ولی راه بهتر اینه که درقسمت Solution Explorer بر روی آن راست کلیک Solution-->Add-->Existing Project و اون کلاس رو به پروژه خودت اضافه کنی و دو باره سایر کد ها رو

rahil_2008
جمعه 20 شهریور 1388, 15:27 عصر
دوست عزيز از راهنماييتون ممنونم
ولي برنامه شما براي unbound column ها كار مي كنه. من ميخوام اطلاعات ديتاگريدم از پايگاه داده بياد. يعني ستونهاي ديتاگريدم databound column هستند. فكر مي كنم فرمت تاريخ شمسي را بايد در sql تعريف كنم اما چه جوريشو نمي دونم؟

heivin
جمعه 20 شهریور 1388, 23:57 عصر
دوست عزيز از راهنماييتون ممنونم
ولي برنامه شما براي unbound column ها كار مي كنه. من ميخوام اطلاعات ديتاگريدم از پايگاه داده بياد. يعني ستونهاي ديتاگريدم databound column هستند. فكر مي كنم فرمت تاريخ شمسي را بايد در sql تعريف كنم اما چه جوريشو نمي دونم؟
البته اینجا جاش نیس چون مربوط به تالار SQL میشه


CREATE FUNCTION [dbo].[MiladiTOShamsi] (@MDate DateTime)
RETURNS Varchar(10)
AS
BEGIN
DECLARE @SYear as Integer
DECLARE @SMonth as Integer
DECLARE @SDay as Integer
DECLARE @AllDays as float
DECLARE @ShiftDays as float
DECLARE @OneYear as float
DECLARE @LeftDays as float
DECLARE @YearDay as Integer
DECLARE @Farsi_Date as Varchar(100)
SET @MDate=@MDate-CONVERT(char,@MDate,114)
--select dbo.MiladiTOShamsi(ModifiedDate) from MySales
SET @ShiftDays=466699 +2
SET @OneYear= 365.24199

SET @SYear = 0
SET @SMonth = 0
SET @SDay = 0
SET @AllDays = CAst(@Mdate as Real)
SET @AllDays = @AllDays + @ShiftDays
SET @SYear = (@AllDays / @OneYear) --trunc
SET @LeftDays = @AllDays - @SYear * @OneYear
if (@LeftDays < 0.5)
begin
SET @SYear=@SYear+1
SET @LeftDays = @AllDays - @SYear * @OneYear
end;
SET @YearDay = @LeftDays --trunc
if (@LeftDays - @YearDay) >= 0.5
SET @YearDay=@YearDay+1
if ((@YearDay / 31) > 6 )
begin
SET @SMonth = 6
SET @YearDay=@YearDay-(6 * 31)
SET @SMonth= @SMonth+( @YearDay / 30)
if (@YearDay % 30) <> 0
SET @SMonth=@SMonth+1
SET @YearDay=@YearDay-((@SMonth - 7) * 30)
end
else
begin
SET @SMonth = @YearDay / 31
if (@YearDay % 31) <> 0
SET @SMonth=@SMonth+1
SET @YearDay=@YearDay-((@SMonth - 1) * 31)
end
SET @SDay = @YearDay
SET @SYear=@SYear+1
SET @Farsi_Date = CAST (@SYear as VarChar(10)) + '/' + CAST (@SMonth as VarChar(10)) + '/' + CAST (@SDay as VarChar(10))
Return @Farsi_Date
END

heivin
جمعه 20 شهریور 1388, 23:59 عصر
طرز استفاده:


select dbo.MiladiTOShamsi(YourMiladiDate)

ali_md110
شنبه 21 شهریور 1388, 00:44 صبح
کلاس persiancalendar دات نت میتونه مشکل تابع شمسی رو حل کنه ولی فکر کنم منظور دوستمون اینه که اگر توی یکی از ستونهای دیتاگراید بایند شده تاریخ شمسی اشتباه وارد کردیم برنامه پیام بده یا قبول نکنه

rahil_2008
شنبه 21 شهریور 1388, 15:39 عصر
نه دوست عزيز منظورم اينه كه وقتي تو c# فرم را كاربر نگاه مي كنه در ديتاگريد در ستون تاريخ بطور پيشفرض اينو ببينه: xx/xx/xx (منظورم از x يك فاصله خالي هست) و بعد بتونه بجاي اين فاصله هاي خالي، عدد بزاره