Imprimir Informe en Documentos Separados |
Responder | Página <12 |
Autor | ||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14738 |
Enviado: 21/Enero/2020 a las 18:55 | |
Sorry!
Confundí dbOpenForwardOnly (que es un tipo de apertura) con dbForwardOnly (que es una opción) |
||
conrrad69
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Habitual Unido: 22/Marzo/2008 Localización: España Estado: Sin conexión Puntos: 194 |
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.
|
||
Boogaloozgz
Habitual Unido: 03/Abril/2014 Localización: Zaragoza Estado: Sin conexión Puntos: 50 |
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
|
||
Boogaloozgz
Habitual Unido: 03/Abril/2014 Localización: Zaragoza Estado: Sin conexión Puntos: 50 |
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.
|
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14025 |
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 ...
|
||
Boogaloozgz
Habitual Unido: 03/Abril/2014 Localización: Zaragoza Estado: Sin conexión Puntos: 50 |
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)
|
||
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
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
|
||
conrrad69
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Habitual Unido: 22/Marzo/2008 Localización: España Estado: Sin conexión Puntos: 194 |
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.
|
||
Boogaloozgz
Habitual Unido: 03/Abril/2014 Localización: Zaragoza Estado: Sin conexión Puntos: 50 |
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
|
||
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
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
|
||
Maverick2019
Habitual Unido: 10/Junio/2019 Localización: Madrid Estado: Sin conexión Puntos: 145 |
Enviado: 24/Enero/2020 a las 14:49 | |
Hola
Según la documentación que encontrás aquí https://docs.microsoft.com/es-es/office/client-developer/access/desktop-database-reference/database-openrecordset-method-dao) debería ser Set rsREGISTROS = dbTemporal.OpenRecordset("Fabricacion", dbOpenForwardOnly) Prueba a ver ahora...
|
||
Responder | Página <12 |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |