Cómo mostrar por defecto el valor del último campo ingresado

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

17 respuestas

  1. Tessel75
     
    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.
    1
  2. Tessel75
     
    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
    0
  3. nounours4 Mensajes publicados 47 Estado Miembro
     
    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.
    0
  4. Tessel75
     
    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.
    0
  5. nounours4 Mensajes publicados 47 Estado Miembro
     
    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
    0
  6. Tessel75
     
    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 "="
    0
  7. le meruvien Mensajes publicados 1414 Estado Miembro 44
     
    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
    0
    1. Tessel75
       
      ¡Gracias por tu ayuda! Un buen ejemplo. Solo una precisión: la propiedad "Valor por Defecto" se encuentra en la pestaña "Datos".
      0
  8. le meruvien Mensajes publicados 1414 Estado Miembro 44
     
    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
    0
    1. Tessel75
       
      ¡Sí! Mismo orden. Al menos no han cambiado eso (MS).
      0
    2. Tessel75
       
      ¡Hasta luego! Que tengas un buen día.
      0
  9. nounours4 Mensajes publicados 47 Estado Miembro
     
    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
    0
    1. nounours4 Mensajes publicados 47 Estado Miembro
       
      Acabo de ver que tienes el mismo problema en tu ejemplo. Como probablemente nunca codificas dos llenos seguidos sin cerrar tu bd, nunca lo has notado...

      No quemen sus cerebros buscando, todavía los necesitaremos...;-)

      oso de peluche
      0
    2. nounours4 Mensajes publicados 47 Estado Miembro
       
      y gracias por el ejemplo y la paciencia...
      0
  10. Tessel75
     
    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.
    0
  11. nounours4 Mensajes publicados 47 Estado Miembro
     
    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
    0
    1. nounours4 Mensajes publicados 47 Estado Miembro
       
      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
      0
  12. Tessel75
     
    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.
    0
  13. nounours4 Mensajes publicados 47 Estado Miembro
     
    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...
    0
    1. nounours4 Mensajes publicados 47 Estado Miembro
       
      Si esto puede ayudar, acabo de darme cuenta de que en nota, si coloco un número entonces funciona para el campo nota, si coloco un nombre, no funciona???
      0
  14. Tessel75
     
    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.
    0
  15. nounours4 Mensajes publicados 47 Estado Miembro
     
    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
    0
  16. Tessel75
     
    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.
    0
  17. nounours4 Mensajes publicados 47 Estado Miembro
     
    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
    0