Cómo mostrar por defecto el valor del último campo ingresado
nounours4
Mensajes publicados
47
Estado
Miembro
-
nounours4 Mensajes publicados 47 Estado Miembro -
nounours4 Mensajes publicados 47 Estado Miembro -
Hola,
¿Cómo puedo hacer que el valor predeterminado de un nuevo campo sea equivalente al de ese mismo campo en la última entrada realizada?
Estoy en proceso de codificar una colección y, por comodidad, me gustaría que los valores predeterminados mostrados de un nuevo registro sean equivalentes a los del registro anterior. (Solo para ciertos campos). Así solo tendría que cambiar el campo que me interesa antes de guardar.
De antemano, le agradezco la atención prestada a mi asunto.
Nounours
¿Cómo puedo hacer que el valor predeterminado de un nuevo campo sea equivalente al de ese mismo campo en la última entrada realizada?
Estoy en proceso de codificar una colección y, por comodidad, me gustaría que los valores predeterminados mostrados de un nuevo registro sean equivalentes a los del registro anterior. (Solo para ciertos campos). Así solo tendría que cambiar el campo que me interesa antes de guardar.
De antemano, le agradezco la atención prestada a mi asunto.
Nounours
17 respuestas
-
Hola Nounours4, Hola leMéruvien,
Al retomar una base personal que quería mejorar, encontré este fragmento de código VBA que es exactamente lo que buscas hacer: establecer como valor predeterminado la última valor ingresado.
Function DerniereValeur()
On Error GoTo Sortie
SACV = Screen.ActiveControl.Value
Screen.ActiveControl.DefaultValue = SACV
Sortie:
End Function
Puedes pegarlo tal cual sin ninguna modificación en cualquier módulo VBA, luego Copiar/Pegar el título "Function DerniereValeur()" precedido por el signo "=" en la propiedad "Después de Actualizar" de tu control. Esto no cambia nada en la fórmula dada por LeMéruvien que también debe ser ingresada.
El código dado aquí tiene la ventaja de ser universal, es decir, es válido para todos los controles; de hecho, toma como valor predeterminado la última valor ingresado, la que acabamos de escribir.
Buena suerte y ánimo. -
Hola,
Introduce la fórmula para el valor por defecto del control: DLast("ElCampo";" LaTabla")
pero ten cuidado porque el valor retenido será el que sea válido en el momento de la apertura del formulario.
Para tener siempre el último valor ingresado, hay que agregar una línea de código VBA:
Function EncontrarValorPorDefecto()
...ElControl.DefaultValue = DLast("ElCampo", "LaTabla")
End Function
La función debe colocarse en la propiedad "al actualizar"
Atención: La sintaxis en francés, para la entrada directa en la propiedad "Valor por defecto", y la sintaxis en inglés, para el VBA, son diferentes; con " , " en inglés, y con " ; " en francés.
Buena continuación -
Gracias por el interés mostrado en mi problema.
Acabo de insertar en el valor por defecto del campo "dén_pays" en la tabla "Pièces" tus dos fórmulas completas (una después de la otra), cambiando el campo y la tabla por los nombres, y luego sin cambiar nada, siempre recibo un mensaje que dice que la función DLast es desconocida o incorrecta. Mi Access 2007 está en francés. ¿Tal vez no he puesto la fórmula en el lugar correcto?
De antemano, gracias. -
Re-Hola,
Dije el control y no el campo, es decir, que la fórmula debe ser ingresada en el formulario y en el control correspondiente al campo.
Acabo de verificar, y efectivamente Access no reconoce la fórmula directamente en las tablas, pero sí la reconoce perfectamente en los formularios.
Buena continuación. -
Buenas noches
He creado un formulario. Al seleccionar el campo, tengo en la hoja de propiedades la fuente del control. Si ingreso una de tus dos fórmulas, ya no se muestra nada en el campo. No veo ningún otro control, excepto un control ActiveX que me propone poner un video en mi formulario...
Ya intenté esta tarde crear un formulario para encontrar otras posibilidades. No encuentro cómo poner tu fórmula. Incluso he probado otra de un tema similar:
https://forums.commentcamarche.net/forum/affich-29143752-mettre-une-valeur-par-defaut-a-partir-du-dernier-enregistrement
pero no logro obtener algo que funcione.
Mientras espero noticias tuyas, sigo probando todo lo que puedo encontrar...
oso de peluche -
No entiendo ni lo que haces ni lo que está mal.
Para el control, se necesita un control "Zona de Texto", si es necesario ayudándose con el asistente "Agregar campos existentes" de la pestaña "Creación". En ningún caso un control "ActiveX" que son controles particulares que llaman a software diferente de Access, por ejemplo, video o música u otro.
La fuente del control debe ser el campo de la tabla subyacente, y la fórmula que he dado se coloca en la propiedad "Valor por defecto" de este control. Si es necesario, anteponiendo el signo "=" -
Hola, aquí tienes un modelo de lo que quieres:
https://www.cjoint.com/?3Kmpm6bMWyw
Mira bien la propiedad "valor por defecto" del campo [compteur_ancien], y pon lo mismo en tu formulario, en la propiedad por defecto de tu campo.
Roger -
Hola, sí, está en la pestaña de datos, pero para no buscar por todas partes, yo sistemáticamente siempre utilizo la pestaña "todas".
Por último, en Access 2003, no sé si es lo mismo en Access 2007.
Roger -
Hola a los dos.
Con sus explicaciones y el ejemplo, acabo de intentar. Como he manipulado mi formulario de todas las maneras, estoy creando uno nuevo bajo el modelo de tabla que me conviene para ingresar los datos secuencialmente y para, a veces, copiar y pegar las partes del año anterior que son idénticas, solo tengo que cambiar las ubicaciones. El primer campo es la referencia automática, el segundo es una lista desplegable que hace referencia a una tabla, donde intento tener por defecto la misma codificación que el anterior. Esto no funciona, pero obtengo, en lugar de una casilla vacía, el primer registro de mi lista de países. Después de innumerables intentos, me digo que no importa, intentaré también en mi tercer campo, que es el campo año, que también hace referencia a una tabla y también es una lista desplegable y que también estaba vacío en los nuevos registros. Ahí, extrañamente, funciona para el segundo campo y el tercer campo, mientras que el segundo seguía sordo a mis diferentes solicitudes. PERO... mi formulario estando en el modelo de tabla, el registro siguiente aparece tan pronto como salgo del campo de referencia automática... así que el campo por defecto se actualiza correctamente pero cada vez con un registro de retraso... Sin embargo, si ingreso por ejemplo Finlandia, que tengo Mónaco que aparece en el futuro registro a codificar cuando salgo del formulario después de la línea de Finlandia y vuelvo a entrar, tengo entonces Finlandia en lugar de Mónaco en el nuevo registro en espera.
¿Alguna idea?
Sé que soy un rompecabezas, y mi Access 2007 debe ser tan especial como yo...
A++
Nounours -
Hola,
... Me cuesta mucho entender tus explicaciones. Lo más simple sería que envíes la base a través de cjoint.com para que lo revisemos más de cerca.
(Abres y sigues las indicaciones; al seleccionar un archivo, pones tu base. Es muy sencillo. No olvides anonimizar los nombres de las personas si los hay)
Que tengas un buen día. -
Hola,
Aquí está el enlace
https://www.cjoint.com/?0KrkOtTzYzk
El formulario es el formulario 99 en Documentos.
Puedes ver que si introduces un documento, el futuro registro aparece tan pronto como sales del campo num auto. Por lo tanto, el siguiente registro ya tiene los campos llenos con tu registro anterior y no con el que estás llenando, a menos que cierres tu base de datos y la vuelvas a abrir, entonces tu nuevo registro se actualiza correctamente. Los campos que me hubiera gustado ver actualizados son el 2 y el 3, es decir, dén_pays y año.
Si encuentras algo, me gustaría que me dijeras lo que hiciste, no solo hacerlo y devolverme la base de datos. (Porque sigo introduciendo documentos, y también con el objetivo de aprender.) Tal vez entonces deje de hacer preguntas en dos o tres años... ;-)
Muchas gracias de antemano por tu interés
Nounours-
https://www.cjoint.com/?0KrmY0zZ5QB
El primer archivo no funcionaba, no sé por qué, probablemente un error de registro. Este funciona como expliqué más arriba.
Osito
-
-
Hola,
He instalado los fragmentos de código VBA de los que hablamos antes.
Te reenvío la base. No hay mucho que explicar, solo hay que mirar. Abres el formulario en modo Construcción y abres la pestaña "Eventos". Para abrir el código correspondiente, debes hacer clic en el pequeño botón al final de la línea.
Debo irme. Te leeré esta noche.
http://cjoint.com/?3KrmtyIPHXz
Que tengas un buen día. -
Re Bonjour,
Mi ordenador debe estar poseído, funciona para el año pero no para el país en tu ejemplar. He intentado copiarlo en mi ejemplar, pero tampoco...
Como funciona para el año, he intentado hacer lo mismo con la nota. Obtengo el mismo resultado que para el país, es decir: "#Nombre?"
prueba: abres tu ejemplar corregido, codificas una línea. El país es correcto, por lo tanto, funciona al abrirlo, en la segunda línea obtienes esto para el país: #Nombre? pero el año muestra el año correcto. Haciendo lo mismo para la nota también obtengo "#Nombre?"
He intentado mover el código antes de la actualización, en codificación, al abrir... nada funciona... -
Buenas noches,
Lo siento, he visto bien el problema; pero incluso después de más de 2 horas girando todo en todas direcciones no encuentro lo que falla. Lo mejor sería que te contentaras con la primera solución, aunque solo tengas como valor predeterminado la penúltima entrada.
Que tengas un buen día. -
Buenas noches,
no conozco aún los códigos, pero ¿no hay en tu código una instrucción que solo acepte números y que podríamos reemplazar o una instrucción que excluya el texto?
buenas noches y gracias de nuevo.
oso de peluche -
Hola,
¡No! No puede haber problema con el código que he utilizado, 1°) porque la orden es: "Tomar el valor que se acaba de ingresar en el control y convertirlo en el valor predeterminado de ese control", y 2°) porque lo uso para varios controles de un formulario de una base personal y no tengo ningún problema.
Creo que la dificultad está en otro lugar, tal vez una cuestión de formato de datos, pero no lo he encontrado. -
Hola,
el futuro probablemente nos proporcionará la respuesta en un momento totalmente inesperado...
o bien
akounamatata...
hasta luego y gracias por todos los esfuerzos ya realizados.
Nounours