Concatenar campos en un subinforme

22/01/2013 - 08:56 por Toni | Informe spam
Buenas de nuevo,

Trabajo con Acces 2007, y sigo con mis problemillas en este caso tengo la siguiente situación:

PETICIONES TABLAPUENTE MOTIVOS
IdPeticiones - IdPeticion
IdMotivo IdMotivo
NombreMotivo

En un subinforme, necesito, para cada IdPeticiones, crear una consulta que lea todos los campos de PETICIONES y agrupe, en un campo, todos los NOMBREMOTIVO del registro. Es decir:

IdPeticiones: 57
FechaPeticion: ...
...
CampoConcatenado: "Pendiente de pago, Fuera de terminio, No cumple edad"

Cada registro así elaborado, lo mostraría en el subinforme de manera continua.

Espero haberme explicado. Muchas gracias.

Preguntas similare

Leer las respuestas

#6 Toni
23/01/2013 - 09:30 | Informe spam
Jose Mª,

Me voy acercando a la solución:

He creado la siguiente función pública en un módulo:

Public Function EncadenarMotius(Condicio As Integer) As String

Dim rs As Recordset
Dim sCadena As String

rs.OpenRecordset ("SELECT Motius.NomMotiu FROM Motius " & _
"INNER JOIN TPMotius ON Motius.IdMotiu = TPMotius.IdMotius " & _
"WHERE (TPMotius.IdPeticio) = " & Condicio)

sCadena = ""

rs.MoveFirst

Do Until rs.EOF = True
sCadena = sCadena & ", " & rs!NomMotiu
rs.MoveNext
Loop

EncadenarMotius = Right(sCadena, Len(sCadena) - 2)

End Function


Des de la consulta origen de datos del informe, creo el siguiente campo:

EncadenarMotius([IdPeticio]) AS MotiusJunts


Al ejecutar el informe, el código se para en el OpenRecordset, y me da un error '91 en tiempo de ejecución, variable de objeto o bloque With no establecido'.

La consulta SELECT funciona en el editor de consultas... Dónde está la equivocación?

Gracias



El dimarts 22 de gener de 2013 18:32:05 UTC+1, José Mª Fueyo va escriure:
Hola

Crea un campo calculado en la consulta origen de datos de tu informe



Salu2


José Mª Fueyo

[MS MVP Access]
Respuesta Responder a este mensaje
#7 José Mª Fueyo
23/01/2013 - 09:46 | Informe spam
Hola
¿Probaste en la ventada de inmediato a llamar la función, pasándola un valor conocido, para depurarla?

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#8 Toni
23/01/2013 - 10:19 | Informe spam
Sí, ya lo probé, y obtiene el error 91 que te he comentado...

Al dar el error de 'variable de objeto'... ¿Puede ser un error al crear el Recordset des de un módulo? Es suficiente con declarar la variable rs como recordset, y luego darle contenido con .OpenRecordset?

El dimecres 23 de gener de 2013 9:46:54 UTC+1, José Mª Fueyo va escriure:
Hola

¿Probaste en la ventada de inmediato a llamar la función, pasándola un valor conocido, para depurarla?



Salu2


José Mª Fueyo

[MS MVP Access]
Respuesta Responder a este mensaje
#9 José Mª Fueyo
23/01/2013 - 11:37 | Informe spam
Hola
Declaras la variable de tipo recordset, pero no la instancias. Todo tipo de objeto hay que instanciarlo antes de usarlo

Dim rs As Recordset
Dim sCadena As String

set rs=CurrentDb.OpenRecordset ("SELECT Motius.NomMotiu FROM Motius " & _
"INNER JOIN TPMotius ON Motius.IdMotiu = TPMotius.IdMotius " & _
"WHERE (TPMotius.IdPeticio) = " & Condicio)

Salu2
José Mª Fueyo
[MS MVP Access}
Respuesta Responder a este mensaje
#10 Toni
23/01/2013 - 11:43 | Informe spam
Cierto, me falto definir la database... gracias de nuevo!


El dimecres 23 de gener de 2013 11:37:57 UTC+1, José Mª Fueyo va escriure:
Hola

Declaras la variable de tipo recordset, pero no la instancias. Todo tipo de objeto hay que instanciarlo antes de usarlo



Dim rs As Recordset

Dim sCadena As String



set rs=CurrentDb.OpenRecordset ("SELECT Motius.NomMotiu FROM Motius " & _

"INNER JOIN TPMotius ON Motius.IdMotiu = TPMotius.IdMotius " & _

"WHERE (TPMotius.IdPeticio) = " & Condicio)



Salu2


José Mª Fueyo

[MS MVP Access}
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida