![]() |
Temas activados Lista de Usuarios Calendario Búsqueda |
| |
** NORMAS DEL FORO **
| Access y VBA | |
| |
|
| Página de 2 Siguiente >> |
| Autor | Mensaje |
|
Antonalo
Asiduo
Agregado: 06/Noviembre/2009 Lugar: España Estado: Desconectado Mensajes: 311 |
![]() 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 |
|
IP conectada |
|
|
Mihura
Administrador
Agregado: 06/Mayo/2005 Lugar: En la dehesa Estado: Desconectado Mensajes: 9724 |
![]() Enviado: 25/Julio/2023 a las 10:14 |
|
Puedes controlar si está cargado 'el principal' con el nombre del formulario activo:
Screen.ActiveForm.Name
|
|
IP conectada |
|
|
Kublai
Habitual
Agregado: 11/Julio/2020 Lugar: Murcia Estado: Desconectado Mensajes: 85 |
![]() Enviado: 25/Julio/2023 a las 10:16 |
|
Muchas gracias. Solucionado. Por favor, se puede cerrar el hilo
|
|
IP conectada |
|
|
Mihura
Administrador
Agregado: 06/Mayo/2005 Lugar: En la dehesa Estado: Desconectado Mensajes: 9724 |
![]() Enviado: 25/Julio/2023 a las 10:28 |
|
Kublai,
¿tú eres Antonalo?
|
|
IP conectada |
|
|
Kublai
Habitual
Agregado: 11/Julio/2020 Lugar: Murcia Estado: Desconectado Mensajes: 85 |
![]() Enviado: 25/Julio/2023 a las 10:30 |
|
No.
Me llamo Juan
|
|
IP conectada |
|
|
Kublai
Habitual
Agregado: 11/Julio/2020 Lugar: Murcia Estado: Desconectado Mensajes: 85 |
![]() Enviado: 25/Julio/2023 a las 10:32 |
|
Perdón, me he metido sin querer en el hilo de otro. Lo siento mucho!!!
|
|
IP conectada |
|
|
Antonalo
Asiduo
Agregado: 06/Noviembre/2009 Lugar: España Estado: Desconectado Mensajes: 311 |
![]() 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 |
|
IP conectada |
|
|
Mihura
Administrador
Agregado: 06/Mayo/2005 Lugar: En la dehesa Estado: Desconectado Mensajes: 9724 |
![]() Enviado: 25/Julio/2023 a las 10:58 |
|
¿ has probado en el evento justo antes de guardar si ya hay valores 'reales' ?
|
|
IP conectada |
|
|
Antonalo
Asiduo
Agregado: 06/Noviembre/2009 Lugar: España Estado: Desconectado Mensajes: 311 |
![]() 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 |
|
IP conectada |
|
|
Mihura
Administrador
Agregado: 06/Mayo/2005 Lugar: En la dehesa Estado: Desconectado Mensajes: 9724 |
![]() 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).
|
|
IP conectada |
|
| Página de 2 Siguiente >> | |
|
||
Seleccione Foro |
Tú no puedes enviar nuevos Temas al Foro Tú no puedes responder a los Temas de este Foro Tú no puedes borrar los mensajes en este Foro Tú no puedes editar los mensajes de este Foro Tú no puedes crear encuesta en este Foro Tú no puedes votar en encuesta en este Foro |
|