我们如何根据日期和员工ID与商店程序显示报告。 [英] How can we display report according to date and employee id with store procedure.

查看:57
本文介绍了我们如何根据日期和员工ID与商店程序显示报告。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello Everyone,

我为时间表创建了报告。这个运行完美,但我得到了一个发行版。

假设2016年12月1日
我填写时间表和

13 / 1/2016我已填写时间表。

如果我看到2016年1月13日的报告,那么它将完美运作,但当我选择2016年12月1日的报告时记录和13/1/2016所有记录显示。

我将发送报告aspx页面和存储过程。

plz帮助这个解决方案。





Hello Everyone,
I have created report for timesheet. This run perfect but I get one issu in that.
suppose
on 12/1/2016 I have fill up timesheet and
on 13/1/2016 i have fill up timesheet.
if i saw the report for 13/1/2016 then it will work perfectly,but when i select report for 12/1/2016 that time this date record and 13/1/2016 all record display.
I will send report aspx page and store procedure for it.
plz help for this solution.


ET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[DailyTimeSheet_BasicReport]
	@StartDate		varchar(50) = '',
	@EmployeeId		INT = 0
	
AS 

	DECLARE @strQuery	varchar(5000)
	DECLARE @strCondition varchar(5000)
	DECLARE @strOrderBy	varchar(500)
	
	SET @strCondition = ' WHERE 1 = 1 '
	
	SET @strQuery=' SELECT CONVERT(VARCHAR, T.CreateDateTime,105) AS [LoginDate],
		
		 E.FullName,
	     T.TaskTimeIn,RIGHT(CONVERT(VARCHAR,T.TaskTimeIn,100),7) AS [TimeIn],
		 T.TaskTimeOut,RIGHT(CONVERT(VARCHAR,T.TaskTimeOut,100),7) AS [TimeOut],
		 T.TaskDescription,
	     CONVERT(varchar(5), DATEADD(minute, DATEDIFF(minute, TaskTimeIn, ISNULL(TaskTimeOut,SWITCHOFFSET(SYSDATETIMEOFFSET(), ''+05:30''))), 0), 114) AS [TimeSpent]  ,
		 DATEDIFF(minute, TaskTimeIn, ISNULL(TaskTimeOut,SWITCHOFFSET(SYSDATETIMEOFFSET(), ''+05:30''))) AS [TimeSpentMinutes],
		E.EmployeeId
	FROM  
		DailyTimeSheetTrackers T
		INNER JOIN Employees E ON E.EmployeeId = T.EmployeeId
	'
	
	if (@StartDate <> '')
		SET @strCondition = @strCondition + ' AND CAST(CONVERT(VARCHAR ,T.CreateDateTime,101) AS DATE) >= CONVERT(VARCHAR ,'''+ @StartDate +''',101) '
	

	if (@EmployeeId >0)
		SET @strCondition = @strCondition + ' AND E.EmployeeId = ' + CAST(@EmployeeId AS varchar(10))
	
	
	SET @strOrderBy = ' Order BY T.CreateDateTime,E.EmployeeId ' 
	
	PRINT @strQuery + @strCondition + @strOrderBy
	EXECUTE (@strQuery + @strCondition + @strOrderBy)

推荐答案

您的输入日期是英国日期格式使用CONVERT(VARCHAR,T.CreateDateTime,103)

进行所有日期比较。

它将起作用。
your input date is British date format use CONVERT(VARCHAR, T.CreateDateTime,103)
for all date comparison.
its will be work.


这篇关于我们如何根据日期和员工ID与商店程序显示报告。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆