IErrorInfo.GetDescription在SQL查询上失败,并显示E_FAIL(0x80004005)

时间:2018-08-02 02:29:32

标签: vb.net

这是我的查询

SELECT TOP 1 MAX(CAST(Id AS int)) , Ddate, Name FROM WonPrize WHERE Ddate=@Ddate GROUP BY Id,Ddate,Name

查询在VB.NET上给我一个错误代码。

IErrorInfo.GetDescription failed with E_FAIL(0x80004005)

我认为自己编写的语法没有错误

我试图显示MAX ID,但MAX(Id)没有显示2号ID,因此我尝试使用此MAX(CAST(Id AS int))。它给我一个错误代码。 我应该怎么做?

我正在使用oledb。

1 个答案:

答案 0 :(得分:0)

由于VB.NET上的oledb错误,我只是更改了语法。

发件人:

SELECT TOP 1 MAX(CAST(Id AS int)) , Ddate, Name FROM WonPrize WHERE Ddate=@Ddate GROUP BY Id,Ddate,Name

收件人:

SELECT TOP 1 Id, Ddate, Name FROM WonPrize WHERE Ddate=@Ddate AND Id=(SELECT MAX(Id) FROM WonPrize)

这可以解决我的问题。

oledb不能与使用MAX(value)和MIN(value)的第二和第三列值一起使用。我决定将其放在WHERE语句中,因为MAX和MIN仅适用于单个值的oledb。而且我认为First语法仅适用于SQLClient,不适用于OLEDB。