Sql 在Access查询中调用VBA函数
我正在尝试将8个不同查询的结果合并回一个查询中。所有要使用的查询都是查询中的查询中的查询。这8个系列共4个查询将根据球员打了多少轮高尔夫球而将他们分开。每个系列中的最后一个查询计算每个玩家的确切障碍 我试图做的事情可能不可能与我使用的代码 功能代码如下:Sql 在Access查询中调用VBA函数,sql,ms-access-2013,Sql,Ms Access 2013,我正在尝试将8个不同查询的结果合并回一个查询中。所有要使用的查询都是查询中的查询中的查询。这8个系列共4个查询将根据球员打了多少轮高尔夫球而将他们分开。每个系列中的最后一个查询计算每个玩家的确切障碍 我试图做的事情可能不可能与我使用的代码 功能代码如下: 函数EHC(PlayerID为Long)为Long Dim queT20作为记录集 Dim que3to6作为记录集 Dim que7or8作为记录集 Dim QUE9或10作为记录集 Dim QUE11或12作为记录集 Dim QUE13或1
函数EHC(PlayerID为Long)为Long
Dim queT20作为记录集
Dim que3to6作为记录集
Dim que7or8作为记录集
Dim QUE9或10作为记录集
Dim QUE11或12作为记录集
Dim QUE13或14作为记录集
Dim QUE15或16作为记录集
Dim QUE17或18作为记录集
Dim QUE19或20作为记录集
Set queT20=CurrentDb.OpenRecordset(“Top20Count”)
queT20.FindFirst(“PlayerID=“&PlayerID”)
如果20![PlayerID]>=19那么
Set que19or20=CurrentDb.OpenRecordset(“P_19or20ExactHC”)
que19or20.FindFirst(“PlayerID=“&PlayerID”)
ExactHC=Que19或20.ExactHC
问题19或20.关闭
设置que19or20=无
艾尔塞夫·奎特20![PlayerID]>=17那么
Set que17or18=CurrentDb.OpenRecordset(“P_17or18ExactHC”)
que17or18.FindFirst(“PlayerID=“&PlayerID”)
ExactHC=Que17或18.ExactHC
Que17或18.关闭
设置que17or18=无
艾尔塞夫·奎特20![PlayerID]>=17那么
Set que15or16=CurrentDb.OpenRecordset(“P_15or16ExactHC”)
que15or16.FindFirst(“PlayerID=“&PlayerID”)
ExactHC=Que15或16.ExactHC
Que15或16.关闭
设置que15or16=无
艾尔塞夫·奎特20![PlayerID]>=17那么
Set que13or14=CurrentDb.OpenRecordset(“P_13or14ExactHC”)
que13or14.FindFirst(“PlayerID=“&PlayerID”)
ExactHC=Que13或14.ExactHC
Que13或14.关闭
设置que13or14=无
艾尔塞夫·奎特20![PlayerID]>=17那么
Set que11or12=CurrentDb.OpenRecordset(“P_11or12ExactHC”)
que11or12.FindFirst(“PlayerID=“&PlayerID”)
ExactHC=que11或12.ExactHC
问题11或12.关闭
设置que11or12=Nothing
艾尔塞夫·奎特20![PlayerID]>=17那么
Set que9or10=CurrentDb.OpenRecordset(“P_9or10ExactHC”)
que9or10.FindFirst(“PlayerID=“&PlayerID”)
ExactHC=Que9或10.ExactHC
问题9或10。关闭
设置que9or10=无
艾尔塞夫·奎特20![PlayerID]>=17那么
Set que7or8=CurrentDb.OpenRecordset(“P_7or8ExactHC”)
que7or8.FindFirst(“PlayerID=“&PlayerID”)
ExactHC=que7or8.ExactHC
问题7或8.关闭
设置que7or8=无
艾尔塞夫·奎特20![PlayerID]>=17那么
Set que3to6=CurrentDb.OpenRecordset(“P_3to6ExactHC”)
que3to6.FindFirst(“PlayerID=“&PlayerID”)
ExactHC=que3to6.ExactHC
问题3到6。结束
将que3to6设置为空
其他:ExactHC=0
如果结束
问题20.结束
设置queT20=无
端函数
以及SQL查询语句:
SELECT PlayerInfo.PlayerID, PlayerInfo.Display, EHC([PlayerInfo]![PlayerID]) AS ExactHandicap
FROM ((((((((PlayerInfo INNER JOIN Top20Count ON PlayerInfo.PlayerID = Top20Count.PlayerID)
INNER JOIN P_3to6ExactHC ON PlayerInfo.PlayerID = P_3to6ExactHC.PlayerID)
INNER JOIN P_7or8ExactHC ON PlayerInfo.PlayerID = P_7or8ExactHC.PlayerID)
INNER JOIN P_9or10ExactHC ON PlayerInfo.PlayerID = P_9or10ExactHC.PlayerID)
INNER JOIN P_11or12ExactHC ON PlayerInfo.PlayerID = P_11or12ExactHC.PlayerID)
INNER JOIN P_13or14ExactHC ON PlayerInfo.PlayerID = P_13or14ExactHC.PlayerID)
INNER JOIN P_15or16ExactHC ON PlayerInfo.PlayerID = P_15or16ExactHC.PlayerID)
INNER JOIN P_17or18ExactHC ON PlayerInfo.PlayerID = P_17or18ExactHC.PlayerID)
INNER JOIN P_19or20ExactHC ON PlayerInfo.PlayerID = P_19or20ExactHC.PlayerID
WHERE (((PlayerInfo.Display)=True));
当我尝试运行此操作时,我在表达式中得到一条错误消息,即未定义函数“EHC”
我还尝试了使用IIF或SWITCH语句替换函数调用的相同查询
我大致基于中文章中函数调用的思想
任何帮助都将不胜感激,因为我只有这个问题需要解决,我希望我将接近完成这个自我强加的噩梦。我在这里看到几个问题:
Option Explicit
语句公共函数
结束函数
语句之前分配EHC=ExactHC
EHC()
函数将在计算确切障碍的过程中从其他查询中提取所需的信息谢谢您的意见。我现在在
ExactHC=que19or20.Exact\u HC
行上发现一个编译错误:找不到方法或数据成员。我为变量ExactHC
添加了一个模糊语句,因为我在修复您指出的其他内容时意识到没有。它正在查看的查询的SQL语句是SELECT P_19or20RforHC.PlayerID,Avg(P_19or20RforHC.PlayedTo)为[Avg],Round([Avg]*0.93,1)为P_19or20RforHC组中P_19or20RforHC.PlayerID顺序为P_19orhc.PlayerID代码>。有什么想法吗?我已经解决了代码的问题,你对连接的看法是正确的。代码应为ExactHC=que19or20![Exact_HC]
。但是我仍然得到一个未定义的函数
错误。在解决这个问题的过程中,我提出了一些其他代码,但基于相同的原理,从头开始进行计算,运行良好,速度很快,但几秒钟后重新运行,不会停止。我可能会把这个问题作为另一个问题贴出来。