在VB ASP.Net中获取具有时差计数的报表的SQL数据

在VB ASP.Net中获取具有时差计数的报表的SQL数据,sql,vb.net,charts,report,Sql,Vb.net,Charts,Report,我一直在努力使报告正确显示。我试图实现的是,我有一个估计工作时间的项目。员工记录他们的时间表条目,(开始\结束)日期和时间会保存到此特定项目和员工的SQL表中,因此我想根据员工实际花费的时间报告项目的预计预设小时数,下面是我使用代码所做的场景: 我的表格如下: 1-项目表--->ProjectID,估算项目估算工期(小时) 2-ProjectResources表-->ProjectID,ResourceID 3-时间表条目表--->Timesheetentry ID、ProjectID、User

我一直在努力使报告正确显示。我试图实现的是,我有一个估计工作时间的项目。员工记录他们的时间表条目,(开始\结束)日期和时间会保存到此特定项目和员工的SQL表中,因此我想根据员工实际花费的时间报告项目的预计预设小时数,下面是我使用代码所做的场景:

我的表格如下:

1-项目表--->ProjectID,估算项目估算工期(小时) 2-ProjectResources表-->ProjectID,ResourceID 3-时间表条目表--->Timesheetentry ID、ProjectID、UserID、StartDateTime、EndDateTime

我创建的内容如下:

1-I使用项目名称作为文本,项目ID作为值填充下拉列表

2-在selectedIndexChanged事件列表中,我查询以获取项目的所有资源,如下所示: Dim TimesheetsTotalTime为十进制=0 Dim query As String=“从projectresources中选择resourceid,其中projectID=”&projectID&“ Dim dt As DataTable=GetData(查询)

对于x作为整数=0到dt.Rows.Count-1 将resourceID设置为整数 resourceID=dt.行(x).项(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
端函数 私有共享函数GetTimeDifferenceTorTask(timeSheetID为整数)为十进制 以十进制计算的小时数

    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


请告知,谢谢。

您得到的是13而不是13.5,因为您的
DateDiff
是在
DateInterval.Hour
中计算的。要获取您要查找的
十进制
结果,请将其更改为:

CountedHours = DateDiff(DateInterval.Minute, startTime, endTime) / 60

至于预期结果为17,而预期结果为29…请确保您的输入是
datetime
,而不仅仅是
time
,如果结果相同,请发布输入值进行分析。

谢谢,这解决了问题,您认为我创建报告的方式正确吗?我对图表和馅饼还不熟悉,一般来说,我对报道还不熟悉,而且有点难以应付it@HK正确是一个相对的术语…我不能说它是否正确。如果是我,我将创建一个SQL存储过程,它提供您想要的所有数据,这些数据已经格式化并准备就绪,然后作为
RadHtmlChart
SqlDataSource
执行该过程。不需要所有代码,因为数据库可以为您完成这些工作。请参见:中的示例,并注意没有代码隐藏。查看
部分。