【发布时间】:2013-09-28 21:08:49
【问题描述】:
我希望我的函数打开表,并为记录计数 1 返回 1/1/2013,为记录计数 2 返回 1/2/2013 ... 对于记录计数 20 返回 1/20/2013。
到目前为止,我有以下代码,但它只返回 1/2/2013 并且我有 24 条记录: (我的记录数每个月会在 22 -30 之间变化)
Public Function DDate() As Date
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim icounter As Integer
Dim UpBound As Long
Set db = CurrentDb()
Set rs = db.OpenRecordset("tblDDate", dbOpenDynaset)
If Not (rst.BOF And rst.EOF) Then
rst.MoveFirst
UpBound = rs.RecordCount
Do Until rs.EOF = True
For icounter = 1 To UpBound
DDate = DateAdd("m", icounter, "1/1/2013")
rst.MoveNext
Next icounter
Loop
End If
rs.Close
db.Close
End Function
【问题讨论】:
-
你的表结构是什么样的?您是要遍历字段还是只想遍历行?您是否在 tblDDate 中有一个可以使用 GROUP BY 语句进行分组的日期字段?
-
我的表格不包含日期,我正在尝试向该表格添加日期字段。我想遍历行。字段计数将始终相同。所以如果记录/行 1 日期 = 1/1/2013 如果记录/行 2 日期 = 1/2/2013。我没有执行 30 if 语句,而是尝试遍历记录集。谢谢
-
你的回复对我来说没有意义。如果您没有任何日期字段,您怎么知道 Record1 的日期是 2013 年 1 月 1 日?
-
我可能没有正确执行此操作,我可能必须按照 John 的建议在查询中返回执行此操作。我想做的是创建一个新领域。一旦该字段在那里,循环遍历表,然后为每个记录添加 1 到该月的第一天。该表中有几个其他字段,包括一个 ID 字段。在我尝试在函数中执行此操作之前,我所拥有的是一个带有很长等式的生成表查询,该等式并不总是有效,因为每个月的记录数都在变化。
-
在我的生成表查询中,DDate: iif(ID = 1, 1/1/2013, iif(ID = 2, 1/2/2013, iif(ID = 3, 1/ 3/2013 ......)))。我认为必须有一种方法可以每月执行此操作,而无需手动更改。
标签: arrays loops ms-access vba record-count