我一直在努力让报告正确显示 . 我想要实现的是我有预计工作时间的项目 . 员工记录他们的时间表条目,(开始\结束)日期和时间被保存到这个特定项目和员工的SQL表中,所以我想报告项目的预计小时数与员工真正花费的时间,这里是我正在用代码做的场景:
我有的表:
1项目表---> ProjectID,估算项目估算持续时间(小时)2-ProjectResources表---> ProjectID,ResourceID 3-Timesheet条目表---> Timesheetentry ID,ProjectID,UserID,StartDateTime,EndDateTime
我创建的内容如下:
1-I填充下拉列表,项目名称为文本,项目ID为值
2 - 在列表selectedIndexChanged事件中我查询以获取Project的所有资源,如下所示:
Dim TimesheetsTotalTime As Decimal = 0 Dim query As String =“SELECT resourceid FROM projectresources where projectID ='”&ProjectID&“'”Dim dt As DataTable = GetData(query)
对于x As Integer = 0 to dt.Rows.Count - 1 Dim resourceID As Integer resourceID = dt.Rows(x).Item(0)totalTimesheetTime = totalTimesheetTime GetTotalTimesheetsPerUser(ProjectID,resourceID)
下一步
专用共享函数GetTotalTimesheetsPerUser(ProjectID为整数,ResourceID为整数)为十进制Dim TimesheetsTotalTime为十进制= 0
Dim query As String = "SELECT timesheetid FROM timesheet where projectID='" & ProjectID & "' and userid='" & ResourceID & "'"
Dim dt As DataTable = GetData(query)
For x As Integer = 0 To dt.Rows.Count - 1
Dim TimesheetID As Integer
TimesheetID = dt.Rows(x).Item(0).ToString
TimesheetsTotalTime = TimesheetsTotalTime + GetTimeDifferenceForTask(TimesheetID)
Next
Return TimesheetsTotalTime
结束功能
私有共享函数GetTimeDifferenceForTask(timeSheetID As Integer)As Decimal Dim CountedHours As Decimal
Dim query As String = "SELECT StartTime, EndTime FROM Timesheet where TimesheetID='" & timeSheetID & "'"
Dim dt As DataTable = GetData(query)
If dt.Rows.Count > 0 Then
Dim startTime As DateTime = dt.Rows(0).Item(0)
Dim endTime As DateTime = dt.Rows(0).Item(1)
CountedHours = DateDiff(DateInterval.Hour, startTime, endTime)
Return CountedHours
End If
结束功能
每当我将最终数据添加到RadHTMLChart时,返回的时间都是所有用户的所有时间表条目的总数不正确 . 我得到的总共“13”小时而数字是13.5而另一个项目我得到“17”小时,而它应该是29 .
请指教,谢谢 .
1 回答
你得到13而不是13.5,因为
DateDiff
在DateInterval.Hour
中计算 . 要获得decimal
结果,您正在寻找将其更改为:至于获得23的结果时,预期29 ...确保您的输入是
datetime
而不仅仅是time
,如果结果相同 - 发布输入值以进行分析 .