【发布时间】:2015-02-19 05:32:36
【问题描述】:
我在 ASP.NET 中创建了一个 DataSet,并将默认的 Fill 查询替换为以下 SQL 语句:
SELECT Resolved_Request.ResolvedReqID,
In_Progress_Request.DateAssigned, Resolved_Request.DateResolved, Fix(((DATEDIFF('n',
In_Progress_Request.DateAssigned, Resolved_Request.DateResolved) / 60 / 24))) & ' days, ' & ((DATEDIFF('n', In_Progress_Request.DateAssigned,
Resolved_Request.DateResolved) / 60) Mod 24) & ' hours and ' & (DATEDIFF('n', In_Progress_Request.DateAssigned, Resolved_Request.DateResolved) Mod 60)
& ' minutes' AS [Time Spent Resolving], Resolved_Request.SpecialNotes, Resolved_Request.ResolutionSatisfaction, Resolved_Request.RequestID,
Request.RequestID
FROM ((Resolved_Request INNER JOIN
Request ON Resolved_Request.RequestID = Request.RequestID) INNER JOIN
In_Progress_Request ON Request.RequestID = In_Progress_Request.RequestID)
ORDER BY Resolved_Request.ResolvedReqID
这是一个非常混乱的语句,但主要关注的是查询的 Fix() 部分,它包含 3 个 DateDiff 函数,计算两个字段之间的时间,以天为单位,然后是小时,然后是分钟。我在这里使用 MS Access 语法,因为我正在查询的 DB 是 Access DB 文件。我的问题是,每当我执行查询时,我都会得到:
这只是一个警告,一旦我单击“确定”,查询就会执行,我会得到我需要的确切结果。这在查询生成器中从来都不是问题,但是到了在我的数据集中创建查询的时候,因为数据集拒绝正确填充出现错误。当我尝试将查询添加到我的数据集时收到此错误消息。
SQL 保留在查询中,因为这只是一个警告,但是在我的查询中通过 JOIN 命令添加的所有额外字段都不会显示在数据集中,我假设是因为它有那个错误。
我该如何解决这个问题?为什么它不能识别“Mod”,但查询执行没有错误并给我正确的输出?如何让它完全忽略警告并将字段添加到我的数据集中?
【问题讨论】:
-
我怀疑,像
nz(),mod是.NET 数据访问类不支持的内置函数。您可以运行一些简单的测试来找出答案。您可以尝试使用诸如 CInt() 之类的数学函数来模拟mod的行为。抱歉,这里有一些想法,但没有真正的解决方案。
标签: asp.net ms-access dataset warnings modulus