Access VBA-如何在SQL字符串中使用用户定义的函数?
我试图在Access 2007 VBA中创建一个参数查询,该查询从用户表单中获取两个输入参数,并根据我在代码其他地方编写的公共函数结果返回一个派生字段值。该函数确定计算结果字段的值,该字段是从基础表[HomeTeam]、[AwayTeam]、[HomeGoals]、[AwayGoals]中4个字段的值派生而来的 如果我通过即时窗口调试代码,并将SQL字符串粘贴到Access SQL窗口中,则查询可以正常运行,但不会从VBA运行。生成的错误是: 运行时错误3141。SELECT语句包含拼写错误或缺少的保留字或参数名称,或者标点符号不正确 我不想直接在Access中运行查询,因为参数[season]是一个表变量 有人知道我是否可以以及如何在SQL字符串中调用VBA中的用户定义函数吗? 我不确定这是否只是一个语法问题 代码: 功能: 为什么这在Access中有效,而在VBA中无效Access VBA-如何在SQL字符串中使用用户定义的函数?,sql,vba,ms-access-2007,Sql,Vba,Ms Access 2007,我试图在Access 2007 VBA中创建一个参数查询,该查询从用户表单中获取两个输入参数,并根据我在代码其他地方编写的公共函数结果返回一个派生字段值。该函数确定计算结果字段的值,该字段是从基础表[HomeTeam]、[AwayTeam]、[HomeGoals]、[AwayGoals]中4个字段的值派生而来的 如果我通过即时窗口调试代码,并将SQL字符串粘贴到Access SQL窗口中,则查询可以正常运行,但不会从VBA运行。生成的错误是: 运行时错误3141。SELECT语句包含拼写错误或缺
任何帮助都将不胜感激。在计算字符串之前,请尝试在字符串内部展开表单值:
"SELECT [Date], [HomeTeam], [AwayTeam], [HomeGoals], [AwayGoals], Result([HomeTeam], [AwayTeam], [HomeGoals], [AwayGoals]) AS Result" & _
"FROM [" & [season] & "]" & _
"GROUP BY [Date], [HomeTeam], [AwayTeam], [HomeGoals], [AwayGoals], Result([HomeTeam], [AwayTeam], [HomeGoals], [AwayGoals])" & _
"HAVING ((([" & [season] & "].HomeTeam) = '" & [Forms]![frmClubProfile]![comboTeam] & "'")) Or ((([" & [season] & "].AwayTeam) = '" & [Forms]![frmClubProfile]![comboTeam] & "'))" & _
"ORDER BY [Date];"
正在扩展的值:
[Forms]![frmClubProfile]![comboTeam]
假设comboTeam是字符串,如果是数字,则跳过单引号
"SELECT [Date], [HomeTeam], [AwayTeam], [HomeGoals], [AwayGoals], Result([HomeTeam], [AwayTeam], [HomeGoals], [AwayGoals]) AS Result" & _
"FROM [" & [season] & "]" & _
"GROUP BY [Date], [HomeTeam], [AwayTeam], [HomeGoals], [AwayGoals], Result([HomeTeam], [AwayTeam], [HomeGoals], [AwayGoals])" & _
"HAVING ((([" & [season] & "].HomeTeam) = '" & [Forms]![frmClubProfile]![comboTeam] & "'")) Or ((([" & [season] & "].AwayTeam) = '" & [Forms]![frmClubProfile]![comboTeam] & "'))" & _
"ORDER BY [Date];"
[Forms]![frmClubProfile]![comboTeam]