PDA

View Full Version : تبدیل تابع اس کیو ال به اکسس*



tefos666
چهارشنبه 05 مرداد 1390, 10:54 صبح
سلام دوستان با توجه به اینکه بانک اکسس مانند اس کیو ال قادر به پشتیبانی SP نمیباشد و من قصد دارم بانک نرم افزار خود را از اس کیو ال به اکسس بنا به دلایلی انتقال دهم و امکان استفاده از sql express رو هم ندارم ، لذا خواهشمند است چنانچه اساتید کسی در مورد تبدیل این دو تابع اینجانب به ماژول اکسس یا زبان C# یا هر زبان دیگری توانست کمک خود را از من دریغ نکند ، شدیدا عجله و نیاز دارم متاسفانه خودم زیاد به زبانهای برنامه نویسی آشنایی ندارم . باتشکر

تابع اول


USE [xxx]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[Dton](@sDate [char](10))
RETURNS [int] WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @num INT
DECLARE @i INT
DECLARE @cleap INT
DECLARE @Year INT
DECLARE @Month INT
DECLARE @Day INT
DECLARE @YearStr CHAR(4)
DECLARE @MonthStr CHAR(2)
DECLARE @DayStr CHAR(2)
DECLARE @BaseYear INT
SET @BaseYear = 1300
SET @YearStr = SUBSTRING(@sdate, 1, 4)
SET @MonthStr = SUBSTRING(@sdate, 6, 2)
SET @DayStr = SUBSTRING(@sdate, 9, 2)

if isnumeric(@YearStr) = 0 or isnumeric(@MonthStr ) =0 OR isnumeric(@DayStr) = 0
return -999999


SET @Year = @YearStr
SET @Month = @MonthStr
SET @Day = @DayStr


DECLARE @year_dist INT

SET @year_dist = @Year - @BaseYear

SET @num = @year_dist * 365
SET @i = 1
WHILE @i <= @Month - 1
BEGIN
SET @num = @num + ( SELECT CASE WHEN @i BETWEEN 1 AND 6 THEN 31 WHEN @i BETWEEN 7 AND 11 THEN 30 ELSE 29 END )
SET @i = @i + 1
END

SET @num = @num + @Day

SET @i = @BaseYear

WHILE @i <= @Year - 1
BEGIN
If dbo.IsSolHejLeap(@i) = 1
SET @num = @num + 1
SET @i = @i + 1
END

RETURN @Num - 18262

End



تابع دوم



USE [xxx]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[IsSolHejLeap](@Year [int])
RETURNS [int] WITH EXECUTE AS CALLER
AS
BEGIN

DECLARE @Temp int
DECLARE @R INT
SET @Temp = @Year + 38
SET @Temp = @Temp * 31
SET @Temp = @Temp % 128
If @Temp > 30
SET @R = 0
Else
SET @R = 1

RETURN @R

END


ضمنا من از این دو تابع تو سورس کدم اینجوری استفاده میکردم




//SqlCommand SumCommand = new SqlCommand("select SUM(dbo.Dton('" + grdDates.GetValue(1).ToString() + "')-dbo.Dton('" + grdDates.GetValue(0).ToString() + "')) as [جمع روزها] from xxx.dbo.tbl_dates where id_person=" + grdDates.GetValue(2).ToString() + " ", mydb.Connect(""));