【发布时间】:2016-04-06 23:34:43
【问题描述】:
我打开了一个新的 ADODB 连接,并设置了一个新记录集,该记录集在第一个字段中具有日期,在第二个字段中具有值。
- 01/01/2016
- 2016 年 2 月 1 日
- 04/01/2016
- 2016 年 5 月 1 日
所以我正在构建函数myfunction(mydate),它应该返回等于或小于(早于)mydate 的最大可用日期:
myfunction(mydate as date)
Dim CurrentDate as Date
Set rst = cn.Execute("SELECT * FROM tbl1 ORDER BY dates;")
CurrentDate = worksheetfunction.INDEX(rst.Fields(0),worksheetfunction.MATCH(CDate(CurrentDate),rst.Fields(0), 1))
myfunction = CurrentDate
end function
结果应该是
- myfunction("02/01/2016") = 02/01/2016
- myfunction("03/01/2016") = 02/01/2016
这适用于 excel 电子表格,但它会给出错误“无法获取 WorksheetFunction 的匹配属性”。有没有其他方法可以使用这个 Array 获得结果?
【问题讨论】:
-
您可以在 SQL 中使用 WHERE 子句吗?也许是TOP?
-
问题是recordset应该用于几个功能,所以我不能使用WHERE..这是我的代码的简短版本。
-
现在您只传递一个值(Fields(0) 作为 Match 的第二个参数,其中需要一个值数组,这可能就是抱怨的原因。
-
好的,但 '0' 表示第一列,
rst.Fields(0)不是数组吗? -
不,表示记录集当前行的第一个字段。