sql - 使用内部联接 (VBA) 对动态表执行动态查询时出错
问题描述
对不起我的英语;)
我在互联网上咨询了很多,但我找不到解决方案
我必须创建一个带有函数的动态查询。如果表未链接,但在同一个 bbdd ACCESS 2016 中,则此代码对我有用。但我需要它们在另一个 bbdd 中。你能帮助我吗?
它返回给我数据丢失。
查询是在访问中进行的,并在 vba 中进行修改,添加变量。
Ano 和 Trimestre 是数字,其他是文本。
Public Function PRUEBA_INNER(ByVal TRIMESTRE As String,ByVal ANO As String) As Boolean
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim StrSQL As String
Set db = CurrentDb
StrSQL = "SELECT " & _
"PERSONAS.NOMBRE, " & _
"PERSONAS.MAIL, " & _
"PERSONAS.[NUMR_COLEG], " & _
"DATOS_" & ANO & ".ANO, " & _
"DATOS_" & ANO & ".TRIMESTRE " & _
"FROM " & _
"PERSONAS " & _
"INNER JOIN DATOS_" & ANO & " " & _
"ON PERSONAS.[NUMR_COLEG] = DATOS_" & ANO & ".NUMR_COLEG " & _
"GROUP BY " & _
"PERSONAS.NOMBRE, " & _
"PERSONAS.MAIL, " & _
"PERSONAS.[NUMR_COLEG], " & _
"DATOS_" & ANO & ".ANO, " & _
"DATOS_" & ANO & ".TRIMESTRE " & _
"HAVING (((DATOS_" & ANO & ".ANO)=" & ANO & ")" & _
" AND ((DATOS_" & ANO & ".TRIMESTRE)=" & TRIMESTRE & "))"
Set rs = db.OpenRecordset(StrSQL)
Do Until rs.EOF
debug.print rs!nombre
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
End Function
调试打印:
SELECT
PERSONAS.NOMBRE,
PERSONAS.MAIL,
PERSONAS.[NUMR_COLEG],
DATOS_2018.ANO,
DATOS_2018.TRIMESTRE
FROM
PERSONAS
INNER JOIN
DATOS_2018
ON
PERSONAS.[NUMR_COLEG] = DATOS_2018.NUMR_COLEG
GROUP BY
PERSONAS.NOMBRE,
PERSONAS.MAIL,
PERSONAS.[NUMR_COLEG],
DATOS_2018.ANO,
DATOS_2018.TRIMESTRE
HAVING (((DATOS_2018.ANO)=2018) AND ((DATOS_2018.TRIMESTRE)=2))
错误信息:
nº 3061
Few parameters.
1 expected
解决方案
推荐阅读
- kubernetes - 使用 Google Cloud Composer 在单独的计算实例上运行 python 进程的最佳方法是什么?
- windows - 本地计算机上的 Postgres 9.5 服务停止然后启动
- r - 是否有可移植的替代 registerDoMC?
- microsoft-graph-api - 当我尝试访问“me/licenseDetails”时,Microsoft Graph API 返回 404
- php - 如何使用 SQL 搜索查询
- android - 手指在自定义视图上时获取 xy 坐标
- scala - 有没有办法编写合并查询以从文件中删除 null 并在从文件中提取后在带有过滤器的 scala 代码中使用?
- reactjs - react js项目的导航栏中没有正确显示品牌标志?
- java - 有没有办法从不同的方法访问数组?
- amazon-web-services - 有没有办法从 cloudwatch 检查 EBS 卷上剩余的磁盘空间?