Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Access VBA-如何在SQL字符串中使用用户定义的函数?_Sql_Vba_Ms Access 2007 - Fatal编程技术网

Access VBA-如何在SQL字符串中使用用户定义的函数?

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语句包含拼写错误或缺

我试图在Access 2007 VBA中创建一个参数查询,该查询从用户表单中获取两个输入参数,并根据我在代码其他地方编写的公共函数结果返回一个派生字段值。该函数确定计算结果字段的值,该字段是从基础表[HomeTeam]、[AwayTeam]、[HomeGoals]、[AwayGoals]中4个字段的值派生而来的

如果我通过即时窗口调试代码,并将SQL字符串粘贴到Access SQL窗口中,则查询可以正常运行,但不会从VBA运行。生成的错误是:

运行时错误3141。SELECT语句包含拼写错误或缺少的保留字或参数名称,或者标点符号不正确

我不想直接在Access中运行查询,因为参数[season]是一个表变量

有人知道我是否可以以及如何在SQL字符串中调用VBA中的用户定义函数吗? 我不确定这是否只是一个语法问题

代码:

功能:

为什么这在Access中有效,而在VBA中无效


任何帮助都将不胜感激。

在计算字符串之前,请尝试在字符串内部展开表单值:

"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]