我已经创建了一个用于查询的自定义函数。该函数打开一个小表(50个单元格),并根据查找结果将日期添加到查询中的一个列中。不过,函数执行得太慢了,我认为这可能是因为我打开并关闭了查询中每个记录的记录集。是否有办法避免每次调用函数时打开记录集并关闭记录集?我怀疑这违背了最初使用函数的目的,但我希望有人有一个解决方案。
在原始帖子之后添加.
根据下面的结构,我需要将表中的描述输入到查询中的CustomFunctionField中,日期字段是连接。表保存日期范围,查询在日期范围内有特定日期。
-查询- ID \##.
-表-- ID = StartDate \ EndDate \\说明
以下是守则:
Public Function SelectTerm(DateFull)
Dim rstin As DAO.Recordset
Dim dx As Date
Dim dterm As String
Set rstin = CurrentDb.OpenRecordset("tblTerms", dbOpenSnapshot)
dx = "1/1/2000"
If Not rstin.EOF And Not rstin.BOF Then
Do Until rstin.EOF Or dx >= DateFull
dx = rstin.Fields("DateEnd")
rstin.MoveNext
Loop
rstin.MovePrevious
dterm = rstin.Fields("Description")
rstin.Close
End If
SelectTerm = dterm
End Function发布于 2012-11-13 17:35:37
使用关联子查询根据主表中的日期/时间字段DateFull查找来自DateFull的术语描述。
SELECT
y.DateFull,
(
SELECT TOP 1 [Description]
FROM tblTerms
WHERE DateEnd <= y.DateFull
ORDER BY DateEnd DESC
) AS term_description
FROM YourTable AS y;相关的子查询并不以出色的性能而为人所知。但是,这种方法应该比打开记录集并在行中移动的UDF快得多,直到找到所需的值为止。
https://stackoverflow.com/questions/13365258
复制相似问题