** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Imprimir Informe en Documentos Separados
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoImprimir Informe en Documentos Separados

 Responder Responder Página  <12
Autor
Mensaje
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 21/Enero/2020 a las 18:55
Sorry!

Confundí dbOpenForwardOnly (que es un tipo de apertura) con dbForwardOnly (que es una opción)

Xavi, un minyó de Terrassa

Mi web
Arriba
conrrad69 Ver desplegable
Habitual
Habitual


Unido: 22/Marzo/2008
Localización: España
Estado: Sin conexión
Puntos: 194
Enlace directo a este mensaje Enviado: 22/Enero/2020 a las 13:15
Ese error te puede dar porque la consulta tenga parámetros (criterios) que esté leyendo de un formulario. En ese caso no te dejará cargarla en el recordset así como así. Tendrás que escribir la consulta en el mismo VBA y hacer que lea esos parámetros del formulario para poder asignarla al recordset.

Ahora no estoy delante de un equipo desde el que pueda ponerte un ejemplo más claro pero esta tarde puedo verlo con más calma.
Arriba
Boogaloozgz Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 03/Abril/2014
Localización: Zaragoza
Estado: Sin conexión
Puntos: 45
Enlace directo a este mensaje Enviado: 22/Enero/2020 a las 13:48
Hola Conrrad69,

Efectivamente la consulta lee un parámetro del formulario...disculpad todos si es algo que debía haber dicho (es el problema de no controlar esto como vosotros).

Te agradecería que me comentases como introducir entonces la consulta en el código del recordset.

Gracias
Arriba
Boogaloozgz Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 03/Abril/2014
Localización: Zaragoza
Estado: Sin conexión
Puntos: 45
Enlace directo a este mensaje Enviado: 22/Enero/2020 a las 18:56
Hola a todos,
He conseguido lo que pretendía con la ayuda de todos, y de forma poco ortodoxa imagino. Así que os agradezco a todos y cada uno de vosotros vuestra colaboración.

Os cuento lo que he hecho (no os riáis mucho de mi...):
 1- Como el error que comenta Conrrad69 me daba al tener la consulta criterios he creado una tabla mediante una consulta en la que obtengo las Familias.
 2- Recorro con un Recordset esa tabla, y me desplazo por ella con un For i= 1 to rst.Recordcount
 3- Abro el informe filtrado por familia
 4- Finalmente lo exporto a una carpeta determinada con el nombre de la Familia

Con total seguridad es una "ñapa" o chapuza tremenda, pero me funciona. De todos modos me encantaría aprender a hacerlo como se debe con vuestra ayuda, así que... soy todo ojos y oídos.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Enlace directo a este mensaje Enviado: 22/Enero/2020 a las 19:02
¿Leíste mi anterior mensaje? ...   creo que es la primera vez que veo un For i= 1 to rst.Recordcount para recorrer los registros de una tabla ... Ouch

Publicado originalmente por Mihura Mihura escribió:

Otra cosa es que le tire un error en el .Movelast, .MoveFirst con el parámetro dbOpenForwardOnly (que no se porqué está de moda ponerlo).

Copio / Pego una prueba rápida que he hecho:

Private Sub Comando8_Click()
    Set DbExterna = CurrentDb
    Dim Rs As DAO.Recordset
    Set Rs = CurrentDb.OpenRecordset("ConsultaFechas", dbOpenForwardOnly)
    Do Until Rs.EOF
        Debug.Print Rs.Fields(0)
        Rs.MoveNext
    Loop
    Rs.Close
    
End Sub
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Boogaloozgz Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 03/Abril/2014
Localización: Zaragoza
Estado: Sin conexión
Puntos: 45
Enlace directo a este mensaje Enviado: 23/Enero/2020 a las 17:47
Hola Mihura,

Si perdona, leí tu mensaje, y lógicamente hice la prueba.

Set DbExterna = CurrentDb
    Dim Rs As DAO.Recordset
    Set Rs = CurrentDb.OpenRecordset("Familia", dbOpenForwardOnly)
    Do Until Rs.EOF
        ' para la prueba abro aquí un msgbox
        Rs.MoveNext
    Loop
    Rs.Close

Me sigue saltando el error de pocos parametros se esperaba 1  (no se si es por el tema de que la consulta filtra por un parámetro del formulario)
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 1258
Enlace directo a este mensaje Enviado: 23/Enero/2020 a las 17:57
Hola:
No lo he probado, pero si en lugar de un recordest, referencias una querydef y le asignas los parametros no funcionaria??.
Saludos
Arriba
conrrad69 Ver desplegable
Habitual
Habitual


Unido: 22/Marzo/2008
Localización: España
Estado: Sin conexión
Puntos: 194
Enlace directo a este mensaje Enviado: 23/Enero/2020 a las 19:04
Hola, perdona que no te contestara antes. Voy liado con el curro. Como ves el problema viene de los parámetros. 
En mi caso cuando me encuentro estas historias suelo escribir la consulta en el VBA, algo así:

Dim sql as String

sql = "SELECT ..........." 

Lo que hago es poner la consulta que tienes como objeto en vista SQL y copiar el código, luego lo pego en VBA y lo adapto. Los parámetros de la consulta los leo desde de aquí directamente del formulario:

sql= "SELECT............FROM...........WHERE IdCliente=" & Me.IdCliente

Simplificándolo mucho claro.
Y luego en el recordset cargo esta sql

Es mucho más complicado pero te salva ese inconveniente.
Arriba
Boogaloozgz Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 03/Abril/2014
Localización: Zaragoza
Estado: Sin conexión
Puntos: 45
Enlace directo a este mensaje Enviado: 23/Enero/2020 a las 20:45
Hola Main, 

No he hecho nunca lo del Querydef... ¿pero sería algo asi?

Dim dbTemporal As DAO.Database
Set dbTemporal = CurrentDb
Dim Consulta as QueryDef

    Set Consulta = MiBaseDatos.CreateQueryDef ("Familia","SELECT.......;")

Do While Not Consulta.EOF()
DoCmd.OutputTo acReport, "InfoFamilia", "(*.pdf)", "C:\PROYECTO 976\SAHARA\ZARAGOZA\Familias\Info " & familia & " " & idExpediente &  ".pdf", False, ""
   rsREGISTROS.MoveNext
 DoEvents
    Loop
 
     
    rsREGISTROS.Close
    dbTemporal.Close
    Set rsREGISTROS = Nothing
    Set dbTemporal = Nothing
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 1258
Enlace directo a este mensaje Enviado: 24/Enero/2020 a las 14:30
HOLA
Este ejemplo es sobre una consulta ya existente
Dim rv As Recordset,qs As QueryDef
Set qs = CurrentDb().QueryDefs("Prueba")
qs.Parameters("[Forms]![GeneraReci]![RecIni]") = RecIni
qs.Parameters("[Forms]![GeneraReci]![RecFin]") = RecFin
qs.Parameters("[Forms]![GeneraReci]![Prop]") = Me.Prop
Set rv = qs.OpenRecordset()
y ya dispondras de todos los campos de la consulta en rv
saludos
Arriba
Maverick2019 Ver desplegable
Habitual
Habitual


Unido: 10/Junio/2019
Localización: Madrid
Estado: Sin conexión
Puntos: 145
Enlace directo a este mensaje Enviado: 24/Enero/2020 a las 14:49
Hola

Set rsREGISTROS = dbTemporal.OpenRecordset("Fabricacion", dbOpenForwardOnly)

Prueba a ver ahora...
Arriba
 Responder Responder Página  <12
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable