【问题标题】:Recordscount showing 1 even even WHERE criteria is an empty setRecordscount 显示 1 甚至 WHERE 标准是一个空集
【发布时间】:2019-07-07 20:08:05
【问题描述】:

下面的 SQL 语句和代码在显然应该为空时返回 aaa=1

> Private Sub Command1_Click()
>     strSql = "SELECT MAX(fromdate) from TipulimPricing   WHERE 1=2"
>     '****************************
>     CreateTheConnectionTargetTemplate
>     '**************************** '    objRecordset.MoveFirst
>     aaa = objRecordset.RecordCount
>     MyVal = objRecordset.Fields(0).Value
>     ' ****************************
>     ReleaseTheConnection
>     '**************************** End Sub

【问题讨论】:

  • when it should obviously be null - 确实如此。为了向您提供该空值,记录集中必须有一行。
  • 补充@GSerg 所说的,这是因为MAX() 函数。 MAX() 需要返回一个值。如果您改为使用SELECT fromdate FROM table WHERE 1=2,您将获得零记录,IIRC。

标签: vba vb6 ado


【解决方案1】:

在我看来,您要么使用 DAO 类型记录集,要么使用带有单个记录键集的 ADO。

计算记录数的方法是创建一个带有计数器的循环:

Do while objRecordset.EOF = False
    counter = counter +1
    objRecordset.moveNext
Loop 

【讨论】:

  • 您确实错过了重点:SQL 语句将返回一行(无论数据库中有多少记录与 where 子句匹配,因为聚合函数 max() - 对于 min ()、sum()、count() 等 ....)
  • 好吧,count() 会产生一个实际的零。
  • @nabuchodonossor 哦,你是对的。我看错标题了。尽管正如 itsLex 所说,它仍然可以工作,因为如果没有匹配标准,那么结果记录将是 EOF。
猜你喜欢
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 2018-03-15
  • 1970-01-01
相关资源
最近更新 更多