2015-05-13 30 views
1

我試圖將參數插入派生表中時出現問題,派生表是vb.net應用程序中的表適配器填充查詢的一部分。vb.net表適配器中使用派生錶轉換失敗

當我嘗試在vb.net中通過數據集設計器的預覽窗口使用查詢或在數據集設計器中使用datatableadapter.fill方法時,出現「轉換日期和/或字符串時間時轉換失敗」我的應用程序。

SELECT Date, SUM(RegHours) AS RegTotal, SUM(OTHours) AS OTTotal, SUM(VacHours) AS VacTotal, SUM(SickHours) AS SickTotal 

FROM (SELECT EmployeeId, Date, RegHours, OTHours, (CASE WHEN TaskId=4 THEN RegHours ELSE NULL END) AS VacHours, (CASE WHEN TaskId=5 THEN RegHours ELSE NULL END) AS SickHours FROM TimeEntry 

WHERE ([email protected]) AND (Date>[email protected])) AS SubTable 

GROUP BY Date 

當我只有@EmployeeId參數,因此問題與日期轉換有關時,該查詢完美工作。

SELECT EmployeeId, Date, RegHours, OTHours, (CASE WHEN TaskId=4 THEN RegHours ELSE NULL END) AS VacHours, (CASE WHEN TaskId=5 THEN RegHours ELSE NULL END) AS SickHours 

FROM TimeEntry 

WHERE ([email protected]) AND (Date>[email protected]) 

任何幫助將不勝感激:如果我這樣做只是派生表部分

查詢也能正常工作!

+0

參數是否聲明爲日期?你如何填寫參數值? –

+0

它被填充以下代碼,其中startdate是DateTime數據類型。 'Me.PayrollTimeSummaryTableAdapter.Fill(Me.RRAPPSDataSet.PayrollTimeSummary,254,startdate)'。日期列在SQL Server中配置爲日期類型。 –

回答

0

我能夠通過在表定義中添加VacHours和StatHours作爲計算列,然後選擇而不需要派生表來解決此問題。

SELECT Date, SUM(RegHours) AS TotalReg, SUM(OTHours) AS TotalOT, SUM(VacHours) AS TotalVac, SUM(StatHours) AS TotalStat 
FROM TimeEntry 
WHERE (EmployeeId = @EmployeeId) AND (Date >= @StartDate) AND (Date <= @EndDate) 
GROUP BY Date 

我懷疑我可能還是不正確的數據類型來填充或正確鑄造但這並提供給我一個簡單的解決方案。