【发布时间】:2020-03-03 19:09:01
【问题描述】:
我在整个数据库中使用了 2 个函数。我想知道是否可以“合并”两者以“缩短”我的代码。
Option Compare Database
Option Explicit
Dim strTaxR As String
Dim strYTDG As String
Public Function fncTRate(ByVal PEnd As Date) As Double
strTaxR = "SELECT TOP 1 [Tax Rate] As TRate FROM tblTax WHERE [Effective Date] <= #" & PEnd & "#" ORDER BY [Effective Date] DESC;"
With CurrentDb.OpenRecordset(strTaxR)
If Not (.BOF And .EOF) Then
fncTRate = .Fields("TRate")
End If
End With
End Function
Public Function fncYTDG(EmpN As Integer, PEnd As Date) As Double
strYTDG = "SELECT Sum([SGROSS]) As YTDG FROM qryYTD2 WHERE [PE] Between #" & DateSerial(Year(PEnd ), 1, "1") & "# And #" & PEnd & "# And [EID]=" & EmpN
With CurrentDb.OpenRecordset(strYTDG)
If Not (.BOF And .EOF) Then
fncYTDG = .Fields("YTDG")
End If
End With
End Function
压缩它会产生影响还是应该保持原样?
【问题讨论】:
-
如图所示,函数不能被合并,因为每个函数都会返回一个值到它被调用的地方。
-
关于问题标题 - 记录集基于一个 SELECT 查询并且只有一个。所以基本上答案是否定的。
-
拥有独立的功能才是正确的选择!不要复杂化:)
-
非常感谢大家的建议。