sql—使用动态表的内部联接(vba)执行动态查询时出错

6yjfywim  于 2021-08-09  发布在  Java
关注(0)|答案(0)|浏览(287)

我为我的英语感到抱歉;)
我在网上查阅了很多资料,但找不到解决办法
我必须用一个函数创建一个动态查询。如果表没有链接,但在同一bbdd access 2016中,则此代码对我有效。但我需要他们在另一个bbdd。你能帮助我吗?
它告诉我数据丢失了。
查询在access中进行,并在vba中修改,添加变量。
ano和trimestre是数字,其他是文本。

  1. Public Function PRUEBA_INNER(ByVal TRIMESTRE As String,ByVal ANO As String) As Boolean
  2. Dim db As DAO.Database
  3. Dim rs As DAO.Recordset
  4. Dim StrSQL As String
  5. Set db = CurrentDb
  6. StrSQL = "SELECT " & _
  7. "PERSONAS.NOMBRE, " & _
  8. "PERSONAS.MAIL, " & _
  9. "PERSONAS.[NUMR_COLEG], " & _
  10. "DATOS_" & ANO & ".ANO, " & _
  11. "DATOS_" & ANO & ".TRIMESTRE " & _
  12. "FROM " & _
  13. "PERSONAS " & _
  14. "INNER JOIN DATOS_" & ANO & " " & _
  15. "ON PERSONAS.[NUMR_COLEG] = DATOS_" & ANO & ".NUMR_COLEG " & _
  16. "GROUP BY " & _
  17. "PERSONAS.NOMBRE, " & _
  18. "PERSONAS.MAIL, " & _
  19. "PERSONAS.[NUMR_COLEG], " & _
  20. "DATOS_" & ANO & ".ANO, " & _
  21. "DATOS_" & ANO & ".TRIMESTRE " & _
  22. "HAVING (((DATOS_" & ANO & ".ANO)=" & ANO & ")" & _
  23. " AND ((DATOS_" & ANO & ".TRIMESTRE)=" & TRIMESTRE & "))"
  24. Set rs = db.OpenRecordset(StrSQL)
  25. Do Until rs.EOF
  26. debug.print rs!nombre
  27. rs.MoveNext
  28. Loop
  29. rs.Close: Set rs = Nothing
  30. db.Close: Set db = Nothing
  31. End Function

调试打印:

  1. SELECT
  2. PERSONAS.NOMBRE,
  3. PERSONAS.MAIL,
  4. PERSONAS.[NUMR_COLEG],
  5. DATOS_2018.ANO,
  6. DATOS_2018.TRIMESTRE
  7. FROM
  8. PERSONAS
  9. INNER JOIN
  10. DATOS_2018
  11. ON
  12. PERSONAS.[NUMR_COLEG] = DATOS_2018.NUMR_COLEG
  13. GROUP BY
  14. PERSONAS.NOMBRE,
  15. PERSONAS.MAIL,
  16. PERSONAS.[NUMR_COLEG],
  17. DATOS_2018.ANO,
  18. DATOS_2018.TRIMESTRE
  19. HAVING (((DATOS_2018.ANO)=2018) AND ((DATOS_2018.TRIMESTRE)=2))

错误消息:

  1. nº 3061
  2. Few parameters.
  3. 1 expected

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题