Concatenar varios registros de un mismo campo en un resumen

Estoy intentando hacer un resumen de las valoraciones que los alumnos asistentes han hecho de unos cursos. Ya he promediado las notas medias, etc pero me gustaría concatenar el apartado "Observaciones" en el resumen final. Es decir, si un alumno ha escrito "Brillante", otro "Genial" y un tercero "Demasiado largo" quiero que en el resumen me salga "Brillante, Genial, Demasiado largo". Estoy intentándolo con una función llamada Observar a la que paso como parámetro el número del "Curso", un Long. La función es:

Option Compare Database
Option Explicit

Public Function Observar(Curso As Long) As String
Dim rst As New ADODB.Recordset
rst.Open "Select Observaciones From [Acciones formativas] where [Clave curso]='" & Curso & "'", CurrentProject.Connection, adOpenStatic, adLockReadOnly
Do Until rst.EOF
' If Observar = "" Then
If Len(Nz(Curso, "")) = 0 Then
Observar = rst.Fields(0)
Else
Observar = Observar & ";" & rst.Fields(0)
End If
rst.MoveNext
Loop
rst.Close
End Function

Pero cunado la pruebo en la ventana Inmediato me da el error: "No se ha definido el tipo definido por el usuario" en la instrucción "Dim rst...". El caso es que he mirado en Herramientas/Referencias y tengo activadas:

* Visual Basic for Applications

* Microsoft Acces 15.0 Object Library

* OLE Automation

* Microsoft Office 15.0 Access database Object Library

Ya no sé qué mirar... ¿Alguna sugerencia?

Josss

Respuesta
1

Ahora me cambia el mensaje de error y me dice "El uso de la palabra clave New no es válido" en la misma instrucción (bueno, la modificada...)

Josss

Al final, tras consultar en la web, donde he leído que ADO era más moderna que DAO y por tanto más potente, etc (no sé si es así, pero es lo que he leído...) lo he hecho al revés. He activado las referencias de ADO y ya funciona.

1 respuesta más de otro experto

Respuesta
2

Tu problema es que no tienes referenciada la librería para ADO (Microsoft ActiveX Data Objects x.x, creo que es, porque no trabajo con ADO).

Si te da lo mismo usar DAO, que ya tienes las referencias activadas, puedes cambiar las primeras lineas de tu función por estas otras:

Public Function Observar(Curso As Long) As String
Dim rst As New DAO.Recordset
Set rst=CurrentDb.OpenRecordset("Select Observaciones From [Acciones formativas] where [Clave curso]=" & Curso)
Do Until rst.EOF

...

Un saludo!


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas