Duplicar el valor de algunos campos en un nuevo registro

Tengo un formulario en el que necesito tener la posibilidad de crear un nuevo registro con los valores de algunos de los campos ya cumplimentados en el registro anterior, para evitar tener que repetir la introducción de esos datos nuevamente. Por ejemplo: Si tengo los campos "Nombre", "FechaDeNacimiento", "Direccion", "Visita". Necesitaría que los valores de los tres primeros se copiasen en el nuevo registro, quedando en blanco el campo "Visita".

1 Respuesta

Respuesta
2

Puedes hacerlo de varias formas, pero si no quieres usar código basta con que poniéndote en el cuadro de texto en blanco, y manteniendo pulsada la tecla Ctrl pulses la tecla del apóstrofe(la del signo de interrogación) y te repite el último valor.

Si quieres hacerlo con código, dímelo y te lo pongo.

Gracias por contestar tan rápidamente a mi pregunta.

Te agradecería el código para poder ponerlo en la propiedad del botón. Supongo que con ese código podré elegir que campos del nuevo registro van a ser copiados, así no necesitaría pulsar sobre cada cuadro de texto para repetir el valor.

Un saludo

Partiendo de la premisa de que el código no puede saber que campos quieres repetir, supongamos que tienes una tabla Cliente(original el nombre, eh) con los campos Idloquesea, cliente, fecha, etc..

En el evento al hacer clic del botón puedes poner

Cliente = DLast("cliente", "cliente")
Fecha = DLast("fecha", "cliente")

Etc

Suponiendo que los cuadros de texto se llamen también cliente, fecha, sino sustituir por sus nombre.

Así cuando pulses el botón, te rellenara los cuadros de texto con el último valor que hayas escrito en el registro anterior.

De nuevo gracias por responder tan rápidamente. He intentado lo que me has aconsejado, he creado un botón y he puesto el código sustituyendo el nombre de los campos y la tabla. No ha habido resultado.

Quizás la cosa no sea tan sencilla, ya que tengo dos cuadros combinados en cascada que se llaman: "ccNivel", que me filtra "ccBloqueTematico" (es decir me muestra los bloques temáticos correspondientes a un nivel en concreto). El resto de campos son de texto, a saber:

cUnidadDidactica

cContenidos

cCriteriosCalificación1 (hasta el 6)

cUbicacion

El único campo que quiero aparezca en blanco se llama cSesion. Además hay un campo autonumérico "Id".

Se trata de un formulario continuo que tiene la propiedad "Al abrir" ir a nuevo registro. Mi idea era la de crear un botón que permitiera retomar automáticamente los valores de los campos antes mencionados y dejase en blanco el campo cSesion. ¿Por qué?, para que sea posible abrir el formulario y elegir un nuevo nivel, a partir del cual se desarrolla todo lo demás, o bien, caso de no haber terminado de introducir todas las sesiones correspondientes al nivel, bloque y unidad didáctica (con sus correspondientes contenidos, criterios de calificación y ubicación) seleccionadas la última vez que se trabajo en la bd, no verse obligado a tener que copiar y pegar el contenido de esos campos cada vez que se introduzca un nuevo nombre de sesión (realmente un nuevo registro).

Insisto en agradecer tu interés y espero haber sido claro respecto al problema, ya que antes lo hice de forma muy general y probablemente poco clara. por cierto el nombre de la tabla de la que se obtienen los datos es "ProgramacionDeAula"

Sea combinado sea cuadro de texto da exactamente igual. Supongamos que el primer combinado se llama Elegir alumno, entonces en el código debes poner

Elegiralumno.rowsource=dlast(.....

De todas formas, si quieres, repito si quieres mándame una copia vacía de la tabla y el formulario a [email protected] y lo miro y te puedo aconsejar mejor.

He encontrado este ejemplo, lo que ocurre es que en él se hacía referencia a una casilla de verificación que no necesito. El código adaptado a mi aplicación sin considerar la casilla de verificación sería, creo yo:

Private Sub Comando60_Click()

    DoCmd.RunCommand acCmdSelectRecord

    DoCmd.RunCommand acCmdCopy

    DoCmd.RunCommand acCmdPasteAppend

    Me.Sesiones.SetFocus

    SetCarryOn Me, "Sesiones"

Else

    DoCmd.RunCommand acCmdRecordsGoToNew

End If

Donde "Comando60" es el nombre del botón y "Sesiones" el nombre del campo de texto que quiero dejar en blanco. 

Como el formulario tiene la propiedad "al abrir" ir a nuevo, cuando pulso el botón me dice que la acción copiar no esta disponible ahora.

Si me retraso al último registro, me dice: "El objeto no contiene el objeto de automatización clearConntent".

¿Qué te parece?

He hecho lo que me indicabas:

Private Sub Comando60_Click()
ccNivel.RowSource = DLast("ccNivel", "Sesiones")
ccBloqueTematico.RowSource = DLast("ccBloqueTematico", "Sesiones")
Texto23 = DLast("Texto23", "Sesiones")
Contenidos = DLast("Contenidos", "Sesiones")
CriteriosCalificacion1 = DLast("CriteriosCalificacion1", "Sesiones")
CriteriosCalificacion2 = DLast("CriteriosCalificacion2", "Sesiones")
CriteriosCalificacion3 = DLast("CriteriosCalificacion3", "Sesiones")
CriteriosCalificacion4 = DLast("CriteriosCalificacion4", "Sesiones")
CriteriosCalificacion5 = DLast("CriteriosCalificacion5", "Sesiones")
CriteriosCalificacion6 = DLast("CriteriosCalificacion6", "Sesiones")
Ubicacion = DLast("Ubicacion", "Sesiones")
End Sub

Pero no se ejecuta nada

Ya te dije que sin saber como está construido todo es muy difícil dar opiniones, pero si crees que la función que has encontrado te sirve, usala

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas