[我的英语很抱歉;)
我在互联网上咨询了很多,但是找不到解决方法
我必须创建带有函数的动态查询。如果表未链接,但在同一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
因为ANO
和TRIMESTRE
是字符串,所以需要将它们用'
引号引起来。
"HAVING (((DATOS_" & ANO & ".ANO)='" & ANO & "')" & _
" AND ((DATOS_" & ANO & ".TRIMESTRE)='" & TRIMESTRE & "'))"