Valor numérico predeterminado |
Responder
|
| Autor | |
Antonalo
Asiduo
Unido: 06/Noviembre/2009 Localización: España Estado: Sin conexión Puntos: 478 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Tema: Valor numérico predeterminadoEnviado: 24/Julio/2023 a las 11:53 |
|
Tengo una base para controlar todas las canciones que tengo en mis cds etc... tengo una tabla, Albumes con campos IdAlbum, Album.... y otra tabla Grabaciones:Orden, IdTema, IdAlbum, IdInterprete.... Tengo un formulario principal basado en la tabla albumes y un formulario secundario basado en Grabaciones y esté enlazado al principal mediante IdAlbum=IdAlbum Lo que quiero: Que en el subformulario Grabaciones, el campo orden tenga el valor predeterminado de Nº de registros +1 (para ese idalbum). Lo he intentado en el panel de propiedades del campo(valor predeterminado) pero no lo sé hacer. Y mediante VBA: Private Sub Orden_DblClick(Cancel As Integer) If Me.NewRecord Then Me.Orden = DMax("Orden", "Grabaciones", "IdAlbum =" & Me.Parent.IdAlbum) + 1 End If End Sub Y así me funciona, pero en un primer código, intenté: en vez de Me.Parent.IdAlbum, puse me.IdAlbum y no funcionaba porque al ser un nuevo registro, IdAlbum o es nulo y en el origen de registros está Grabaciones*, pero no hay ningún control que se llame IdAlbum, no lo necesito porque el campo con el enlace ya se rellena él solo. El caso es que lo actual funciona porque existe el formulario padre pero ¿y si no existiera? El evento lo he probado con el doble clic pero mi idea seria ponerlo al activar, O en propiedades, sin VBA |
|
![]() |
|
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: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Julio/2023 a las 10:14 |
|
Puedes controlar si está cargado 'el principal' con el nombre del formulario activo:
Screen.ActiveForm.Name
|
|
![]() |
|
Kublai
Habitual
Unido: 11/Julio/2020 Localización: Murcia Estado: Sin conexión Puntos: 162 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Julio/2023 a las 10:16 |
|
Muchas gracias. Solucionado. Por favor, se puede cerrar el hilo
|
|
![]() |
|
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: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Julio/2023 a las 10:28 |
|
Kublai,
¿tú eres Antonalo?
|
|
![]() |
|
Kublai
Habitual
Unido: 11/Julio/2020 Localización: Murcia Estado: Sin conexión Puntos: 162 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Julio/2023 a las 10:30 |
|
No.
Me llamo Juan
|
|
![]() |
|
Kublai
Habitual
Unido: 11/Julio/2020 Localización: Murcia Estado: Sin conexión Puntos: 162 |
Opciones de entrada
Gracias(2)
Cita Respuesta
Enviado: 25/Julio/2023 a las 10:32 |
|
Perdón, me he metido sin querer en el hilo de otro. Lo siento mucho!!!
|
|
![]() |
|
Antonalo
Asiduo
Unido: 06/Noviembre/2009 Localización: España Estado: Sin conexión Puntos: 478 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Julio/2023 a las 10:43 |
|
Hola Mihura. Ese no es el problema, el formulario principal está cargado porque estoy delante de él, metiendo datos en el subformulario Grabaciones.
Creo que me he dado cuenta de mi error. En un nuevo registro de un subformulario, no puede existir el valor del campo común hasta que no se introduce algún dato, y es entonces cuando el campo del subformulario toma el valor de form. principal. Y por tanto: Me.Orden = DMax("Orden", "Grabaciones", "IdAlbum =" & Me.IdAlbum) + 1 no puede funcionar, no existe Me.IdAlbum, pero sí Me.Parent.IdAlbum Lo que voy a hacer es que este código se ejecute después de actualizar el siguiente cuadro de texto, por ejemplo el tema, (el título de la canción) y ya le ponga el orden, claro que tendré que ir introduciendo las canciones en su orden dentro del CD. No obstante, me queda la duda de si no habría alguna fórmula para introducir dentro del panel de propiedades del cuadro de texto "Orden" en la pestaña Datos , en el apartado "valor predeterminado", y no recurrir a VBA. ¿Sería esto posible? muchas gracias Mihura |
|
![]() |
|
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: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Julio/2023 a las 10:58 |
|
¿ has probado en el evento justo antes de guardar si ya hay valores 'reales' ?
|
|
![]() |
|
Antonalo
Asiduo
Unido: 06/Noviembre/2009 Localización: España Estado: Sin conexión Puntos: 478 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Julio/2023 a las 11:44 |
|
Si hubiera valores reales en un nuevo registro, no sería un nuevo registro, digo yo. La cuestión es que yo le estaba pidiendo a un nuevo registro de un subformulario, antes de introducir nada, que introduzca el valor del campo común, y , según he comprobado, el campo común del subformulario solo toma el valor del formulario principal después de introducir algún dato en el nuevo registro del subformulario. Es decir, que estaba pidiendo algo imposible, preguntando un valor que todavía no existe. Así que ahora lo que hago es introducir en primer lugar el título de la canción y después de actualizar: Private Sub IdTema_AfterUpdate() If Me.NewRecord Then Me.Orden = DMax("Orden", "Grabaciones", "IdAlbum =" & Me.IdAlbum) + 1 End If End Sub y aquí no necesito Me.Parent.IdAlbum, porque después de actualizar, ya existe IdAbum Ahora me surge la duda de si no habría alguna manera de extender este código a cualquier campo del nuevo registro, es decir, que tanto si meto primero el título, como el interprete o los demás campos, el campo Orden se rellene solo? ¿Quizás en los eventos afterInsert, o BeforeInsert? Lo que más me gustaría sería, como antes he comentado, en las propiedades del cuadro de texto, en valor predeterminado |
|
![]() |
|
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: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Julio/2023 a las 11:48 |
|
Créate una función y asígnala a los campos que quieras (podría ser en después de cambiar).
|
|
![]() |
|
Antonalo
Asiduo
Unido: 06/Noviembre/2009 Localización: España Estado: Sin conexión Puntos: 478 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Julio/2023 a las 12:14 |
|
He puesto este código, es más corto que hacer una función y asignarla a todos los controles: Private Sub Form_AfterInsert() Me.Orden = DMax("Orden", "Grabaciones", "IdAlbum =" & Me.IdAlbum) + 1 End Sub Esto funciona sea cual sea el campo por donde empiece, y me puedo olvidar de poner el numerito en Orden. Muchas gracias Mihura,. podéis cerrar el hilo |
|
![]() |
|
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 |