** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Informe a partir de selección en cuadro de lista
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoInforme a partir de selección en cuadro de lista

 Responder Responder
Autor
Mensaje
Adrianet Ver desplegable
Habitual
Habitual
Avatar

Unido: 26/Marzo/2015
Localización: Valencia
Estado: Sin conexión
Puntos: 135
Enlace directo a este mensaje Tema: Informe a partir de selección en cuadro de lista
    Enviado: 22/Julio/2022 a las 12:31
Hola amigos del foro.
estoy teniendo problemas con el siguiente asunto:

Imprimir un informe con los registros seleccionados en un cuadro de lista.

En un formulario, tenemos un cuadro de lista con tres columnas: codtrab, apellidos, nombre

También tenemos un botón para ejecutar el procedimiento de previsualización de informes.

El objetivo es conseguir que se visualicen tantos informes en pantalla como registros haya seleccionado en el cuadro de lista, … pero no lo consigo

 

El código que utilizo es el siguiente:

Private Sub cmdImprimirHorSel_Click()

Dim vCodigos As String, vItem As Variant

For Each vItem In Me.ListaTrab.ItemsSelected

   vCodigos = vCodigos & Me.ListaTrab.ItemData(vItem) & ","

Next

If Len(vCodigos) > 0 Then

  vCodigos = Left(vCodigos, Len(vCodigos) - 1)

  MsgBox vCodigos

  DoCmd.OpenReport "Horas_Trabajadores_Imprimir", acViewPreview, , "CodTrab IN('" & vCodigos & "')"

Else

  MsgBox "No se ha seleccionado ningún trabajador, ...", vbExclamation

  Exit Sub

End If

End Sub


NOTAS : Si se selecciona más de un registro ya no funciona, en cambio si se selecciona uno sólo sí que visualiza el informe de ese trabajador.

‘ ** no sé dónde está el error, …  le estoy dando muchas vueltas al asunto y nada, …

Agradecería una ayuda para ver donde me estoy equivocando, … o donde me falta indicar algo más al código.

Gracias Amigos.

Adrián.



Arriba
fcoval Ver desplegable
Asiduo
Asiduo


Unido: 19/Enero/2013
Estado: Sin conexión
Puntos: 225
Enlace directo a este mensaje Enviado: 22/Julio/2022 a las 13:05
cambia la linea

 vCodigos = vCodigos & Me.ListaTrab.ItemData(vItem) & ","

por

vCodigos = vCodigos & Chr(34) & Me.ListaTrab.ItemData(vItem) & Chr(34) & ","

y me cuentas Wink
Arriba
fcoval Ver desplegable
Asiduo
Asiduo


Unido: 19/Enero/2013
Estado: Sin conexión
Puntos: 225
Enlace directo a este mensaje Enviado: 22/Julio/2022 a las 13:13
y esta otra tambien, que se parecen pero no son iguales

DoCmd.OpenReport "Horas_Trabajadores_Imprimir", acViewPreview, , "CodTrab IN('" & vCodigos & "')"

por 

DoCmd.OpenReport "Horas_Trabajadores_Imprimir", acViewPreview, , "CodTrab IN(" & vCodigos & ")"
Arriba
Adrianet Ver desplegable
Habitual
Habitual
Avatar

Unido: 26/Marzo/2015
Localización: Valencia
Estado: Sin conexión
Puntos: 135
Enlace directo a este mensaje Enviado: 22/Julio/2022 a las 13:17
Hola Fcoval, ...
he cambiado esa línea, .... pero sigue sin funcionar, no muestra ningún dato de informe

Además en la línea que tengo de control : MsgBox vCodigos
antes mostraba bien las capturas, por ejemplo:  306040, 306050

pero ahora los muestra con comillas, ... y me parece que no debería ser así
ahora muestra esto:   "306040", "306050"   lo cual creo que no está bien, ...

el campo a mostrar es el CodTrab, que es de tipo texto, ... 

gracias, de todas formas, ... por tu ayuda


saludos.
Adrián




Arriba
fcoval Ver desplegable
Asiduo
Asiduo


Unido: 19/Enero/2013
Estado: Sin conexión
Puntos: 225
Enlace directo a este mensaje Enviado: 22/Julio/2022 a las 13:19
¿ Has cambiado las DOS lineas ?
Arriba
Adrianet Ver desplegable
Habitual
Habitual
Avatar

Unido: 26/Marzo/2015
Localización: Valencia
Estado: Sin conexión
Puntos: 135
Enlace directo a este mensaje Enviado: 22/Julio/2022 a las 13:36
Hola Fcoval, .

tienes toda la razón,,, sólo había cambiado la primera línea, ... 
en la segunda he quitado las comillas simples, ... 
y ahora funciona, ... ya me muestra por pantalla los informes, ...
Muchas gracias por tu ayuda.

Un comentario: entiendo que el Chr(34) es para entrecomillar el valor seleccionado 
porque luego en el msgbox me los muestra "306040", "306050" y después sí que los coge bien para 
visualizar los informes de dichos códigos.

'- sólo me queda arreglar el diseño informe, pues me saca una página en blanco adicional, ...  

saludos, y gracias de nuevo.
Adrián.





Arriba
fcoval Ver desplegable
Asiduo
Asiduo


Unido: 19/Enero/2013
Estado: Sin conexión
Puntos: 225
Enlace directo a este mensaje Enviado: 22/Julio/2022 a las 13:45
Si, o bien pones...

   vCodigos = vCodigos & Chr(34) & Me.ListaTrab.ItemData(vItem) & Chr(34) & ","

   o puedes poner

   vCodigos = vCodigos & "'" & Me.ListaTrab.ItemData(vItem) & "'" & ","

la idea era que cada valor quedara entrecomillado al ser un campo texto.

Lo de la pagina adicional en blanco no tiene nada que ver con esto como ya sabras.

saludos.
Arriba
Adrianet Ver desplegable
Habitual
Habitual
Avatar

Unido: 26/Marzo/2015
Localización: Valencia
Estado: Sin conexión
Puntos: 135
Enlace directo a este mensaje Enviado: 22/Julio/2022 a las 13:54
Hola Fcoval, ..
Muchas gracias por tu ayuda.

Creo que pueden cerrar este hilo.
Saludos
Adrián.

Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable