Listado de los registros de un subformulario |
Responder
|
| Autor | |
Martí Parellada
Nuevo
Unido: 15/Octubre/2025 Localización: St. Esteve Ses. Estado: Sin conexión Puntos: 9 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Tema: Listado de los registros de un subformularioEnviado: 15/Octubre/2025 a las 02:59 |
|
Intento hacer un listado de todos los registros de un subformulario, y el listado lo hace solamente con el contenido del registro que tengo seleccionado (o el primero de ellos si no selecciono nada en el subformulario), el numero de veces contenidos en el subformulario. Detallo (de forma abreviada) el procedimiento que utilizo (módulo de Access): Function CrearFactura(Cantidad As Single, Ref, Concepto As String, Precio As Single) As String Dim rs As DAO.Recordset Set rs = Forms![FACTURACION]![DETALLE_FACTURA].Form.RecordsetClone Dim Registros As Single Dim i As Single Open CurrentProject.Path & "\FACTURA.txt" For Output As #1 Registros = CStr(rs.RecordCount) For i = 1 To Registros Print #1, ; Cantidad & " - " & Ref & " - " & Concepto & " - " & Precio Next i rs.Close Set rs = Nothing Close #1 End Function El resultado para una factura con 3 registros de detalle sale de esta forma: 20 - 0810 - Carteles a color tamaño A3 - 0,8 20 - 0810 - Carteles a color tamaño A3 - 0,8 20 - 0810 - Carteles a color tamaño A3 - 0,8 Solamente ha hecho el listado del primer concepto de la factura, repetido 3 veces (número de detalles de la factura). No logro que para cada iteración del For-Next ponga el "foco" en cada registro del subformulario.
|
|
![]() |
|
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: 14926 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 15/Octubre/2025 a las 07:53 |
|
Hola Martí y bienvenido al foro, Varias cosas - No entiendo los argumentos de la función cuando se supone que vas a guardar los de los registros del subformulario - Para hacer un RecordCount es conveniente posicionarse en el último registro (luego habrá que volver al primero) - Un bucle For..Next no seria lo mas adecuado. Utiliza un bucle Do...Loop Algo así:
Escrito al vuelo. Se asume que Cantidad, Ref, Concepto y Precio son campos del recordset Un saludo Editado para añadir un MoveFirst (sugerencia de Mihura)
Editado por xavi - 15/Octubre/2025 a las 10:54 |
|
![]() |
|
Martí Parellada
Nuevo
Unido: 15/Octubre/2025 Localización: St. Esteve Ses. Estado: Sin conexión Puntos: 9 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 16/Octubre/2025 a las 16:00 |
|
Ya lo había probado de esta forma, y no funciona.
Si DETALLE_FACTURA tiene, por ejemplo 3 registros, me lista el contenido del primer registro 3 veces. No logro que ponga el foco en cada uno de los registros. Si en DETALLE_FACTURA selecciono el segundo registro, me lista el contenido de este segundo registro 3 veces.
|
|
![]() |
|
Martí Parellada
Nuevo
Unido: 15/Octubre/2025 Localización: St. Esteve Ses. Estado: Sin conexión Puntos: 9 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 16/Octubre/2025 a las 16:04 |
|
Por cierto, utilizo el Access de Microsoft Office Professional 2010
No sé si al ser una versión tan antigua puede ser el problema.
|
|
![]() |
|
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: 14926 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 16/Octubre/2025 a las 16:16 |
|
Discrepo. ¿Lo has probado? Porque es un código bastante estandar de recorrer los registros de un subformulario que funciona perfectemente.
Traduzco las líneas del código.
Y la versión de Office no tiene nada que ver. Esto funciona desde hace un montón de años. Un saludo
|
|
![]() |
|
Martí Parellada
Nuevo
Unido: 15/Octubre/2025 Localización: St. Esteve Ses. Estado: Sin conexión Puntos: 9 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 16/Octubre/2025 a las 17:22 |
|
Pues NO funciona. Sigo investigando y te digo cuando lo consiga.
Pensé que a lo mejor el problema venia por la forma que yo relaciono formulario/subformulario, e intenté hacerlo abriendo únicamente el subformulario. Pero el problema era el mismo: no hay forma que enfoque cada linea de registro. Puede pasar por todos los registros, pero sin que reciban el enfoque para poder sacar los datos. |
|
![]() |
|
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: 14926 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 16/Octubre/2025 a las 17:33 |
|
Me parece que hay algo que no ha quedado claro.
Los registros del subformulario *jamás* se van a enfocar. Se va a abrir un recordset basado en el origen del registro del subformulario y se va a recorrer. En cada MoveNext deben cambiar los datos (que son los que utiliza el Print) ¿Has probado a ejecutar paso a paso para ver los valores que va tomando?
|
|
![]() |
|
Martí Parellada
Nuevo
Unido: 15/Octubre/2025 Localización: St. Esteve Ses. Estado: Sin conexión Puntos: 9 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 18/Octubre/2025 a las 00:01 |
|
Ya he solucionado el problema recurriendo a ejecutar una macro de Access que va leyendo registro a registro los datos del subformulario.
Moltes gràcies per l'ajuda. Visca els Minyons de Terrassa.
Editado por Martí Parellada - 18/Octubre/2025 a las 02:47 |
|
![]() |
|
Responder
|
|
|
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 |