Sayı İle Tarih Toplamak

Katılım
27 Aralık 2007
Mesajlar
20
Excel Vers. ve Dili
2005
İzin programı yapmaya çalışıyorum.Örneğin 10 günlük izin ile bugünün tarihini toplayacağım ama fonksiyonu bulamadım.Birde kalan izni bulurken çıkarma olarak ne kullanacağım?Yardımcı olursanız sevinirim.
 
Katılım
19 Eylül 2008
Mesajlar
331
Excel Vers. ve Dili
2003
DateAdd («interval»; «sayı»; «tarih»)
(«interval» yerine= güniçin "d" ,ay için "m", yıl için "yyyy" koyun
sayı yerine dilediğiniz sayıyı
tarih yerine üzerine eklemek istediğiniz tarihi girin

sayı yerine - eksi değer girersen tarihten çıkarma yapar
bir örnekle gönderiyorum
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
Personelin izin takibi için kendi yaptığım bir programı ekte gönderiyorum.

İnceleyin, yardımcı olacaktır.

Not: Normalde veriler SQL Server veritabanında ve hak edilen izinler her gün kontrol edilerek SQL Server tarafından otomatik olarak oluşturuluyor.
Tabii bu kısım sizde görünmez, isterseniz kodunu gönderebilirim.
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
Sn. matematikcip'in özel mesaj ile yaptığı istek üzerine, SQL Procedure kodlarını gönderiyorum.
Kod:
CREATE PROCEDURE PERSONEL_IZIN_HESAPLA
AS
DECLARE @BUGUNKU_GUN Smallint,
	@BUGUNKU_AY Smallint,
	@BUGUNKU_YIL Smallint,
	@BUGUNUN_TARIHI Datetime,
	@HAK_TARIHI Datetime,
	@PRS_NO Int,
	@PRS_GIRIS_TARIHI Datetime,
	@PRS_DOGUM_TARIHI Datetime,
	@CALISTIGI_YIL Smallint,
	@YAS50_TARIHI Datetime,
	@YAS18_TARIHI Datetime,
	@HAKETTIGI_IZIN_SURESI Smallint,
	@IZIN_ACIKLAMASI Varchar(50)
------------------------------------------------------------------------------------------
SELECT @BUGUNKU_GUN=DatePart(Day,Getdate())
SELECT @BUGUNKU_AY=DatePart(Month,Getdate())
SELECT @BUGUNKU_YIL=DatePart(Year,Getdate())
SELECT @BUGUNUN_TARIHI=Convert(Varchar(2),@BUGUNKU_AY) + '/' + Convert(Varchar(2),@BUGUNKU_GUN) + '/' + Convert(Varchar(4),@BUGUNKU_YIL)
------------------------------------------------------------------------------------------
DECLARE IZINCUR CURSOR FOR
	SELECT PRS_NO, PRS_GIRIS_TARIHI,
	       HAKETTIGI_TARIH=Convert(Datetime,
	                       Convert(Varchar(2),DatePart(Month,PRS_GIRIS_TARIHI)) 
	               + '/' + Convert(Varchar(2),DatePart(Day,PRS_GIRIS_TARIHI))
	               + '/' + Convert(Varchar(4),@BUGUNKU_YIL) ),
	       PRS_DOGUM_TARIHI,
	       CALISTIGI_YIL=@BUGUNKU_YIL - DatePart(Year,PRS_GIRIS_TARIHI)
	FROM PRS
	WHERE @BUGUNUN_TARIHI >= (Convert(Datetime,
	                       Convert(Varchar(2),DatePart(Month,PRS_GIRIS_TARIHI)) 
	               + '/' + Convert(Varchar(2),DatePart(Day,PRS_GIRIS_TARIHI))
	               + '/' + Convert(Varchar(4),@BUGUNKU_YIL) ))
		AND @BUGUNKU_YIL > DatePart(Year,PRS_GIRIS_TARIHI)
                          AND PRS_CIKIS_TARIHI IS NULL
--
OPEN IZINCUR
FETCH IZINCUR INTO @PRS_NO, @PRS_GIRIS_TARIHI, @HAK_TARIHI, @PRS_DOGUM_TARIHI, @CALISTIGI_YIL
WHILE (@@FETCH_STATUS=0) 
BEGIN
	-----------------------------------------------------------------------------------
	-- CALISTIGI YILA GORE IZIN SURESI HESAPLANIYOR
	-----------------------------------------------------------------------------------
	SELECT @HAKETTIGI_IZIN_SURESI = 
	      CASE 
	         WHEN @CALISTIGI_YIL Between 1 and 5 THEN 14
	         WHEN @CALISTIGI_YIL Between 6 and 14 THEN 20
	         WHEN @CALISTIGI_YIL >= 15 THEN 26
	      END
	SELECT @IZIN_ACIKLAMASI = 'HAKETTİĞİ YILLIK İZİN (' + Convert(Varchar(2),@CALISTIGI_YIL) + '.YIL)'

	-----------------------------------------------------------------------------------
	-- 50 YASINDAN BUYUK ISE EN AZ 20 GUN IZIN HAKKI VERILIYOR
	-----------------------------------------------------------------------------------
	SELECT @YAS50_TARIHI=Convert(Varchar(2),@BUGUNKU_AY)
		     + '/' + Convert(Varchar(2),@BUGUNKU_GUN)
		     + '/' + Convert(Varchar(4),@BUGUNKU_YIL - 50)
	IF @PRS_DOGUM_TARIHI <= @YAS50_TARIHI AND @HAKETTIGI_IZIN_SURESI < 20
	BEGIN
		SELECT @HAKETTIGI_IZIN_SURESI = 20
		SELECT @IZIN_ACIKLAMASI = @IZIN_ACIKLAMASI + '+50 YAŞ HAKKI'
	END

	-----------------------------------------------------------------------------------
	-- 18 YASINDAN KUCUK ISE EN AZ 20 GUN IZIN HAKKI VERILIYOR
	-----------------------------------------------------------------------------------
	SELECT @YAS18_TARIHI=Convert(Varchar(2),@BUGUNKU_AY)
		     + '/' + Convert(Varchar(2),@BUGUNKU_GUN)
		     + '/' + Convert(Varchar(4),@BUGUNKU_YIL - 18)
	IF @PRS_DOGUM_TARIHI >= @YAS18_TARIHI AND @HAKETTIGI_IZIN_SURESI < 20
	BEGIN
		SELECT @HAKETTIGI_IZIN_SURESI = 20
		SELECT @IZIN_ACIKLAMASI = @IZIN_ACIKLAMASI + '+18 YAŞ HAKKI'
	END

	-----------------------------------------------------------------------------------
	-- HESAPLANAN IZIN SURESI KAYDEDILIYOR
	-----------------------------------------------------------------------------------
	IF NOT EXISTS (SELECT * FROM PRS_IZIN WHERE PRS_NO=@PRS_NO AND PRS_IZIN_HAK_TARIHI=@HAK_TARIHI AND PRS_IZIN_KAYIT_EDEN='Sistem') 
		INSERT PRS_IZIN (PRS_NO, PRS_IZIN_HAK_TARIHI, PRS_IZIN_SURESI, PRS_IZIN_ACIKLAMASI, PRS_IZIN_KAYIT_EDEN)
			 VALUES (@PRS_NO, @HAK_TARIHI, @HAKETTIGI_IZIN_SURESI, @IZIN_ACIKLAMASI, 'Sistem')


	FETCH IZINCUR INTO @PRS_NO, @PRS_GIRIS_TARIHI, @HAK_TARIHI, @PRS_DOGUM_TARIHI, @CALISTIGI_YIL
END
CLOSE IZINCUR
DEALLOCATE IZINCUR
------------------------------------------------------------------------------------------
GO
 
Son düzenleme:
Katılım
3 Mayıs 2009
Mesajlar
1
Excel Vers. ve Dili
ms office 2007
Ayni prosedur saat icinde gecerli olurmu?
Bende saat takip programi yapmak istiyorum. Birkac gundur ugrasiyorum. Ama ozellikle saatleri toplatamadim. Yani is icin harcanan saatleri firmalara gore toplatacagim.Programlama dilinden pek anlamiyorum. Insallah basit bir sekilde access komutlari ile hal edebilirim.
 
Katılım
27 Aralık 2007
Mesajlar
20
Excel Vers. ve Dili
2005
Sn. seruz ilginiz için teşekkür ederim.
 
Üst